2010/9/27 Guillaume Du Pasquier <guillaume.dupasqu...@sensometrix.ch>:
> In both cases, the client socket (pgadmin or my program) remains in > TIME_WAIT state. > > I have used wireshark to sniff the TCP protocol. > > We have at the end of a connection: > > Client Server > > ---> FIN,ACK ---> > <--- FIN,ACK <--- > ---> ACK ---> > > This ends up in a TIME_WAIT state. The TCP protocol should be According to the Two Generals' Problem [1], one of the sides necessarily doesn't know whether the other side has received its last packet. Therefore, TCP lets one of the sides sit in TIME_WAIT status for as long as any packets could in principle survive on the network (typically defined as 2 minutes on IP networks IIRC), and potentially disturb a new connection between the same (dst IP, dst port, src IP, src port) combination. [1] <URL:http://en.wikipedia.org/wiki/Two_Generals'_Problem> > Client Server > > ---> FIN,ACK ---> > <--- ACK <--- > <--- FIN,ACK <--- AFAIK, this last ACK (in above packet) is not needed: the server can ACK the client's FIN _while_ it sends its own FIN (by using an appropriate sequence number, as FIN "uses" one byte in the sequence). > ---> ACK ---> > > I suppose there is a bug in the postgresql server that do not send an ack to > the client. I don't think so. Nicolas -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers