6411N/AReason: Solaris leave socket in TIME_WAIT status
6411N/AReasonable to upstream?: Not much for Linux.
6411N/ANote: This patch do not look "pretty" but its code
6411N/Ais re-used from the original patch which colided
6411N/Awith the proftpd-1.3.6 code. During proftpd update
6411N/Athe binaries were tested on huge # of small files
6411N/A(!passive) it looked good so the original patch was
6411N/ANow it has returned as regression from supercluster
6411N/AFinal fix of this problem on Solaris will need further
6411N/Adiscussion with community then it will be probably fixed
6411N/A static int data_active_open(char *reason, off_t size) {
6411N/A unsigned char *root_revoke = NULL;
6411N/A+ for(;;) { /* begin of endless loop */
6411N/A (main_server->tcp_rcvbuf_override ? main_server->tcp_rcvbuf_len : 0), 0,
6411N/A main_server->tcp_keepalive);
6411N/A 0, (main_server->tcp_sndbuf_override ? main_server->tcp_sndbuf_len : 0),
6411N/A+ /* Wait up to MSL to avoid TIME_WAIT. */
6411N/A+ continue; /* continue in endless loop */
6411N/A "Error connecting to %s#%u for active data transfer: %s",
6411N/A+ } else break; /* finish the endless loop */
6411N/A+ } /* end of endless loop */