diff options
author | Kamil Dudka <kdudka@redhat.com> | 2017-03-08 12:16:01 +0100 |
---|---|---|
committer | Kamil Dudka <kdudka@redhat.com> | 2017-06-28 07:48:34 +0200 |
commit | cd1c9f08078d4a8566ed10f6df9ae9a729f3290b (patch) | |
tree | ebd789417d35723e13ba94b5d165d21ad2621abc | |
parent | 641072b919b1a52c58664cd18619f8dd1c4c0cee (diff) |
socks: deduplicate the code for auth request
-rw-r--r-- | lib/socks.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/lib/socks.c b/lib/socks.c index b55fa9b8c..968b720b7 100644 --- a/lib/socks.c +++ b/lib/socks.c @@ -375,6 +375,7 @@ CURLcode Curl_SOCKS5(const char *proxy_user, */ unsigned char socksreq[600]; /* room for large user/pw (255 max each) */ + int idx; ssize_t actualread; ssize_t written; int result; @@ -426,17 +427,17 @@ CURLcode Curl_SOCKS5(const char *proxy_user, return CURLE_COULDNT_CONNECT; } - socksreq[0] = 5; /* version */ + idx = 0; + socksreq[idx++] = 5; /* version */ + idx++; /* reserve for the number of authentication methods */ + socksreq[idx++] = 0; /* no authentication */ #if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI) - socksreq[1] = (char)(proxy_user ? 3 : 2); /* number of methods (below) */ - socksreq[2] = 0; /* no authentication */ - socksreq[3] = 1; /* GSS-API */ - socksreq[4] = 2; /* username/password */ -#else - socksreq[1] = (char)(proxy_user ? 2 : 1); /* number of methods (below) */ - socksreq[2] = 0; /* no authentication */ - socksreq[3] = 2; /* username/password */ + socksreq[idx++] = 1; /* GSS-API */ #endif + if(proxy_user) + socksreq[idx++] = 2; /* username/password */ + /* write the number of authentication methods */ + socksreq[1] = (unsigned char) (idx - 2); (void)curlx_nonblock(sock, FALSE); |