]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
smtp: Moved the sending of the AUTH command into a separate function
authorSteve Holme <steve_holme@hotmail.com>
Wed, 18 Dec 2013 07:10:22 +0000 (07:10 +0000)
committerSteve Holme <steve_holme@hotmail.com>
Wed, 18 Dec 2013 00:11:25 +0000 (00:11 +0000)
lib/smtp.c

index d4097c5672fdd55f09b2a73fef97813e0d86b94d..4c12a102b6018ba442e2457054c7b97e5f743de5 100644 (file)
@@ -428,6 +428,39 @@ static CURLcode smtp_perform_upgrade_tls(struct connectdata *conn)
   return result;
 }
 
+/***********************************************************************
+ *
+ * smtp_perform_auth()
+ *
+ * Sends an AUTH command allowing the client to login with the given SASL
+ * authentication mechanism.
+ */
+static CURLcode smtp_perform_auth(struct connectdata *conn,
+                                  const char *mech,
+                                  const char *initresp, size_t len,
+                                  smtpstate state1, smtpstate state2)
+{
+  CURLcode result = CURLE_OK;
+  struct smtp_conn *smtpc = &conn->proto.smtpc;
+
+  if(initresp && 8 + strlen(mech) + len <= 512) { /* AUTH <mech> ...<crlf> */
+    /* Send the AUTH command with the initial response */
+    result = Curl_pp_sendf(&smtpc->pp, "AUTH %s %s", mech, initresp);
+
+    if(!result)
+      state(conn, state2);
+  }
+  else {
+    /* Send the AUTH command */
+    result = Curl_pp_sendf(&smtpc->pp, "AUTH %s", mech);
+
+    if(!result)
+      state(conn, state1);
+  }
+
+  return result;
+}
+
 /***********************************************************************
  *
  * smtp_perform_authentication()
@@ -525,19 +558,7 @@ static CURLcode smtp_perform_authentication(struct connectdata *conn)
   if(!result) {
     if(mech) {
       /* Perform SASL based authentication */
-      if(initresp &&
-         8 + strlen(mech) + len <= 512) { /* AUTH <mech> ...<crlf> */
-        result = Curl_pp_sendf(&smtpc->pp, "AUTH %s %s", mech, initresp);
-
-        if(!result)
-          state(conn, state2);
-      }
-      else {
-        result = Curl_pp_sendf(&smtpc->pp, "AUTH %s", mech);
-
-        if(!result)
-          state(conn, state1);
-      }
+      result = smtp_perform_auth(conn, mech, initresp, len, state1, state2);
 
       Curl_safefree(initresp);
     }