mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
smtp: Minor code tidy up
Minor tidy up of comments and layout prior to next part of imap work.
This commit is contained in:
parent
167717b806
commit
f6f6f278e2
@ -64,7 +64,7 @@ struct smtp_conn {
|
|||||||
unsigned int authused; /* Auth mechanism used for the connection */
|
unsigned int authused; /* Auth mechanism used for the connection */
|
||||||
smtpstate state; /* Always use smtp.c:state() to change state! */
|
smtpstate state; /* Always use smtp.c:state() to change state! */
|
||||||
struct curl_slist *rcpt; /* Recipient list */
|
struct curl_slist *rcpt; /* Recipient list */
|
||||||
bool ssldone; /* Is connect() over SSL done? only relevant in
|
bool ssldone; /* Is connect() over SSL done? Only relevant in
|
||||||
multi mode */
|
multi mode */
|
||||||
bool size_supported; /* If server supports SIZE extension according to
|
bool size_supported; /* If server supports SIZE extension according to
|
||||||
RFC 1870 */
|
RFC 1870 */
|
||||||
|
34
lib/smtp.c
34
lib/smtp.c
@ -204,9 +204,8 @@ static const struct Curl_handler Curl_handler_smtps_proxy = {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Function that checks for an ending smtp status code at the start of the
|
/* Function that checks for an ending smtp status code at the start of the
|
||||||
given string.
|
given string, but also detects the supported authentication mechanisms
|
||||||
As a side effect, it also flags allowed authentication mechanisms according
|
from the EHLO AUTH response. */
|
||||||
to EHLO AUTH response. */
|
|
||||||
static int smtp_endofresp(struct pingpong *pp, int *resp)
|
static int smtp_endofresp(struct pingpong *pp, int *resp)
|
||||||
{
|
{
|
||||||
char *line = pp->linestart_resp;
|
char *line = pp->linestart_resp;
|
||||||
@ -302,10 +301,12 @@ static void state(struct connectdata *conn, smtpstate newstate)
|
|||||||
"QUIT",
|
"QUIT",
|
||||||
/* LAST */
|
/* LAST */
|
||||||
};
|
};
|
||||||
|
|
||||||
if(smtpc->state != newstate)
|
if(smtpc->state != newstate)
|
||||||
infof(conn->data, "SMTP %p state change from %s to %s\n",
|
infof(conn->data, "SMTP %p state change from %s to %s\n",
|
||||||
smtpc, names[smtpc->state], names[newstate]);
|
smtpc, names[smtpc->state], names[newstate]);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
smtpc->state = newstate;
|
smtpc->state = newstate;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -492,7 +493,7 @@ static CURLcode smtp_state_starttls_resp(struct connectdata *conn,
|
|||||||
else {
|
else {
|
||||||
if(data->state.used_interface == Curl_if_multi) {
|
if(data->state.used_interface == Curl_if_multi) {
|
||||||
state(conn, SMTP_UPGRADETLS);
|
state(conn, SMTP_UPGRADETLS);
|
||||||
return smtp_state_upgrade_tls(conn);
|
result = smtp_state_upgrade_tls(conn);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
result = Curl_ssl_connect(conn, FIRSTSOCKET);
|
result = Curl_ssl_connect(conn, FIRSTSOCKET);
|
||||||
@ -602,6 +603,7 @@ static CURLcode smtp_state_auth_plain_resp(struct connectdata *conn,
|
|||||||
if(!result)
|
if(!result)
|
||||||
state(conn, SMTP_AUTH);
|
state(conn, SMTP_AUTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
Curl_safefree(plainauth);
|
Curl_safefree(plainauth);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -638,6 +640,7 @@ static CURLcode smtp_state_auth_login_resp(struct connectdata *conn,
|
|||||||
if(!result)
|
if(!result)
|
||||||
state(conn, SMTP_AUTH_PASSWD);
|
state(conn, SMTP_AUTH_PASSWD);
|
||||||
}
|
}
|
||||||
|
|
||||||
Curl_safefree(authuser);
|
Curl_safefree(authuser);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -674,6 +677,7 @@ static CURLcode smtp_state_auth_passwd_resp(struct connectdata *conn,
|
|||||||
if(!result)
|
if(!result)
|
||||||
state(conn, SMTP_AUTH);
|
state(conn, SMTP_AUTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
Curl_safefree(authpasswd);
|
Curl_safefree(authpasswd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -728,6 +732,7 @@ static CURLcode smtp_state_auth_cram_resp(struct connectdata *conn,
|
|||||||
if(!result)
|
if(!result)
|
||||||
state(conn, SMTP_AUTH);
|
state(conn, SMTP_AUTH);
|
||||||
}
|
}
|
||||||
|
|
||||||
Curl_safefree(rplyb64);
|
Curl_safefree(rplyb64);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1114,6 +1119,7 @@ static CURLcode smtp_statemach_act(struct connectdata *conn)
|
|||||||
struct pingpong *pp = &smtpc->pp;
|
struct pingpong *pp = &smtpc->pp;
|
||||||
size_t nread = 0;
|
size_t nread = 0;
|
||||||
|
|
||||||
|
/* Busy upgrading the connection; right now all I/O is SSL/TLS, not SMTP */
|
||||||
if(smtpc->state == SMTP_UPGRADETLS)
|
if(smtpc->state == SMTP_UPGRADETLS)
|
||||||
return smtp_state_upgrade_tls(conn);
|
return smtp_state_upgrade_tls(conn);
|
||||||
|
|
||||||
@ -1131,7 +1137,7 @@ static CURLcode smtp_statemach_act(struct connectdata *conn)
|
|||||||
data->info.httpcode = smtpcode;
|
data->info.httpcode = smtpcode;
|
||||||
|
|
||||||
if(smtpcode) {
|
if(smtpcode) {
|
||||||
/* we have now received a full SMTP server response */
|
/* We have now received a full SMTP server response */
|
||||||
switch(smtpc->state) {
|
switch(smtpc->state) {
|
||||||
case SMTP_SERVERGREET:
|
case SMTP_SERVERGREET:
|
||||||
result = smtp_state_servergreet_resp(conn, smtpcode, smtpc->state);
|
result = smtp_state_servergreet_resp(conn, smtpcode, smtpc->state);
|
||||||
@ -1250,7 +1256,7 @@ static CURLcode smtp_easy_statemach(struct connectdata *conn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Allocate and initialize the SMTP struct for the current SessionHandle if
|
/* Allocate and initialize the SMTP struct for the current SessionHandle if
|
||||||
* required */
|
required */
|
||||||
static CURLcode smtp_init(struct connectdata *conn)
|
static CURLcode smtp_init(struct connectdata *conn)
|
||||||
{
|
{
|
||||||
struct SessionHandle *data = conn->data;
|
struct SessionHandle *data = conn->data;
|
||||||
@ -1316,7 +1322,7 @@ static CURLcode smtp_connect(struct connectdata *conn, bool *done)
|
|||||||
if((conn->handler->protocol & CURLPROTO_SMTPS) &&
|
if((conn->handler->protocol & CURLPROTO_SMTPS) &&
|
||||||
data->state.used_interface != Curl_if_multi) {
|
data->state.used_interface != Curl_if_multi) {
|
||||||
/* SMTPS is simply smtp with SSL for the control channel */
|
/* SMTPS is simply smtp with SSL for the control channel */
|
||||||
/* now, perform the SSL initialization for this socket */
|
/* so perform the SSL initialization for this socket */
|
||||||
result = Curl_ssl_connect(conn, FIRSTSOCKET);
|
result = Curl_ssl_connect(conn, FIRSTSOCKET);
|
||||||
if(result)
|
if(result)
|
||||||
return result;
|
return result;
|
||||||
@ -1325,11 +1331,13 @@ static CURLcode smtp_connect(struct connectdata *conn, bool *done)
|
|||||||
/* Initialise the response reader stuff */
|
/* Initialise the response reader stuff */
|
||||||
Curl_pp_init(pp);
|
Curl_pp_init(pp);
|
||||||
|
|
||||||
pp->response_time = RESP_TIMEOUT; /* set default response time-out */
|
/* Set the default response time-out */
|
||||||
|
pp->response_time = RESP_TIMEOUT;
|
||||||
pp->statemach_act = smtp_statemach_act;
|
pp->statemach_act = smtp_statemach_act;
|
||||||
pp->endofresp = smtp_endofresp;
|
pp->endofresp = smtp_endofresp;
|
||||||
pp->conn = conn;
|
pp->conn = conn;
|
||||||
|
|
||||||
|
/* Calculate the path if necessary */
|
||||||
if(!*path) {
|
if(!*path) {
|
||||||
if(!Curl_gethostname(localhost, sizeof(localhost)))
|
if(!Curl_gethostname(localhost, sizeof(localhost)))
|
||||||
path = localhost;
|
path = localhost;
|
||||||
@ -1342,7 +1350,7 @@ static CURLcode smtp_connect(struct connectdata *conn, bool *done)
|
|||||||
if(result)
|
if(result)
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
/* Set the state as we are waiting the server greeting */
|
/* Start off waiting for the server greeting response */
|
||||||
state(conn, SMTP_SERVERGREET);
|
state(conn, SMTP_SERVERGREET);
|
||||||
|
|
||||||
if(data->state.used_interface == Curl_if_multi)
|
if(data->state.used_interface == Curl_if_multi)
|
||||||
@ -1372,6 +1380,7 @@ static CURLcode smtp_done(struct connectdata *conn, CURLcode status,
|
|||||||
struct FTP *smtp = data->state.proto.smtp;
|
struct FTP *smtp = data->state.proto.smtp;
|
||||||
CURLcode result = CURLE_OK;
|
CURLcode result = CURLE_OK;
|
||||||
ssize_t bytes_written;
|
ssize_t bytes_written;
|
||||||
|
|
||||||
(void)premature;
|
(void)premature;
|
||||||
|
|
||||||
if(!smtp)
|
if(!smtp)
|
||||||
@ -1457,7 +1466,7 @@ static CURLcode smtp_perform(struct connectdata *conn, bool *connected,
|
|||||||
if(result)
|
if(result)
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
/* run the state-machine */
|
/* Run the state-machine */
|
||||||
if(conn->data->state.used_interface == Curl_if_multi)
|
if(conn->data->state.used_interface == Curl_if_multi)
|
||||||
result = smtp_multi_statemach(conn, dophase_done);
|
result = smtp_multi_statemach(conn, dophase_done);
|
||||||
else {
|
else {
|
||||||
@ -1604,7 +1613,9 @@ static CURLcode smtp_regular_transfer(struct connectdata *conn,
|
|||||||
CURLcode result = CURLE_OK;
|
CURLcode result = CURLE_OK;
|
||||||
bool connected = FALSE;
|
bool connected = FALSE;
|
||||||
struct SessionHandle *data = conn->data;
|
struct SessionHandle *data = conn->data;
|
||||||
data->req.size = -1; /* make sure this is unknown at this point */
|
|
||||||
|
/* Make sure size is unknown at this point */
|
||||||
|
data->req.size = -1;
|
||||||
|
|
||||||
Curl_pgrsSetUploadCounter(data, 0);
|
Curl_pgrsSetUploadCounter(data, 0);
|
||||||
Curl_pgrsSetDownloadCounter(data, 0);
|
Curl_pgrsSetDownloadCounter(data, 0);
|
||||||
@ -1614,7 +1625,6 @@ static CURLcode smtp_regular_transfer(struct connectdata *conn,
|
|||||||
result = smtp_perform(conn, &connected, dophase_done);
|
result = smtp_perform(conn, &connected, dophase_done);
|
||||||
|
|
||||||
if(CURLE_OK == result) {
|
if(CURLE_OK == result) {
|
||||||
|
|
||||||
if(!*dophase_done)
|
if(!*dophase_done)
|
||||||
/* The DO phase has not completed yet */
|
/* The DO phase has not completed yet */
|
||||||
return CURLE_OK;
|
return CURLE_OK;
|
||||||
|
Loading…
Reference in New Issue
Block a user