Commit 517b06d6 authored by Steve Holme's avatar Steve Holme Committed by Daniel Stenberg
Browse files

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
parent e798e675
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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

+4 −3
Original line number Diff line number Diff line
@@ -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 */
+2 −0
Original line number Diff line number Diff line
@@ -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 */