pop3: Introduced a custom SMTP structure for per-request data
Created a new SMTP structure and changed the type of the smtp proto variable in connectdata from FTP* to SMTP*.
This commit is contained in:
parent
8960d81b0d
commit
ed7d438a12
12
lib/smtp.c
12
lib/smtp.c
@ -1091,7 +1091,7 @@ static CURLcode smtp_state_data_resp(struct connectdata *conn, int smtpcode,
|
|||||||
smtpstate instate)
|
smtpstate instate)
|
||||||
{
|
{
|
||||||
struct SessionHandle *data = conn->data;
|
struct SessionHandle *data = conn->data;
|
||||||
struct FTP *smtp = data->state.proto.smtp;
|
struct SMTP *smtp = data->state.proto.smtp;
|
||||||
|
|
||||||
(void)instate; /* no use for this yet */
|
(void)instate; /* no use for this yet */
|
||||||
|
|
||||||
@ -1280,10 +1280,10 @@ static CURLcode smtp_block_statemach(struct connectdata *conn)
|
|||||||
static CURLcode smtp_init(struct connectdata *conn)
|
static CURLcode smtp_init(struct connectdata *conn)
|
||||||
{
|
{
|
||||||
struct SessionHandle *data = conn->data;
|
struct SessionHandle *data = conn->data;
|
||||||
struct FTP *smtp = data->state.proto.smtp;
|
struct SMTP *smtp = data->state.proto.smtp;
|
||||||
|
|
||||||
if(!smtp) {
|
if(!smtp) {
|
||||||
smtp = data->state.proto.smtp = calloc(sizeof(struct FTP), 1);
|
smtp = data->state.proto.smtp = calloc(sizeof(struct SMTP), 1);
|
||||||
if(!smtp)
|
if(!smtp)
|
||||||
return CURLE_OUT_OF_MEMORY;
|
return CURLE_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
@ -1385,7 +1385,7 @@ static CURLcode smtp_done(struct connectdata *conn, CURLcode status,
|
|||||||
{
|
{
|
||||||
CURLcode result = CURLE_OK;
|
CURLcode result = CURLE_OK;
|
||||||
struct SessionHandle *data = conn->data;
|
struct SessionHandle *data = conn->data;
|
||||||
struct FTP *smtp = data->state.proto.smtp;
|
struct SMTP *smtp = data->state.proto.smtp;
|
||||||
ssize_t bytes_written;
|
ssize_t bytes_written;
|
||||||
|
|
||||||
(void)premature;
|
(void)premature;
|
||||||
@ -1462,7 +1462,7 @@ static CURLcode smtp_perform(struct connectdata *conn, bool *connected,
|
|||||||
|
|
||||||
if(conn->data->set.opt_no_body) {
|
if(conn->data->set.opt_no_body) {
|
||||||
/* Requested no body means no transfer */
|
/* Requested no body means no transfer */
|
||||||
struct FTP *smtp = conn->data->state.proto.smtp;
|
struct SMTP *smtp = conn->data->state.proto.smtp;
|
||||||
smtp->transfer = FTPTRANSFER_INFO;
|
smtp->transfer = FTPTRANSFER_INFO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1574,7 +1574,7 @@ static CURLcode smtp_disconnect(struct connectdata *conn,
|
|||||||
/* Call this when the DO phase has completed */
|
/* Call this when the DO phase has completed */
|
||||||
static CURLcode smtp_dophase_done(struct connectdata *conn, bool connected)
|
static CURLcode smtp_dophase_done(struct connectdata *conn, bool connected)
|
||||||
{
|
{
|
||||||
struct FTP *smtp = conn->data->state.proto.smtp;
|
struct SMTP *smtp = conn->data->state.proto.smtp;
|
||||||
|
|
||||||
(void)connected;
|
(void)connected;
|
||||||
|
|
||||||
|
11
lib/smtp.h
11
lib/smtp.h
@ -53,6 +53,17 @@ typedef enum {
|
|||||||
SMTP_LAST /* never used */
|
SMTP_LAST /* never used */
|
||||||
} smtpstate;
|
} smtpstate;
|
||||||
|
|
||||||
|
/* This SMTP struct is used in the SessionHandle. All SMTP data that is
|
||||||
|
connection-oriented must be in smtp_conn to properly deal with the fact that
|
||||||
|
perhaps the SessionHandle is changed between the times the connection is
|
||||||
|
used. */
|
||||||
|
struct SMTP {
|
||||||
|
curl_off_t *bytecountp;
|
||||||
|
char *user; /* User name string */
|
||||||
|
char *passwd; /* Password string */
|
||||||
|
curl_pp_transfer transfer;
|
||||||
|
};
|
||||||
|
|
||||||
/* smtp_conn is used for struct connection-oriented data in the connectdata
|
/* smtp_conn is used for struct connection-oriented data in the connectdata
|
||||||
struct */
|
struct */
|
||||||
struct smtp_conn {
|
struct smtp_conn {
|
||||||
|
@ -1294,7 +1294,7 @@ struct UrlState {
|
|||||||
struct SSHPROTO *ssh;
|
struct SSHPROTO *ssh;
|
||||||
struct IMAP *imap;
|
struct IMAP *imap;
|
||||||
struct POP3 *pop3;
|
struct POP3 *pop3;
|
||||||
struct FTP *smtp;
|
struct SMTP *smtp;
|
||||||
} proto;
|
} proto;
|
||||||
/* current user of this SessionHandle instance, or NULL */
|
/* current user of this SessionHandle instance, or NULL */
|
||||||
struct connectdata *current_conn;
|
struct connectdata *current_conn;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user