if (wsi->c_host == NULL)
goto oom1;
strcpy(wsi->c_host, host);
- wsi->c_origin = malloc(strlen(origin) + 1);
- if (wsi->c_origin == NULL)
- goto oom2;
- strcpy(wsi->c_origin, origin);
+ if (origin) {
+ wsi->c_origin = malloc(strlen(origin) + 1);
+ strcpy(wsi->c_origin, origin);
+ if (wsi->c_origin == NULL)
+ goto oom2;
+ } else
+ wsi->c_origin = NULL;
if (protocol) {
wsi->c_protocol = malloc(strlen(protocol) + 1);
if (wsi->c_protocol == NULL)
free(wsi->c_protocol);
oom3:
- free(wsi->c_origin);
+ if (wsi->c_origin)
+ free(wsi->c_origin);
oom2:
free(wsi->c_host);
SYSTEM_RANDOM_FILEPATH);
free(wsi->c_path);
free(wsi->c_host);
- free(wsi->c_origin);
+ if (wsi->c_origin)
+ free(wsi->c_origin);
if (wsi->c_protocol)
free(wsi->c_protocol);
libwebsocket_close_and_free_session(this, wsi);
* Sec-WebSocket-Version: 4
*/
- p += sprintf(p, "GET %s HTTP/1.1\x0d\x0a", wsi->c_path);
- p += sprintf(p, "Host: %s\x0d\x0a", wsi->c_host);
- p += sprintf(p, "Upgrade: websocket\x0d\x0a");
- p += sprintf(p, "Connection: Upgrade\x0d\x0a"
+ p += sprintf(p, "GET %s HTTP/1.1\x0d\x0a", wsi->c_path);
+ p += sprintf(p, "Host: %s\x0d\x0a", wsi->c_host);
+ p += sprintf(p, "Upgrade: websocket\x0d\x0a");
+ p += sprintf(p, "Connection: Upgrade\x0d\x0a"
"Sec-WebSocket-Key: ");
- strcpy(p, wsi->key_b64);
- p += strlen(wsi->key_b64);
- p += sprintf(p, "\x0d\x0aSec-WebSocket-Origin: %s\x0d\x0a",
+ strcpy(p, wsi->key_b64);
+ p += strlen(wsi->key_b64);
+ p += sprintf(p, "\x0d\x0a");
+ if (wsi->c_origin)
+ p += sprintf(p, "Sec-WebSocket-Origin: %s\x0d\x0a",
wsi->c_origin);
- if (wsi->c_protocol != NULL)
+ if (wsi->c_protocol)
p += sprintf(p, "Sec-WebSocket-Protocol: %s\x0d\x0a",
wsi->c_protocol);
- p += sprintf(p, "Sec-WebSocket-Version: %d\x0d\x0a\x0d\x0a",
+ p += sprintf(p, "Sec-WebSocket-Version: %d\x0d\x0a\x0d\x0a",
wsi->ietf_spec_revision);
/* done with these now */
free(wsi->c_path);
free(wsi->c_host);
- free(wsi->c_origin);
+ if (wsi->c_origin)
+ free(wsi->c_origin);
/* prepare the expected server accept response */