Subject: smtp client busylooping

From: Eugene Crosser <[email-masked]>
Date: Fri, 14 Jun 2002 12:26:55 +0400 (MSD)

In transports/smtp/smtp.c, around line 3666.  When infd equals to -1 (dunno
why), select_sleep returns 0 (!) and errno=EBADF (naturally).  Because
err is not less than zero, smtpclose()/break is not executed, the the
program drops to "goto reread_line" (line 3684), and returns to
smtp_nbread() call at line 3651.  Naturally, here len=-1, errno=EBADF.

It seems that the problem is here:

transports/smtp/smtp.c:3395
        if (fd > 0)
          _Z_FD_SET(fd,rdmask);
        else {
          fd = -fd;
          _Z_FD_SET(fd,wrmask);
        }

select() is run on fd 1 and legitimately returns "it is possible to write
to stdout".  But then, smtp_nbread() is performed on fd=-1 and fails.

Apparently the source of the problem is that smtp_sync() is called on
and SS with already closed SS->smtpfd.  But then, smtp_sync() should have
been more loyal to such errors...

--
Eugene Crosser, head of Internet Applications section, +7 501 787 1000
ROL, Teleross, Golden Telecom, http://user.rol.ru/~crosser/

-
To unsubscribe from this list: send the line "unsubscribe zmailer" in
the body of a message to [email-masked]