diff options
| author | Steve Holme <steve_holme@hotmail.com> | 2014-02-20 23:51:36 +0000 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2014-03-25 23:01:37 +0100 | 
| commit | 517b06d657aceb11a234b05cc891170c367ab80d (patch) | |
| tree | 8b7b919e916f955f04367ad34b19340e37e9e930 /lib | |
| parent | e798e6759b14f4020c63ec456f5c951043e891aa (diff) | |
url: Fixed connection re-use when using different log-in credentials
In addition to FTP, other connection based protocols such as IMAP, POP3,
SMTP, SCP, SFTP and LDAP require a new connection when different log-in
credentials are specified. Fixed the detection logic to include these
other protocols.
Bug: http://curl.haxx.se/docs/adv_20140326A.html
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/http.c | 2 | ||||
| -rw-r--r-- | lib/url.c | 7 | ||||
| -rw-r--r-- | lib/urldata.h | 2 | 
3 files changed, 7 insertions, 4 deletions
| diff --git a/lib/http.c b/lib/http.c index 558699967..4a29058c2 100644 --- a/lib/http.c +++ b/lib/http.c @@ -145,7 +145,7 @@ const struct Curl_handler Curl_handler_https = {    ZERO_NULL,                            /* readwrite */    PORT_HTTPS,                           /* defport */    CURLPROTO_HTTP | CURLPROTO_HTTPS,     /* protocol */ -  PROTOPT_SSL                           /* flags */ +  PROTOPT_SSL | PROTOPT_CREDSPERREQUEST /* flags */  };  #endif @@ -3060,9 +3060,10 @@ ConnectionExists(struct SessionHandle *data,            continue;        } -      if((needle->handler->protocol & CURLPROTO_FTP) || wantNTLMhttp) { -        /* This is FTP or HTTP+NTLM, verify that we're using the same name -           and password as well */ +      if((!(needle->handler->flags & PROTOPT_CREDSPERREQUEST)) || +         wantNTLMhttp) { +        /* This protocol requires credentials per connection or is HTTP+NTLM, +           so verify that we're using the same name and password as well */          if(!strequal(needle->user, check->user) ||             !strequal(needle->passwd, check->passwd)) {            /* one of them was different */ diff --git a/lib/urldata.h b/lib/urldata.h index 3ab4ed9fc..25f967693 100644 --- a/lib/urldata.h +++ b/lib/urldata.h @@ -795,6 +795,8 @@ struct Curl_handler {                                        gets a default */  #define PROTOPT_NOURLQUERY (1<<6)   /* protocol can't handle                                          url query strings (?foo=bar) ! */ +#define PROTOPT_CREDSPERREQUEST (1<<7) /* requires login creditials per request +                                          as opposed to per connection */  /* return the count of bytes sent, or -1 on error */ | 
