[IRCServices] modules/mail/smtp.c bug

Andrew Church achurch at achurch.org
Thu Sep 2 09:42:12 PDT 2004


     Fixed, thanks for the report.  (Actually, looking over the code I'm
amazed it worked at all...)

  --Andrew Church
    achurch at achurch.org
    http://achurch.org/

>i was just setting up ircservices today and everything is working great, 
>except sending mail out through the relay. i'm running 5.0.38. i apologize 
>if this is already know and i'm just cluttering up the list.
>
>i'm using my isp as the relay (mailhost.gate.net:25) and they return 
>multiple lines upon connecting.
>
>220-smtp6.mindspring.com ESMTP Exim 3.33 #1 Wed, 01 Sep 2004 14:20:42 -0400
>220-NO UCE.  EarthLink does not authorize the use of its computers or network
>220 equipment to deliver, accept, transmit, or distribute unsolicited e-mail.
>
>and it seems that smtp.c isn't correctly handling the multiple lines.
>
>around line 177 of smtp.c is
>   if (!si->replycode) {
>...
>    si->replycode = strtol(buf, &s, 10);
>...
>       si->replychar = buf[3];
>}
>
>what's happening is the first time through
>220-smtp6.mindspring.com ESMTP Exim 3.33 #1 Wed, 01 Sep 2004 14:20:42 -0400
>
>is getting parsed out as
>220 and '-'
>the next time through, si->replycode is still 220 so it's not reparsed. the 
>third response:
>220 equipment to deliver, accept, transmit, or distribute unsolicited e-mail.
>
>should be parsed as 220 and ' ' but it never is.
>
>the 'fix' i implemented here that seems to work was to take the following 
>and break it up:
>
>old:
>     if (!have_eol || si->replychar != ' ')
>         return;
>
>new:
>     if (!have_eol)
>         return;
>
>     if (si->replychar != ' ')
>     {
>         si->replycode = 0;
>         return;
>     }
>
>that should cause si->replycode to be correctly parsed for each received line.
>
>anyway, hope this helps somebody else having the same troubles.
>
>thanks for the ircservices,
>-gregg
>
>
>------------------------------------------------------------------
>To unsubscribe or change your subscription options, visit:
>http://www.ircservices.za.net/mailman/listinfo/ircservices