aboutsummaryrefslogtreecommitdiffstats
path: root/smtp.c
diff options
context:
space:
mode:
authorSunil Shetye <sunilshetye@rocketmail.com>2011-05-02 00:35:00 +0530
committerMatthias Andree <matthias.andree@gmx.de>2011-05-03 11:37:18 +0200
commit81242009035395b10cca2a23a7ba7e85cc6d3d76 (patch)
tree5f912c98abdede679be874318fcaf03ba3068ca8 /smtp.c
parent72ce8bce8dd655b6aefa33d0a74e883dad5202b5 (diff)
downloadfetchmail-81242009035395b10cca2a23a7ba7e85cc6d3d76.tar.gz
fetchmail-81242009035395b10cca2a23a7ba7e85cc6d3d76.tar.bz2
fetchmail-81242009035395b10cca2a23a7ba7e85cc6d3d76.zip
Call strlen() only once when removing CRLF from a line
Diffstat (limited to 'smtp.c')
-rw-r--r--smtp.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/smtp.c b/smtp.c
index 611bad07..1c99c696 100644
--- a/smtp.c
+++ b/smtp.c
@@ -185,15 +185,16 @@ int SMTP_ehlo(int sock, char smtp_mode, const char *host, char *name, char *pass
*opt = 0;
while ((SockRead(sock, smtp_response, sizeof(smtp_response)-1)) != -1)
{
- int n = strlen(smtp_response);
+ size_t n;
set_timeout(0);
(void)set_signal_handler(SIGALRM, alrmsave);
- if (smtp_response[strlen(smtp_response)-1] == '\n')
- smtp_response[strlen(smtp_response)-1] = '\0';
- if (smtp_response[strlen(smtp_response)-1] == '\r')
- smtp_response[strlen(smtp_response)-1] = '\0';
+ n = strlen(smtp_response);
+ if (n > 0 && smtp_response[n-1] == '\n')
+ smtp_response[--n] = '\0';
+ if (n > 0 && smtp_response[n-1] == '\r')
+ smtp_response[--n] = '\0';
if (n < 4)
return SM_ERROR;
smtp_response[n] = '\0';
@@ -329,10 +330,9 @@ int SMTP_ok(int sock, char smtp_mode, int mintimeout)
n = strlen(reply);
if (n > 0 && reply[n-1] == '\n')
- n--;
+ reply[--n] = '\0';
if (n > 0 && reply[n-1] == '\r')
- n--;
- reply[n] = '\0';
+ reply[--n] = '\0';
/* stomp over control characters */
for (i = reply; *i; i++)