Why will a TCP Server send a FIN immediately after accepting a connection?
Upon deep analysis, the following was found to be the reason of the problem:
When a Client tries TCP connect, even if the server is not currently calling accept, the connection will pass. This will happen if server has called 'listen' function and it will keep accepting the connections till backlog limit is reached.
But, if the application process exceeds the limit of max file descriptors it can use, then when server calls accept, then it realizes that there are no file descriptors available to be allocated for the socket and fails the accept call and the TCP connection sending a FIN to other side.
I just though of posting this finding here. I am still leaving the accepted answer as that of Habbie's.
Thanks to all those who answered this question.
FIN usually means the other side called shutdown(..)
on the socket.