diff --git a/lib/client-handshake.c b/lib/client-handshake.c index 6ae27d28..ae4bcdc8 100644 --- a/lib/client-handshake.c +++ b/lib/client-handshake.c @@ -35,7 +35,8 @@ lws_client_connect_2(struct lws *wsi) struct lws_context_per_thread *pt = &context->pt[(int)wsi->tsi]; struct lws_pollfd pfd; const char *cce = "", *iface; - int n, plen = 0, port; + int n, port; + ssize_t plen = 0; const char *ads; #ifdef LWS_USE_IPV6 char ipv6only = lws_check_opt(wsi->vhost->options, @@ -85,7 +86,7 @@ lws_client_connect_2(struct lws *wsi) /* Priority 2: Connect to SOCK5 Proxy */ } else if (wsi->vhost->socks_proxy_port) { - socks_generate_msg(wsi, SOCKS_MSG_GREETING, (size_t *)&plen); + socks_generate_msg(wsi, SOCKS_MSG_GREETING, &plen); lwsl_client("%s\n", "Sending SOCKS Greeting."); ads = wsi->vhost->socks_proxy_address; @@ -975,11 +976,11 @@ lws_client_connect(struct lws_context *context, const char *address, #if defined(LWS_WITH_SOCKS5) void socks_generate_msg(struct lws *wsi, enum socks_msg_type type, - size_t *msg_len) + ssize_t *msg_len) { struct lws_context *context = wsi->context; struct lws_context_per_thread *pt = &context->pt[(int)wsi->tsi]; - size_t len = 0; + ssize_t len = 0; if (type == SOCKS_MSG_GREETING) { /* socks version, version 5 only */ @@ -992,8 +993,8 @@ void socks_generate_msg(struct lws *wsi, enum socks_msg_type type, pt->serv_buf[len++] = SOCKS_AUTH_NO_AUTH; } else if (type == SOCKS_MSG_USERNAME_PASSWORD) { - size_t user_len = 0; - size_t passwd_len = 0; + ssize_t user_len = 0; + ssize_t passwd_len = 0; user_len = strlen(wsi->vhost->socks_user); passwd_len = strlen(wsi->vhost->socks_password); @@ -1014,7 +1015,7 @@ void socks_generate_msg(struct lws *wsi, enum socks_msg_type type, len += passwd_len; } else if (type == SOCKS_MSG_CONNECT) { - size_t len_index = 0; + ssize_t len_index = 0; short net_num = 0; char *net_buf = (char*)&net_num; @@ -1026,16 +1027,18 @@ void socks_generate_msg(struct lws *wsi, enum socks_msg_type type, pt->serv_buf[len++] = 0; /* address type */ pt->serv_buf[len++] = SOCKS_ATYP_DOMAINNAME; - len_index = len; - len++; + len_index = len++; + /* the address we tell SOCKS proxy to connect to */ strncpy((char *)&(pt->serv_buf[len]), wsi->u.hdr.stash->address, context->pt_serv_buf_size - len); len += strlen(wsi->u.hdr.stash->address); net_num = htons((short)wsi->c_port); + /* the port we tell SOCKS proxy to connect to */ pt->serv_buf[len++] = net_buf[0]; pt->serv_buf[len++] = net_buf[1]; + /* the length of the address, excluding port */ pt->serv_buf[len_index] = strlen(wsi->u.hdr.stash->address); } diff --git a/lib/client.c b/lib/client.c index 3c8986cd..40ba4b32 100755 --- a/lib/client.c +++ b/lib/client.c @@ -86,7 +86,8 @@ lws_client_socket_service(struct lws_context *context, struct lws *wsi, const char *cce = NULL; unsigned char c; char *sb = p; - int n = 0, len = 0; + int n = 0; + ssize_t len = 0; #if defined(LWS_WITH_SOCKS5) char conn_mode = 0, pending_timeout = 0; #endif @@ -143,7 +144,7 @@ lws_client_socket_service(struct lws_context *context, struct lws *wsi, { lwsl_client("%s\n", "SOCKS greeting reply received " "- No Authentication Method"); - socks_generate_msg(wsi, SOCKS_MSG_CONNECT, (size_t *)&len); + socks_generate_msg(wsi, SOCKS_MSG_CONNECT, &len); conn_mode = LWSCM_WSCL_WAITING_SOCKS_CONNECT_REPLY; pending_timeout = PENDING_TIMEOUT_AWAITING_SOCKS_CONNECT_REPLY; @@ -155,7 +156,7 @@ lws_client_socket_service(struct lws_context *context, struct lws *wsi, lwsl_client("%s\n", "SOCKS greeting reply received " "- User Name Password Method"); socks_generate_msg(wsi, SOCKS_MSG_USERNAME_PASSWORD, - (size_t *)&len); + &len); conn_mode = LWSCM_WSCL_WAITING_SOCKS_AUTH_REPLY; pending_timeout = PENDING_TIMEOUT_AWAITING_SOCKS_AUTH_REPLY; @@ -214,7 +215,7 @@ lws_client_socket_service(struct lws_context *context, struct lws *wsi, { lwsl_client("%s\n", "SOCKS password reply recieved - " "successful"); - socks_generate_msg(wsi, SOCKS_MSG_CONNECT, (size_t *)&len); + socks_generate_msg(wsi, SOCKS_MSG_CONNECT, &len); conn_mode = LWSCM_WSCL_WAITING_SOCKS_CONNECT_REPLY; pending_timeout = diff --git a/lib/private-libwebsockets.h b/lib/private-libwebsockets.h index 4830a2ec..c0029092 100644 --- a/lib/private-libwebsockets.h +++ b/lib/private-libwebsockets.h @@ -2269,7 +2269,7 @@ static inline uint64_t lws_stats_atomic_max(struct lws_context * context, /* socks */ void socks_generate_msg(struct lws *wsi, enum socks_msg_type type, - size_t *msg_len); + ssize_t *msg_len); #ifdef __cplusplus };