WS: include the part after '?' in the query
This commit is contained in:
parent
a16a7940dd
commit
be1e424e17
|
@ -1294,6 +1294,7 @@ backend_ws_connect (struct app_context *ctx, struct error **e)
|
||||||
self->url.field_data[UF_SCHEMA].off,
|
self->url.field_data[UF_SCHEMA].off,
|
||||||
self->url.field_data[UF_SCHEMA].len);
|
self->url.field_data[UF_SCHEMA].len);
|
||||||
bool use_tls = !strcasecmp_ascii (url_schema, "wss");
|
bool use_tls = !strcasecmp_ascii (url_schema, "wss");
|
||||||
|
free (url_schema);
|
||||||
|
|
||||||
char *url_host = xstrndup (self->endpoint +
|
char *url_host = xstrndup (self->endpoint +
|
||||||
self->url.field_data[UF_HOST].off,
|
self->url.field_data[UF_HOST].off,
|
||||||
|
@ -1304,10 +1305,18 @@ backend_ws_connect (struct app_context *ctx, struct error **e)
|
||||||
self->url.field_data[UF_PORT].len)
|
self->url.field_data[UF_PORT].len)
|
||||||
: xstrdup (use_tls ? "443" : "80");
|
: xstrdup (use_tls ? "443" : "80");
|
||||||
|
|
||||||
// FIXME: should include "?UF_QUERY" as well, if present
|
struct str url_path;
|
||||||
char *url_path = xstrndup (self->endpoint +
|
str_init (&url_path);
|
||||||
|
str_append_data (&url_path, self->endpoint +
|
||||||
self->url.field_data[UF_PATH].off,
|
self->url.field_data[UF_PATH].off,
|
||||||
self->url.field_data[UF_PATH].len);
|
self->url.field_data[UF_PATH].len);
|
||||||
|
if (self->url.field_set & (1 << UF_QUERY))
|
||||||
|
{
|
||||||
|
str_append_c (&url_path, '?');
|
||||||
|
str_append_data (&url_path, self->endpoint +
|
||||||
|
self->url.field_data[UF_QUERY].off,
|
||||||
|
self->url.field_data[UF_QUERY].len);
|
||||||
|
}
|
||||||
|
|
||||||
if (!backend_ws_establish_connection (ctx, url_host, url_port, e))
|
if (!backend_ws_establish_connection (ctx, url_host, url_port, e))
|
||||||
goto fail_1;
|
goto fail_1;
|
||||||
|
@ -1332,7 +1341,7 @@ backend_ws_connect (struct app_context *ctx, struct error **e)
|
||||||
struct str request;
|
struct str request;
|
||||||
str_init (&request);
|
str_init (&request);
|
||||||
|
|
||||||
str_append_printf (&request, "GET %s HTTP/1.1\r\n", url_path);
|
str_append_printf (&request, "GET %s HTTP/1.1\r\n", url_path.str);
|
||||||
// TODO: omit the port if it's the default (check RFC for "SHOULD" or ...)
|
// TODO: omit the port if it's the default (check RFC for "SHOULD" or ...)
|
||||||
str_append_printf (&request, "Host: %s:%s\r\n", url_host, url_port);
|
str_append_printf (&request, "Host: %s:%s\r\n", url_host, url_port);
|
||||||
str_append_printf (&request, "Upgrade: websocket\r\n");
|
str_append_printf (&request, "Upgrade: websocket\r\n");
|
||||||
|
@ -1395,10 +1404,9 @@ fail_2:
|
||||||
self->server_fd = -1;
|
self->server_fd = -1;
|
||||||
}
|
}
|
||||||
fail_1:
|
fail_1:
|
||||||
free (url_schema);
|
|
||||||
free (url_host);
|
free (url_host);
|
||||||
free (url_port);
|
free (url_port);
|
||||||
free (url_path);
|
str_free (&url_path);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue