]> granicus.if.org Git - curl/commitdiff
pingpong: Optimised the endofresp() function
authorSteve Holme <steve_holme@hotmail.com>
Tue, 12 Feb 2013 18:08:48 +0000 (18:08 +0000)
committerSteve Holme <steve_holme@hotmail.com>
Tue, 12 Feb 2013 18:08:48 +0000 (18:08 +0000)
Reworked the pp->endofresp() function so that the conndata, line and
line length are passed down to it just as with Curl_client_write()
rather than each implementation of the function having to query
these values.

Additionally changed the int return type to bool as this is more
representative of the function's usage.

lib/ftp.c
lib/imap.c
lib/pingpong.c
lib/pingpong.h
lib/pop3.c
lib/smtp.c

index 469b8874969e4810e5564e0b5aecf415ab74f071..228d834a23b9ae670046a3adaa1ede3a3c059303 100644 (file)
--- a/lib/ftp.c
+++ b/lib/ftp.c
@@ -598,17 +598,17 @@ static CURLcode AllowServerConnect(struct connectdata *conn, bool *connected)
 /* macro to check for the last line in an FTP server response */
 #define LASTLINE(line) (STATUSCODE(line) && (' ' == line[3]))
 
-static int ftp_endofresp(struct pingpong *pp,
-                         int *code)
+static bool ftp_endofresp(struct connectdata *conn, char *line, size_t len,
+                          int *code)
 {
-  char *line = pp->linestart_resp;
-  size_t len = pp->nread_resp;
+  (void)conn;
 
   if((len > 3) && LASTLINE(line)) {
     *code = curlx_sltosi(strtol(line, NULL, 10));
-    return 1;
+    return TRUE;
   }
-  return 0;
+
+  return FALSE;
 }
 
 static CURLcode ftp_readresp(curl_socket_t sockfd,
index 9a5894755d5c665802a7b2a95b60e659b322d95a..c4bddab7a30eb019edd8930af7c227d1a8886cd6 100644 (file)
@@ -327,11 +327,10 @@ static char* imap_atom(const char* str)
 /* Function that checks for an ending IMAP status code at the start of the
    given string but also detects various capabilities from the CAPABILITY
    response including the supported authentication mechanisms. */
-static int imap_endofresp(struct pingpong *pp, int *resp)
+static bool imap_endofresp(struct connectdata *conn, char *line, size_t len,
+                           int *resp)
 {
-  char *line = pp->linestart_resp;
-  size_t len = pp->nread_resp;
-  struct imap_conn *imapc = &pp->conn->proto.imapc;
+  struct imap_conn *imapc = &conn->proto.imapc;
   const char *id = imapc->resptag;
   size_t id_len = strlen(id);
   size_t wordlen;
index 16b4ad37e4446183211c3c446d13274c956337e3..330b47f76cdff3020efa3da14db5ed257a459ad7 100644 (file)
@@ -395,7 +395,7 @@ CURLcode Curl_pp_readresp(curl_socket_t sockfd,
           if(result)
             return result;
 
-          if(pp->endofresp(pp, code)) {
+          if(pp->endofresp(conn, pp->linestart_resp, perline, code)) {
             /* This is the end of the last line, copy the last line to the
                start of the buffer and zero terminate, for old times sake (and
                krb4)! */
index b48c1ed61a505fc8438c35ac5815eb690a4490e4..b99070f4fc71103c0b1ec36a0b997ac426c268c6 100644 (file)
@@ -64,7 +64,7 @@ struct pingpong {
 
   CURLcode (*statemach_act)(struct connectdata *conn);
 
-  int (*endofresp)(struct pingpong *pp, int *code);
+  bool (*endofresp)(struct connectdata *conn, char *ptr, size_t len, int *code);
 };
 
 /*
index 398db01db8ba84a47a4e81c35ddd8f0579c3f78c..263d8703a19c3f49fe99addf30a546e5d27a0fc0 100644 (file)
@@ -220,11 +220,9 @@ static void pop3_to_pop3s(struct connectdata *conn)
    given string, but also detects the APOP timestamp from the server greeting
    as well as the supported authentication types and allowed SASL mechanisms
    from the CAPA response. */
-static int pop3_endofresp(struct pingpong *pp, int *resp)
+static bool pop3_endofresp(struct connectdata *conn, char *line, size_t len,
+                           int *resp)
 {
-  char *line = pp->linestart_resp;
-  size_t len = strlen(pp->linestart_resp);
-  struct connectdata *conn = pp->conn;
   struct pop3_conn *pop3c = &conn->proto.pop3c;
   size_t wordlen;
   size_t i;
index 3c82a4f19b163dcf42659bbd32b31b2e7c84fdd7..68dbf9a2634933d0a62ffbe3228443562cac93b6 100644 (file)
@@ -216,11 +216,9 @@ static void smtp_to_smtps(struct connectdata *conn)
 /* Function that checks for an ending SMTP status code at the start of the
    given string, but also detects various capabilities from the EHLO response
    including the supported authentication mechanisms. */
-static int smtp_endofresp(struct pingpong *pp, int *resp)
+static bool smtp_endofresp(struct connectdata *conn, char *line, size_t len,
+                           int *resp)
 {
-  char *line = pp->linestart_resp;
-  size_t len = strlen(pp->linestart_resp);
-  struct connectdata *conn = pp->conn;
   struct smtp_conn *smtpc = &conn->proto.smtpc;
   int result = FALSE;
   size_t wordlen;