I have a client tcp socket (in c++) that has a loop where it retries to open a socket and connect to a server at a certain interval until it succeeds.
A bug in the program caused close
not to be called on the file descriptor after a failed connect, and the same (open) descriptor was used again when calling socket
and connect
in the next iteration of the loop when retrying to reconnect.
On Linux machines this did not cause any problems, while on HPUX it eventually cause a error 24 - 'Too many open files'' - lsof showed these as TCP *:* (IDLE)
.
What is the difference here between Linux and HPUX?