@@ -307,15 +307,33 @@ signal_err_t signal_connect(signal_handle_t handle, const char* server_url, cons
307307
308308 char * url = NULL ;
309309 url_build_options options = {
310- .server_url = server_url ,
311- .token = token
310+ .server_url = server_url
312311 };
313312 if (!url_build (& options , & url )) {
314313 return SIGNAL_ERR_INVALID_URL ;
315314 }
315+ ESP_LOGI (TAG , "Connecting to server: %s" , url );
316316 esp_websocket_client_set_uri (sg -> ws , url );
317317 free (url );
318318
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+
319337 if (esp_websocket_client_start (sg -> ws ) != ESP_OK ) {
320338 ESP_LOGE (TAG , "Failed to start WebSocket" );
321339 return SIGNAL_ERR_WEBSOCKET ;
0 commit comments