SYN/ACK delays and 139/445

tridge at samba.org tridge at samba.org
Tue Oct 25 11:49:22 GMT 2005


Volker,

As discussed on IRC, what windows seems to do for SMB connections is
this:

  - fire off a SYN on 445
  - start a 1 millisecond timer
  - if 445 connect succeeds, then all done
  - wait for timer to fire
  - on timer start the 139 connect

This gives predictable choice of 445 if possible, which is nice
(non-deterministic behaviour in client libs is nasty) and avoids the
long SYN/ACK wait when 445 is blackholed by a firewall.

The one thing windows seems to do wrong is that if port 445 gives a
RST then it still waits for the 1 millisecond timer to expire before
trying the 139 connect. That's a bug, but a fairly minor one. It just
means that for servers with 445 not listening there is a needless 1 ms
wait.

This should be pretty easy to implement right with our events
code. We'll just need to be careful to handle the case where the
network is a bit slow, and we end up with both ports connected.  That
will be tricky to test, so it will need to be coded carefully to
ensure we don't leak a fd.

Cheers, Tridge


More information about the samba-technical mailing list