]> granicus.if.org Git - esp-idf/commitdiff
websocket_client: fix URI parsing to include also query part in websocket connection...
authorDavid Cermak <cermak@espressif.com>
Wed, 25 Sep 2019 13:30:01 +0000 (15:30 +0200)
committerDavid Cermak <cermak@espressif.com>
Mon, 7 Oct 2019 14:40:38 +0000 (16:40 +0200)
closes https://github.com/espressif/esp-idf/issues/4090

components/esp_websocket_client/esp_websocket_client.c

index dc73334190bd02e5610a6919541634978c537da1..6352ef223e94b3327b82e0d3fa7b5439f41b6874 100644 (file)
@@ -382,9 +382,16 @@ esp_err_t esp_websocket_client_set_uri(esp_websocket_client_handle_t client, con
     }
 
 
-    if (puri.field_data[UF_PATH].len) {
+    if (puri.field_data[UF_PATH].len || puri.field_data[UF_QUERY].len) {
         free(client->config->path);
-        asprintf(&client->config->path, "%.*s", puri.field_data[UF_PATH].len, uri + puri.field_data[UF_PATH].off);
+        if (puri.field_data[UF_QUERY].len == 0) {
+            asprintf(&client->config->path, "%.*s", puri.field_data[UF_PATH].len, uri + puri.field_data[UF_PATH].off);
+        } else if (puri.field_data[UF_PATH].len == 0)  {
+            asprintf(&client->config->path, "/?%.*s", puri.field_data[UF_QUERY].len, uri + puri.field_data[UF_QUERY].off);
+        } else {
+            asprintf(&client->config->path, "%.*s?%.*s", puri.field_data[UF_PATH].len, uri + puri.field_data[UF_PATH].off,
+                    puri.field_data[UF_QUERY].len, uri + puri.field_data[UF_QUERY].off);
+        }
         ESP_WS_CLIENT_MEM_CHECK(TAG, client->config->path, return ESP_ERR_NO_MEM);
     }
     if (puri.field_data[UF_PORT].off) {