curl/lib
Isaac Boukris 7975d10cf8 http: Fix proxy connection reuse with basic-auth
When using basic-auth, connections and proxy connections
can be re-used with different Authorization headers since
it does not authenticate the connection (like NTLM does).

For instance, the below command should re-use the proxy
connection, but it currently doesn't:
curl -v -U alice:a -x http://localhost:8181 http://localhost/
  --next -U bob:b -x http://localhost:8181 http://localhost/

This is a regression since refactoring of ConnectionExists()
as part of: cb4e2be7c6

Fix the above by removing the username and password compare
when re-using proxy connection at proxy_info_matches().

However, this fix brings back another bug would make curl
to re-print the old proxy-authorization header of previous
proxy basic-auth connection because it wasn't cleared.

For instance, in the below command the second request should
fail if the proxy requires authentication, but would succeed
after the above fix (and before aforementioned commit):
curl -v -U alice:a -x http://localhost:8181 http://localhost/
  --next -x http://localhost:8181 http://localhost/

Fix this by clearing conn->allocptr.proxyuserpwd after use
unconditionally, same as we do for conn->allocptr.userpwd.

Also fix test 540 to not expect digest auth header to be
resent when connection is reused.

Signed-off-by: Isaac Boukris <iboukris@gmail.com>

Closes https://github.com/curl/curl/pull/1350
2017-03-28 03:54:43 -04:00
..
vauth spelling fixes 2017-03-26 23:56:23 +02:00
vtls openssl: exclude DSA code when OPENSSL_NO_DSA is defined 2017-03-28 03:54:31 -04:00
.gitignore VC: remove the makefile.vc6 build infra 2017-01-23 14:27:32 +01:00
amigaos.c s/cURL/curl 2016-10-18 13:59:54 +02:00
amigaos.h
arpa_telnet.h
asyn-ares.c ares: Curl_resolver_wait_resolv: clear *entry first in function 2017-03-07 08:08:55 +01:00
asyn-thread.c checksrc: stricter no-space-before-paren enforcement 2016-12-13 23:39:11 +01:00
asyn.h
base64.c base64: check for integer overflow on large input 2016-10-31 08:46:35 +01:00
checksrc.pl tests: checksrc compliance 2016-12-19 02:31:59 -05:00
CMakeLists.txt CMake: Try to (un-)hide private library symbols 2016-09-10 00:35:38 +02:00
config-amigaos.h config-amigaos.h: (embarrassed) made the line shorter 2016-12-18 23:46:17 +01:00
config-dos.h
config-mac.h
config-os400.h
config-riscos.h
config-symbian.h checksrc: white space edits to comply to stricter checksrc 2016-11-24 23:58:22 +01:00
config-tpf.h
config-vxworks.h
config-win32.h spelling fixes 2017-03-26 23:56:23 +02:00
config-win32ce.h spelling fixes 2017-03-26 23:56:23 +02:00
conncache.c string formatting: fix 4 printf-style format strings 2017-02-19 14:13:42 +01:00
conncache.h
connect.c Improve code readbility 2017-03-13 23:11:45 +01:00
connect.h http_proxy: Fix proxy CONNECT hang on pending data 2016-12-19 02:26:52 -05:00
content_encoding.c Improve code readbility 2017-03-13 23:11:45 +01:00
content_encoding.h
cookie.c Improve code readbility 2017-03-13 23:11:45 +01:00
cookie.h cookies: getlist() now holds deep copies of all cookies 2016-10-31 08:46:35 +01:00
curl_addrinfo.c Improve code readbility 2017-03-13 23:11:45 +01:00
curl_addrinfo.h unix_socket: add support for abstract unix domain socket 2017-01-13 16:25:20 +01:00
curl_base64.h
curl_config.h.cmake CMake: Add DarwinSSL support 2017-03-05 14:42:53 +01:00
curl_des.c use *.sourceforge.io and misc URL updates 2017-02-06 19:21:05 +00:00
curl_des.h
curl_endian.c Declare endian read functions argument as a const pointer. 2016-11-24 16:14:21 +01:00
curl_endian.h Declare endian read functions argument as a const pointer. 2016-11-24 16:14:21 +01:00
curl_fnmatch.c Improve code readbility 2017-03-13 23:11:45 +01:00
curl_fnmatch.h
curl_gethostname.c checksrc: move open braces to comply with function declaration style 2016-11-24 23:58:22 +01:00
curl_gethostname.h
curl_gssapi.c checksrc: white space edits to comply to stricter checksrc 2016-11-24 23:58:22 +01:00
curl_gssapi.h
curl_hmac.h checksrc: code style: use 'char *name' style 2016-11-24 23:58:22 +01:00
curl_ldap.h
curl_md4.h
curl_md5.h
curl_memory.h spelling fixes 2017-03-26 23:56:23 +02:00
curl_memrchr.c
curl_memrchr.h
curl_multibyte.c
curl_multibyte.h
curl_ntlm_core.c string formatting: fix 4 printf-style format strings 2017-02-19 14:13:42 +01:00
curl_ntlm_core.h
curl_ntlm_wb.c use *.sourceforge.io and misc URL updates 2017-02-06 19:21:05 +00:00
curl_ntlm_wb.h
curl_printf.h
curl_rtmp.c
curl_rtmp.h
curl_sasl.c checksrc: code style: use 'char *name' style 2016-11-24 23:58:22 +01:00
curl_sasl.h
curl_sec.h checksrc: stricter no-space-before-paren enforcement 2016-12-13 23:39:11 +01:00
curl_setup_once.h
curl_setup.h checksrc: code style: use 'char *name' style 2016-11-24 23:58:22 +01:00
curl_sspi.c curl_sspi.c: Updated function description comments 2016-08-31 11:57:28 +01:00
curl_sspi.h
curl_threads.c checksrc: stricter no-space-before-paren enforcement 2016-12-13 23:39:11 +01:00
curl_threads.h checksrc: stricter no-space-before-paren enforcement 2016-12-13 23:39:11 +01:00
curlx.h strcase: make the tool use curl_str[n]equal instead 2016-10-31 21:51:19 +01:00
dict.c fix potential use of uninitialized variables 2017-03-04 21:37:03 +01:00
dict.h
dotdot.c
dotdot.h
easy.c Improve code readbility 2017-03-13 23:11:45 +01:00
easyif.h
escape.c Improve code readbility 2017-03-13 23:11:45 +01:00
escape.h
file.c Improve code readbility 2017-03-13 23:11:45 +01:00
file.h
fileinfo.c
fileinfo.h
firefox-db2pem.sh
formdata.c Improve code readbility 2017-03-13 23:11:45 +01:00
formdata.h checksrc: code style: use 'char *name' style 2016-11-24 23:58:22 +01:00
ftp.c spelling fixes 2017-03-26 23:56:23 +02:00
ftp.h checksrc: code style: use 'char *name' style 2016-11-24 23:58:22 +01:00
ftplistparser.c Improve code readbility 2017-03-13 23:11:45 +01:00
ftplistparser.h
getenv.c win: Basic support for Universal Windows Platform apps 2016-08-21 13:56:22 +02:00
getinfo.c checksrc: stricter no-space-before-paren enforcement 2016-12-13 23:39:11 +01:00
getinfo.h
gopher.c fix potential use of uninitialized variables 2017-03-04 21:37:03 +01:00
gopher.h
hash.c Improve code readbility 2017-03-13 23:11:45 +01:00
hash.h checksrc: code style: use 'char *name' style 2016-11-24 23:58:22 +01:00
hmac.c checksrc: code style: use 'char *name' style 2016-11-24 23:58:22 +01:00
hostasyn.c
hostcheck.c Improve code readbility 2017-03-13 23:11:45 +01:00
hostcheck.h
hostip4.c checksrc: white space edits to comply to stricter checksrc 2016-11-24 23:58:22 +01:00
hostip6.c
hostip.c spelling fixes 2017-03-26 23:56:23 +02:00
hostip.h spelling fixes 2017-03-26 23:56:23 +02:00
hostsyn.c
http2.c http2: fix memory-leak when denying push streams 2017-02-13 10:35:18 +01:00
http2.h http2: Fix crashes when parent stream gets aborted 2016-11-28 15:06:17 +01:00
http_chunks.c checksrc: stricter no-space-before-paren enforcement 2016-12-13 23:39:11 +01:00
http_chunks.h
http_digest.c lib: fix MSVC compiler warnings 2016-12-21 11:07:26 +01:00
http_digest.h
http_negotiate.c proxy: Support HTTPS proxy and SOCKS+HTTP(s) 2016-11-24 23:41:44 +01:00
http_negotiate.h
http_ntlm.c use *.sourceforge.io and misc URL updates 2017-02-06 19:21:05 +00:00
http_ntlm.h
http_proxy.c Improve code readbility 2017-03-13 23:11:45 +01:00
http_proxy.h proxy: Support HTTPS proxy and SOCKS+HTTP(s) 2016-11-24 23:41:44 +01:00
http.c http: Fix proxy connection reuse with basic-auth 2017-03-28 03:54:43 -04:00
http.h http2: disable server push if not requested 2017-01-15 11:45:32 +00:00
idn_win32.c
if2ip.c checksrc: code style: use 'char *name' style 2016-11-24 23:58:22 +01:00
if2ip.h
imap.c spelling fixes 2017-03-26 23:56:23 +02:00
imap.h
inet_ntop.c checksrc: stricter no-space-before-paren enforcement 2016-12-13 23:39:11 +01:00
inet_ntop.h
inet_pton.c checksrc: warn for assignments within if() expressions 2016-12-14 01:29:44 +01:00
inet_pton.h
krb5.c checksrc: white space edits to comply to stricter checksrc 2016-11-24 23:58:22 +01:00
ldap.c checksrc: stricter no-space-before-paren enforcement 2016-12-13 23:39:11 +01:00
libcurl.def
libcurl.plist
libcurl.rc *.rc: escape non-ASCII/non-UTF-8 character for clarity 2017-01-19 11:35:48 +00:00
libcurl.vers.in
llist.c
llist.h
Makefile.am VC: remove the makefile.vc6 build infra 2017-01-23 14:27:32 +01:00
makefile.amiga
Makefile.b32 spelling fixes 2017-03-26 23:56:23 +02:00
makefile.dj
Makefile.inc Curl_rand: fixed and moved to rand.c 2016-11-14 08:23:52 +01:00
Makefile.m32
Makefile.netware spelling fixes 2017-03-26 23:56:23 +02:00
Makefile.vxworks
Makefile.Watcom
md4.c checksrc: warn for assignments within if() expressions 2016-12-14 01:29:44 +01:00
md5.c checksrc: warn for assignments within if() expressions 2016-12-14 01:29:44 +01:00
memdebug.c spelling fixes 2017-03-26 23:56:23 +02:00
memdebug.h
mk-ca-bundle.pl mk-ca-bundle.vbs: Fix UTF-8 output 2016-10-30 01:01:29 -04:00
mk-ca-bundle.vbs mk-ca-bundle.vbs: Fix UTF-8 output 2016-10-30 01:01:29 -04:00
mprintf.c Improve code readbility 2017-03-13 23:11:45 +01:00
multi.c multi: fix MinGW-w64 compiler warnings 2017-03-27 22:50:59 +02:00
multihandle.h proxy: Support HTTPS proxy and SOCKS+HTTP(s) 2016-11-24 23:41:44 +01:00
multiif.h lib: fix compiler warnings after de4de4e3c7 2016-11-18 10:11:55 +01:00
netrc.c strcasecompare: all case insensitive string compares ignore locale now 2016-10-31 08:46:35 +01:00
netrc.h
non-ascii.c checksrc: white space edits to comply to stricter checksrc 2016-11-24 23:58:22 +01:00
non-ascii.h
nonblock.c Improve code readbility 2017-03-13 23:11:45 +01:00
nonblock.h
nwlib.c checksrc: warn for assignments within if() expressions 2016-12-14 01:29:44 +01:00
nwos.c checksrc: stricter no-space-before-paren enforcement 2016-12-13 23:39:11 +01:00
objnames-test08.sh
objnames-test10.sh
objnames.inc spelling fixes 2017-03-26 23:56:23 +02:00
openldap.c
parsedate.c strcasecompare: all case insensitive string compares ignore locale now 2016-10-31 08:46:35 +01:00
parsedate.h
pingpong.c spelling fixes 2017-03-26 23:56:23 +02:00
pingpong.h spelling fixes 2017-03-26 23:56:23 +02:00
pipeline.c strcasecompare: all case insensitive string compares ignore locale now 2016-10-31 08:46:35 +01:00
pipeline.h
pop3.c URL: only accept ";options" in SMTP/POP3/IMAP URL schemes 2017-02-10 14:51:53 +01:00
pop3.h
progress.c spelling fixes 2017-03-26 23:56:23 +02:00
progress.h speed caps: not based on average speeds anymore 2016-09-04 13:11:23 +02:00
rand.c spelling fixes 2017-03-26 23:56:23 +02:00
rand.h rand: pass in number of randoms as an unsigned argument 2016-11-21 07:51:42 +01:00
rtsp.c spelling fixes 2017-03-26 23:56:23 +02:00
rtsp.h
security.c ftp-gss: check for init before use 2016-12-24 23:35:43 +01:00
select.c spelling fixes 2017-03-26 23:56:23 +02:00
select.h lib: fix compiler warnings after de4de4e3c7 2016-11-18 10:11:55 +01:00
sendf.c spelling fixes 2017-03-26 23:56:23 +02:00
sendf.h http_proxy: Fix proxy CONNECT hang on pending data 2016-12-19 02:26:52 -05:00
setup-os400.h checksrc: code style: use 'char *name' style 2016-11-24 23:58:22 +01:00
setup-vms.h checksrc: move open braces to comply with function declaration style 2016-11-24 23:58:22 +01:00
share.c
share.h checksrc: stricter no-space-before-paren enforcement 2016-12-13 23:39:11 +01:00
sigpipe.h
slist.c
slist.h
smb.c smb: use getpid replacement for windows UWP builds 2017-02-20 10:27:51 +01:00
smb.h
smtp.c URL: only accept ";options" in SMTP/POP3/IMAP URL schemes 2017-02-10 14:51:53 +01:00
smtp.h
sockaddr.h
socks_gssapi.c checksrc: stricter no-space-before-paren enforcement 2016-12-13 23:39:11 +01:00
socks_sspi.c checksrc: code style: use 'char *name' style 2016-11-24 23:58:22 +01:00
socks.c Improve code readbility 2017-03-13 23:11:45 +01:00
socks.h proxy: Support HTTPS proxy and SOCKS+HTTP(s) 2016-11-24 23:41:44 +01:00
speedcheck.c Improve code readbility 2017-03-13 23:11:45 +01:00
speedcheck.h
splay.c Improve code readbility 2017-03-13 23:11:45 +01:00
splay.h
ssh.c Improve code readbility 2017-03-13 23:11:45 +01:00
ssh.h
strcase.c Improve code readbility 2017-03-13 23:11:45 +01:00
strcase.h proxy: Support HTTPS proxy and SOCKS+HTTP(s) 2016-11-24 23:41:44 +01:00
strdup.c realloc: use Curl_saferealloc to avoid common mistakes 2016-11-11 10:03:48 +01:00
strdup.h realloc: use Curl_saferealloc to avoid common mistakes 2016-11-11 10:03:48 +01:00
strerror.c checksrc: warn for assignments within if() expressions 2016-12-14 01:29:44 +01:00
strerror.h idn: switch to libidn2 use and IDNA2008 support 2016-10-31 08:46:35 +01:00
strtok.c
strtok.h
strtoofft.c checksrc: code style: use 'char *name' style 2016-11-24 23:58:22 +01:00
strtoofft.h
system_win32.c spelling fixes 2017-03-26 23:56:23 +02:00
system_win32.h
telnet.c Improve code readbility 2017-03-13 23:11:45 +01:00
telnet.h
tftp.c Improve code readbility 2017-03-13 23:11:45 +01:00
tftp.h
timeval.c Improve code readbility 2017-03-13 23:11:45 +01:00
timeval.h timeval: prefer time_t to hold seconds instead of long 2016-11-12 13:32:21 +01:00
transfer.c spelling fixes 2017-03-26 23:56:23 +02:00
transfer.h speed caps: not based on average speeds anymore 2016-09-04 13:11:23 +02:00
url.c http: Fix proxy connection reuse with basic-auth 2017-03-28 03:54:43 -04:00
url.h url: proxy: Use 443 as default port for https proxies 2016-11-25 10:01:58 +01:00
urldata.h spelling fixes 2017-03-26 23:56:23 +02:00
version.c curl_version_info: add CURL_VERSION_HTTPS_PROXY 2016-11-26 17:28:53 +01:00
warnless.c warnless: suppress compiler warning 2017-02-28 09:10:18 +01:00
warnless.h
wildcard.c
wildcard.h
x509asn1.c checksrc: stricter no-space-before-paren enforcement 2016-12-13 23:39:11 +01:00
x509asn1.h checksrc: code style: use 'char *name' style 2016-11-24 23:58:22 +01:00