From 32001ac4149b2062402b5914d756d405ab45c212 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Thu, 5 May 2011 17:07:21 +0200 Subject: [PATCH] set_userpass: convert from protocol-specific to generic The protocol handler's flags field now can set that the protocol requires a password, so that the set_userpass function doesn't have to have the specific knowledge of which protocols that do. --- lib/ftp.c | 5 +++-- lib/imap.c | 4 ++-- lib/url.c | 2 +- lib/urldata.h | 4 +++- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/ftp.c b/lib/ftp.c index 52322dfaf..a0e928087 100644 --- a/lib/ftp.c +++ b/lib/ftp.c @@ -181,7 +181,7 @@ const struct Curl_handler Curl_handler_ftp = { ZERO_NULL, /* readwrite */ PORT_FTP, /* defport */ CURLPROTO_FTP, /* protocol */ - PROTOPT_DUAL | PROTOPT_CLOSEACTION /* flags */ + PROTOPT_DUAL | PROTOPT_CLOSEACTION | PROTOPT_NEEDSPWD /* flags */ }; @@ -206,7 +206,8 @@ const struct Curl_handler Curl_handler_ftps = { ZERO_NULL, /* readwrite */ PORT_FTPS, /* defport */ CURLPROTO_FTP | CURLPROTO_FTPS, /* protocol */ - PROTOPT_SSL | PROTOPT_DUAL | PROTOPT_CLOSEACTION /* flags */ + PROTOPT_SSL | PROTOPT_DUAL | PROTOPT_CLOSEACTION | + PROTOPT_NEEDSPWD /* flags */ }; #endif diff --git a/lib/imap.c b/lib/imap.c index 67f0328e4..b135443d3 100644 --- a/lib/imap.c +++ b/lib/imap.c @@ -129,7 +129,7 @@ const struct Curl_handler Curl_handler_imap = { ZERO_NULL, /* readwrite */ PORT_IMAP, /* defport */ CURLPROTO_IMAP, /* protocol */ - PROTOPT_CLOSEACTION /* flags */ + PROTOPT_CLOSEACTION | PROTOPT_NEEDSPWD /* flags */ }; @@ -154,7 +154,7 @@ const struct Curl_handler Curl_handler_imaps = { ZERO_NULL, /* readwrite */ PORT_IMAPS, /* defport */ CURLPROTO_IMAP | CURLPROTO_IMAPS, /* protocol */ - PROTOPT_CLOSEACTION | PROTOPT_SSL /* flags */ + PROTOPT_CLOSEACTION | PROTOPT_SSL | PROTOPT_NEEDSPWD /* flags */ }; #endif diff --git a/lib/url.c b/lib/url.c index 4771b3b97..038a02d43 100644 --- a/lib/url.c +++ b/lib/url.c @@ -4452,7 +4452,7 @@ static CURLcode set_userpass(struct connectdata *conn, const char *user, const char *passwd) { /* If our protocol needs a password and we have none, use the defaults */ - if((conn->handler->protocol & (CURLPROTO_FTP|CURLPROTO_IMAP)) && + if((conn->handler->flags & PROTOPT_NEEDSPWD) && !conn->bits.user_passwd) { conn->user = strdup(CURL_DEFAULT_USER); diff --git a/lib/urldata.h b/lib/urldata.h index e78dbbf3c..f4b4bcc6c 100644 --- a/lib/urldata.h +++ b/lib/urldata.h @@ -703,7 +703,9 @@ struct Curl_handler { the send function might need to be called while uploading, or vice versa. */ #define PROTOPT_DIRLOCK (1<<3) -#define PROTOPT_NONETWORK (1<<4) /* protocol doesn't use the network! */ +#define PROTOPT_NONETWORK (1<<4) /* protocol doesn't use the network! */ +#define PROTOPT_NEEDSPWD (1<<5) /* needs a password, and if none is set it + gets a default */ /* return the count of bytes sent, or -1 on error */