diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pop3.c | 84 | ||||
| -rw-r--r-- | lib/pop3.h | 22 | 
2 files changed, 45 insertions, 61 deletions
| diff --git a/lib/pop3.c b/lib/pop3.c index 91b544a0a..99dc6c537 100644 --- a/lib/pop3.c +++ b/lib/pop3.c @@ -207,26 +207,24 @@ static const struct Curl_handler Curl_handler_pop3s_proxy = {  #endif  #endif -/* function that checks for a pop3 status code at the start of the given -   string */ -static int pop3_endofresp(struct pingpong *pp, -                          int *resp) +/* Function that checks for an ending pop3 status code at the start of the +   given string */ +static int pop3_endofresp(struct pingpong *pp, int *resp)  {    char *line = pp->linestart_resp;    size_t len = pp->nread_resp; -  if(((len >= 3) && !memcmp("+OK", line, 3)) || -     ((len >= 4) && !memcmp("-ERR", line, 4))) { -    *resp = line[1]; /* O or E */ -    return TRUE; -  } +  if((len < 3 || memcmp("+OK", line, 3)) &&  +     (len < 4 || memcmp("-ERR", line, 4))) +  return FALSE; /* Nothing for us */ + +  *resp = line[1]; /* O or E */ -  return FALSE; /* nothing for us */ +  return TRUE;  }  /* This is the ONLY way to change POP3 state! */ -static void state(struct connectdata *conn, -                  pop3state newstate) +static void state(struct connectdata *conn, pop3state newstate)  {  #if defined(DEBUGBUILD) && !defined(CURL_DISABLE_VERBOSE_STRINGS)    /* for debug purposes */ @@ -267,8 +265,7 @@ static CURLcode pop3_state_user(struct connectdata *conn)  }  /* For the POP3 "protocol connect" and "doing" phases only */ -static int pop3_getsock(struct connectdata *conn, -                        curl_socket_t *socks, +static int pop3_getsock(struct connectdata *conn, curl_socket_t *socks,                          int numsocks)  {    return Curl_pp_getsock(&conn->proto.pop3c.pp, socks, numsocks); @@ -283,7 +280,7 @@ static void pop3_to_pop3s(struct connectdata *conn)  #define pop3_to_pop3s(x) Curl_nop_stmt  #endif -/* for the initial server greeting */ +/* For the initial server greeting */  static CURLcode pop3_state_servergreet_resp(struct connectdata *conn,                                              int pop3code,                                              pop3state instate) @@ -311,7 +308,7 @@ static CURLcode pop3_state_servergreet_resp(struct connectdata *conn,    return result;  } -/* for STARTTLS responses */ +/* For STARTTLS responses */  static CURLcode pop3_state_starttls_resp(struct connectdata *conn,                                           int pop3code,                                           pop3state instate) @@ -345,7 +342,7 @@ static CURLcode pop3_state_starttls_resp(struct connectdata *conn,    return result;  } -/* for USER responses */ +/* For USER responses */  static CURLcode pop3_state_user_resp(struct connectdata *conn,                                       int pop3code,                                       pop3state instate) @@ -372,7 +369,7 @@ static CURLcode pop3_state_user_resp(struct connectdata *conn,    return result;  } -/* for PASS responses */ +/* For PASS responses */  static CURLcode pop3_state_pass_resp(struct connectdata *conn,                                       int pop3code,                                       pop3state instate) @@ -392,7 +389,7 @@ static CURLcode pop3_state_pass_resp(struct connectdata *conn,    return result;  } -/* for the command response */ +/* For the command response */  static CURLcode pop3_state_command_resp(struct connectdata *conn,                                          int pop3code,                                          pop3state instate) @@ -447,7 +444,7 @@ static CURLcode pop3_state_command_resp(struct connectdata *conn,    return result;  } -/* start the DO phase for the command */ +/* Start the DO phase for the command */  static CURLcode pop3_command(struct connectdata *conn)  {    CURLcode result = CURLE_OK; @@ -537,7 +534,7 @@ static CURLcode pop3_statemach_act(struct connectdata *conn)    return result;  } -/* called repeatedly until done from multi.c */ +/* Called repeatedly until done from multi.c */  static CURLcode pop3_multi_statemach(struct connectdata *conn, bool *done)  {    struct pop3_conn *pop3c = &conn->proto.pop3c; @@ -563,10 +560,8 @@ static CURLcode pop3_easy_statemach(struct connectdata *conn)    return result;  } -/* - * Allocate and initialize the struct POP3 for the current SessionHandle.  If - * need be. - */ +/* Allocate and initialize the POP3 struct for the current SessionHandle if +   required */  static CURLcode pop3_init(struct connectdata *conn)  {    struct SessionHandle *data = conn->data; @@ -591,16 +586,18 @@ static CURLcode pop3_init(struct connectdata *conn)    return CURLE_OK;  } -/* - * pop3_connect() should do everything that is to be considered a part of - * the connection phase. +/*********************************************************************** + * + * pop3_connect() + * + * This function should do everything that is to be considered a part of the + * connection phase.   *   * The variable 'done' points to will be TRUE if the protocol-layer connect   * phase is done when this function returns, or FALSE is not. When called as   * a part of the easy interface, it will always be TRUE.   */ -static CURLcode pop3_connect(struct connectdata *conn, -                             bool *done) /* see description above */ +static CURLcode pop3_connect(struct connectdata *conn, bool *done)  {    CURLcode result;    struct pop3_conn *pop3c = &conn->proto.pop3c; @@ -698,11 +695,8 @@ static CURLcode pop3_done(struct connectdata *conn, CURLcode status,   * This is the actual DO function for POP3. Get a file/directory according to   * the options previously setup.   */ - -static -CURLcode pop3_perform(struct connectdata *conn, -                     bool *connected,  /* connect status after PASV / PORT */ -                     bool *dophase_done) +static CURLcode pop3_perform(struct connectdata *conn, bool *connected, +                             bool *dophase_done)  {    /* this is POP3 and no proxy */    CURLcode result = CURLE_OK; @@ -785,7 +779,6 @@ static CURLcode pop3_do(struct connectdata *conn, bool *done)   * This should be called before calling sclose().  We should then wait for the   * response from the server before returning. The calling code should then try   * to close the connection. - *   */  static CURLcode pop3_quit(struct connectdata *conn)  { @@ -861,8 +854,7 @@ static CURLcode pop3_parse_custom_request(struct connectdata *conn)  }  /* call this when the DO phase has completed */ -static CURLcode pop3_dophase_done(struct connectdata *conn, -                                  bool connected) +static CURLcode pop3_dophase_done(struct connectdata *conn, bool connected)  {    struct FTP *pop3 = conn->data->state.proto.pop3; @@ -876,8 +868,7 @@ static CURLcode pop3_dophase_done(struct connectdata *conn,  }  /* called from multi.c while DOing */ -static CURLcode pop3_doing(struct connectdata *conn, -                               bool *dophase_done) +static CURLcode pop3_doing(struct connectdata *conn, bool *dophase_done)  {    CURLcode result;    result = pop3_multi_statemach(conn, dophase_done); @@ -899,7 +890,6 @@ static CURLcode pop3_doing(struct connectdata *conn,   *   * Performs all commands done before a regular transfer between a local and a   * remote host. - *   */  static CURLcode pop3_regular_transfer(struct connectdata *conn,                                        bool *dophase_done) @@ -951,11 +941,9 @@ static CURLcode pop3_setup_connection(struct connectdata * conn)  #endif      } -    /* -     * We explicitly mark this connection as persistent here as we're doing -     * POP3 over HTTP and thus we accidentally avoid setting this value -     * otherwise. -     */ +    /* We explicitly mark this connection as persistent here as we're doing +       POP3 over HTTP and thus we accidentally avoid setting this value +       otherwise. */      conn->bits.close = FALSE;  #else      failf(data, "POP3 over http proxy requires HTTP support built-in!"); @@ -968,10 +956,6 @@ static CURLcode pop3_setup_connection(struct connectdata * conn)    return CURLE_OK;  } -/* this is the 5-bytes End-Of-Body marker for POP3 */ -#define POP3_EOB "\x0d\x0a\x2e\x0d\x0a" -#define POP3_EOB_LEN 5 -  /*   * This function scans the body after the end-of-body and writes everything   * until the end is found. diff --git a/lib/pop3.h b/lib/pop3.h index e30c3b3b2..99b514e4c 100644 --- a/lib/pop3.h +++ b/lib/pop3.h @@ -26,15 +26,15 @@   * POP3 unique setup   ***************************************************************************/  typedef enum { -  POP3_STOP,        /* do nothing state, stops the state machine */ -  POP3_SERVERGREET, /* waiting for the initial greeting immediately after -                       a connect */ +  POP3_STOP,         /* do nothing state, stops the state machine */ +  POP3_SERVERGREET,  /* waiting for the initial greeting immediately after +                        a connect */    POP3_USER,    POP3_PASS,    POP3_STARTTLS,    POP3_COMMAND,    POP3_QUIT, -  POP3_LAST  /* never used */ +  POP3_LAST          /* never used */  } pop3state;  /* pop3_conn is used for struct connection-oriented data in the connectdata @@ -52,12 +52,12 @@ struct pop3_conn {  extern const struct Curl_handler Curl_handler_pop3;  extern const struct Curl_handler Curl_handler_pop3s; -/* - * This function scans the body after the end-of-body and writes everything - * until the end is found. - */ -CURLcode Curl_pop3_write(struct connectdata *conn, -                         char *str, -                         size_t nread); +/* This is the 5-bytes End-Of-Body marker for POP3 */ +#define POP3_EOB "\x0d\x0a\x2e\x0d\x0a" +#define POP3_EOB_LEN 5 + +/* This function scans the body after the end-of-body and writes everything + * until the end is found */ +CURLcode Curl_pop3_write(struct connectdata *conn, char *str, size_t nread);  #endif /* HEADER_CURL_POP3_H */ | 
