From f7c171ffbe2d7677af4974a235ed3ccb7b3ba8c8 Mon Sep 17 00:00:00 2001 From: Shuanglei Tao Date: Tue, 28 Jul 2020 22:55:01 +0800 Subject: [PATCH] protocol: fix request path for h2 --- src/protocol.c | 12 +++++++----- src/server.h | 1 + 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/protocol.c b/src/protocol.c index fa96b6b7..1be0a4e0 100644 --- a/src/protocol.c +++ b/src/protocol.c @@ -236,8 +236,12 @@ int callback_tty(struct lws *wsi, enum lws_callback_reasons reason, void *user, lwsl_warn("refuse to serve WS client due to the --max-clients option.\n"); return 1; } - if (lws_hdr_copy(wsi, buf, sizeof(buf), WSI_TOKEN_GET_URI) <= 0 || - strcmp(buf, endpoints.ws) != 0) { + + n = lws_hdr_copy(wsi, pss->path, sizeof(pss->path), WSI_TOKEN_GET_URI); +#if defined(LWS_ROLE_H2) + if (n <= 0) n = lws_hdr_copy(wsi, pss->path, sizeof(pss->path), WSI_TOKEN_HTTP_COLON_PATH); +#endif + if (strncmp(pss->path, endpoints.ws, n) != 0) { lwsl_warn("refuse to serve WS client for illegal ws path: %s\n", buf); return 1; } @@ -276,8 +280,6 @@ int callback_tty(struct lws *wsi, enum lws_callback_reasons reason, void *user, LIST_INSERT_HEAD(&server->procs, proc, entry); server->client_count++; - lws_hdr_copy(wsi, buf, sizeof(buf), WSI_TOKEN_GET_URI); - #if LWS_LIBRARY_VERSION_NUMBER >= 2004000 lws_get_peer_simple(lws_get_network_wsi(wsi), pss->address, sizeof(pss->address)); #else @@ -285,7 +287,7 @@ int callback_tty(struct lws *wsi, enum lws_callback_reasons reason, void *user, lws_get_peer_addresses(wsi, lws_get_socket_fd(wsi), name, sizeof(name), pss->address, sizeof(pss->address)); #endif - lwsl_notice("WS %s - %s, clients: %d\n", buf, pss->address, server->client_count); + lwsl_notice("WS %s - %s, clients: %d\n", pss->path, pss->address, server->client_count); break; case LWS_CALLBACK_SERVER_WRITEABLE: diff --git a/src/server.h b/src/server.h index 116d9b93..167ea8b4 100644 --- a/src/server.h +++ b/src/server.h @@ -57,6 +57,7 @@ struct pss_tty { int initial_cmd_index; bool authenticated; char address[50]; + char path[20]; struct lws *wsi; char *buffer;