http://bugzilla.spamassassin.org/show_bug.cgi?id=3917





------- Additional Comments From [EMAIL PROTECTED]  2004-11-21 00:25 -------
Ok, I read the thread over more carefully and did some experiments. It doesn't
seem to have anything to do with our problem. I already early in this whole
issue eliminated my Symantec firewall as a cause by uninstalling it... I had
hoped when I read the excerpt that I quoted here which mentioned registry
entries that he had found some change to the registry that was not undone by an
uninstall. But no, he just talked about forcing NIS not to load at boot time,
which is certainly taken care of by an uninstall. Also, tracking back to the
beginning of the thread it turns out that he was seeing a problem with
shutdown() killing the connection immediately even with small messages. What we
are dealing with does seem like Windows behavior that happens when more than 50k
bytes are sent out before the shutdown.

I still find it really strange that I have found no mention of this anywhere
through Google. I guess it is unusual for a protocol to have one side send a
very long data stream without then waiting for some kind of acknowledgement from
the other side?

Here's something that might work with minimal impact on the use of spamd/spamc
on other platforms. The only problem is that it requires a small change to spamc
and a change to spamd under Cygwin that causes it to only work with the newer
spamc. But old spamc will continue to work with spamd on non-Windows platforms.

Right now spamc writes the raw message to the spamd socket, does a shutdown of
the write direction (SHUT_WR), then reads the filtered message from the spamd
socket, then does a shutdown of the read direction (SHUT_RD) and a closesocket.

What I propose is that it add a command line option to spamc to not do the first
shutdown. The second shutdown will always be SHUT_RDWR. That way, if spamc is
being used with a Windows spamd, the option will allow spamd to check for the
socket having been shut down by the client before it calls shutdown. Spamd can
do that check only if it is running under Cygwin. The check can be with a
timeout so the worst case it is equivalent to sleeping before the call to
shutdown. The behavior of spamd under Cygwin with an old spamc would be the same
as it is now, but no worse.

I'll test out the idea and put up a patch for spamd.raw and libspamc.c unless
someone has objections to that approach.




------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

Reply via email to