@@ -307,15 +307,33 @@ signal_err_t signal_connect(signal_handle_t handle, const char* server_url, cons
307
307
308
308
char * url = NULL ;
309
309
url_build_options options = {
310
- .server_url = server_url ,
311
- .token = token
310
+ .server_url = server_url
312
311
};
313
312
if (!url_build (& options , & url )) {
314
313
return SIGNAL_ERR_INVALID_URL ;
315
314
}
315
+ ESP_LOGI (TAG , "Connecting to server: %s" , url );
316
316
esp_websocket_client_set_uri (sg -> ws , url );
317
317
free (url );
318
318
319
+ if (!sg -> is_terminal_state ) {
320
+ // Initial connection (transport not created yet)
321
+ char * auth_value = NULL ;
322
+ if (asprintf (& auth_value , "Bearer %s" , token ) < 0 ) {
323
+ return SIGNAL_ERR_NO_MEM ;
324
+ }
325
+ esp_websocket_client_append_header (sg -> ws , "Authorization" , auth_value );
326
+ free (auth_value );
327
+ } else {
328
+ // Subsequent connection (transport already created)
329
+ char * header_string = NULL ;
330
+ if (asprintf (& header_string , "Authorization: Bearer %s\r\n" , token ) < 0 ) {
331
+ return SIGNAL_ERR_NO_MEM ;
332
+ }
333
+ esp_websocket_client_set_headers (sg -> ws , header_string );
334
+ free (header_string );
335
+ }
336
+
319
337
if (esp_websocket_client_start (sg -> ws ) != ESP_OK ) {
320
338
ESP_LOGE (TAG , "Failed to start WebSocket" );
321
339
return SIGNAL_ERR_WEBSOCKET ;
0 commit comments