diff options
author | Steve Holme <steve_holme@hotmail.com> | 2012-02-22 10:44:34 +0000 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2012-02-23 23:29:03 +0100 |
commit | 5430007222e0325a1c5e0359ecde43886cef61af (patch) | |
tree | a8753bb1968a2d05959242e35a9c2c0597da636e | |
parent | 779fa13ef9e05f6d6cf865ecb113d236b114f72f (diff) | |
download | curl-5430007222e0325a1c5e0359ecde43886cef61af.tar.gz |
SMTP: Added support for returning SMTP response codes
Set the conn->data->info.httpcode variable in smtp_statemach_act() to
allow Curl_getinfo() to return the SMTP response code via the
CURLINFO_RESPONSE_CODE action.
-rw-r--r-- | docs/libcurl/curl_easy_getinfo.3 | 14 | ||||
-rw-r--r-- | lib/smtp.c | 9 |
2 files changed, 14 insertions, 9 deletions
diff --git a/docs/libcurl/curl_easy_getinfo.3 b/docs/libcurl/curl_easy_getinfo.3 index eb4e900dd..096813609 100644 --- a/docs/libcurl/curl_easy_getinfo.3 +++ b/docs/libcurl/curl_easy_getinfo.3 @@ -5,7 +5,7 @@ .\" * | (__| |_| | _ <| |___ .\" * \___|\___/|_| \_\_____| .\" * -.\" * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. +.\" * Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al. .\" * .\" * This software is licensed as described in the file COPYING, which .\" * you should have received as part of this distribution. The terms @@ -44,11 +44,13 @@ The following information can be extracted: .IP CURLINFO_EFFECTIVE_URL Pass a pointer to a char pointer to receive the last used effective URL. .IP CURLINFO_RESPONSE_CODE -Pass a pointer to a long to receive the last received HTTP or FTP code. This -option was known as CURLINFO_HTTP_CODE in libcurl 7.10.7 and earlier. This -will be zero if no server response code has been received. Note that a proxy's -CONNECT response should be read with \fICURLINFO_HTTP_CONNECTCODE\fP and not -this. +Pass a pointer to a long to receive the last received HTTP, FTP or SMTP +response code. This option was previously known as CURLINFO_HTTP_CODE in +libcurl 7.10.7 and earlier. The value will be zero if no server response code +has been received. Note that a proxy's CONNECT response should be read with +\fICURLINFO_HTTP_CONNECTCODE\fP and not this. + +Support for SMTP responses added in 7.25.0. .IP CURLINFO_HTTP_CONNECTCODE Pass a pointer to a long to receive the last received proxy response code to a CONNECT request. diff --git a/lib/smtp.c b/lib/smtp.c index b0b4d1aaa..381e3e240 100644 --- a/lib/smtp.c +++ b/lib/smtp.c @@ -1108,6 +1108,10 @@ static CURLcode smtp_statemach_act(struct connectdata *conn) if(result) return result; + if(smtpc->state != SMTP_QUIT) + /* store the latest code for later retrieval */ + data->info.httpcode = smtpcode; + if(smtpcode) { /* we have now received a full SMTP server response */ switch(smtpc->state) { @@ -1524,6 +1528,7 @@ static CURLcode smtp_quit(struct connectdata *conn) result = Curl_pp_sendf(&conn->proto.smtpc.pp, "QUIT"); if(result) return result; + state(conn, SMTP_QUIT); result = smtp_easy_statemach(conn); @@ -1564,7 +1569,6 @@ static CURLcode smtp_disconnect(struct connectdata *conn, /* This won't already be freed in some error cases */ Curl_safefree(smtpc->domain); - smtpc->domain = NULL; return CURLE_OK; } @@ -1581,8 +1585,7 @@ static CURLcode smtp_dophase_done(struct connectdata *conn, /* no data to transfer */ Curl_setup_transfer(conn, -1, -1, FALSE, NULL, -1, NULL); - free(smtpc->domain); - smtpc->domain = NULL; + Curl_safefree(smtpc->domain); return CURLE_OK; } |