Hi,

I currently have an issue with my ICS THttpServer-based server application.
One customer complaints that HTTP GET requests work when using one
client (Windows Media Player) but not when using another (VLC). When
looking at the Wireshark trace file the problem seems to be that the
affected client is processing the received data in bursts:

- server sends ~200k data until TCP window on client side is exhausted
- connection is idle for a few seconds
- client signals that TCP window has space
- server sends next ~200k data until TCP window is exhausted
- connection is idle for a few seconds
- ...

This works as long as the connection is'nt idle for longer than the
value configured in KeepAliveTimeSec (which defaults to 10 sec). In that
case the connection is terminated by the server and the client gets an
incomplete file. This seems to happen quite regulary for this specific
customer.

To solve the issue I could just increase the value of KeepAliveTimeSec but
does it really make sense to close connections during data send phase?
RFC2616 suggests in the context of keep-alive [1]:

"""
Servers SHOULD always respond to at least one request per connection,
if at all possible. Servers SHOULD NOT close a connection in the
middle of transmitting a response, unless a network or client failure
is suspected.
"""

I would like to continue using the KeepAliveTimeSec timeout for *idle*
connections and either have no time-out or a separate time-out value (which
is very much higher by default) for stalled connections in data send
state.

What do you think?

Best regards,
Tobias


Links:
[1] http://tools.ietf.org/html/rfc2616#section-8.1.4

-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to