Hi all,
I might have discovered the cause for this bug. The BSD socket implementation in Linux will by default block any new connections to a port which has been in use by an application 60 seconds after the application has been terminated to give incoming packets send when the connection was still valid to be rejected and not accepted by a new application. To disable this feature a socket must manually be configured to disregard this grace period. I have made a number of tests and it seems to match perfectly with this behavior.
man 7 socket:
"SO_REUSEADDR
Indicates that the rules used in validating addresses supplied in a bind(2) call should allow reuse of local addresses. For AF_INET sockets this means that a socket may bind, except when there is an active listening socket bound to the address. When the listening socket is bound to INADDR_ANY with a specific port then it is not possible to bind to this port for any local address. Argument is an integer boolean flag."A more comprehensive paper on the subject can be found here:http://www.serverframework.com/asyn...tions-for-protocols-and-scalable-servers.html
I might have discovered the cause for this bug. The BSD socket implementation in Linux will by default block any new connections to a port which has been in use by an application 60 seconds after the application has been terminated to give incoming packets send when the connection was still valid to be rejected and not accepted by a new application. To disable this feature a socket must manually be configured to disregard this grace period. I have made a number of tests and it seems to match perfectly with this behavior.
man 7 socket:
"SO_REUSEADDR
Indicates that the rules used in validating addresses supplied in a bind(2) call should allow reuse of local addresses. For AF_INET sockets this means that a socket may bind, except when there is an active listening socket bound to the address. When the listening socket is bound to INADDR_ANY with a specific port then it is not possible to bind to this port for any local address. Argument is an integer boolean flag."A more comprehensive paper on the subject can be found here:http://www.serverframework.com/asyn...tions-for-protocols-and-scalable-servers.html