Skip to content

Commit b43a03a

Browse files
committed
fix(websocket): skip esp_transport_{tcp|ssl}_set_xxxxx() calls for external transport
1 parent fb22749 commit b43a03a

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

components/esp_websocket_client/esp_websocket_client.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -501,6 +501,13 @@ static esp_err_t esp_websocket_client_create_transport(esp_websocket_client_hand
501501
tcp = esp_transport_tcp_init();
502502
} else {
503503
tcp = client->config->ext_transport;
504+
505+
esp_transport_handle_t ws = esp_transport_ws_init(tcp);
506+
ESP_WS_CLIENT_MEM_CHECK(TAG, ws, return ESP_ERR_NO_MEM);
507+
esp_transport_set_default_port(ws, WEBSOCKET_TCP_DEFAULT_PORT);
508+
esp_transport_list_add(client->transport_list, ws, WS_OVER_TCP_SCHEME);
509+
ESP_WS_CLIENT_ERR_OK_CHECK(TAG, set_websocket_transport_optional_settings(client, WS_OVER_TCP_SCHEME), return ESP_FAIL;)
510+
return ESP_OK;
504511
}
505512

506513
ESP_WS_CLIENT_MEM_CHECK(TAG, tcp, return ESP_ERR_NO_MEM);
@@ -526,6 +533,13 @@ static esp_err_t esp_websocket_client_create_transport(esp_websocket_client_hand
526533
ssl = esp_transport_ssl_init();
527534
} else {
528535
ssl = client->config->ext_transport;
536+
537+
esp_transport_handle_t wss = esp_transport_ws_init(ssl);
538+
ESP_WS_CLIENT_MEM_CHECK(TAG, wss, return ESP_ERR_NO_MEM);
539+
esp_transport_set_default_port(wss, WEBSOCKET_SSL_DEFAULT_PORT);
540+
esp_transport_list_add(client->transport_list, wss, WS_OVER_TLS_SCHEME);
541+
ESP_WS_CLIENT_ERR_OK_CHECK(TAG, set_websocket_transport_optional_settings(client, WS_OVER_TLS_SCHEME), return ESP_FAIL;)
542+
return ESP_OK;
529543
}
530544

531545
ESP_WS_CLIENT_MEM_CHECK(TAG, ssl, return ESP_ERR_NO_MEM);

components/esp_websocket_client/include/esp_websocket_client.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ typedef struct {
133133
int network_timeout_ms; /*!< Abort network operation if it is not completed after this value, in milliseconds (defaults to 10s) */
134134
size_t ping_interval_sec; /*!< Websocket ping interval, defaults to 10 seconds if not set */
135135
struct ifreq *if_name; /*!< The name of interface for data to go through. Use the default interface without setting */
136-
esp_transport_handle_t ext_transport; /*!< External WebSocket tcp_transport handle to the client; or if null, the client will create its own transport handle. */
136+
esp_transport_handle_t ext_transport; /*!< External WebSocket tcp_transport handle to the client; or if null, the client will create its own transport handle. When external transport is used, socket options like if_name and keep_alive settings will be ignored, as it should be done when setting up the external transport. */
137137
} esp_websocket_client_config_t;
138138

139139
/**

0 commit comments

Comments
 (0)