Tomasz Sterna <to...@xiaoka.com> writes:

> jabberd2 has support for application layer keepalives.
>
> See io.keepalive [1][2] options.
> Setting this up will flush single whitespace character over the wire
> when the connection dangs idle. This triggers the TCP layer connection
> validation.

Great - thanks very much for that pointer.

> Having said that, I am running my server without both application layer
> and TCP keepalives turned on and see no issues with dangling
> connections.

I run two jabberd2 servers.  One of them is not behind a buggy firewall
and does not have dangling connections.  However, I'm not sure anyone is
using a phone.

> But.. I had them a lot, when my server was behind a buggy Cisco router
> doing NAT. It was dropping idle connections from its NAT table without
> telling anyone, so later when mobile network closed a connection it
> silently dropped RST packets not knowing who to NAT them to. This was
> causing a lot of dangling connections on my server.

This is probably more or less the issue, and if so I can't fix it.

Are you saying that a cell provider tracks TCP state and when the data
connection is lost sends RST packets for open connections?   I hadn't
realized that, but it seems obviously sensible if a little bit of a
layer violation.

Attachment: signature.asc
Description: PGP signature

Reply via email to