Technology Questions

Go Back   Technology Questions > Software Questions > Internet > Internet Explorer

Internet Explorer Discuss IE7 or any other IE version.

Reply
 
LinkBack Thread Tools
  #1 (permalink)  
Old 08-24-2007, 08:30 AM
Christian Wyglendowski
Newsgroup Contributor
 
Posts: n/a
Strange TCP Behavior?

Hi All,

I have observed some strange behavior from Internet Explorer 7 when
using XMLHTTPRequest and the POST method.

Here is my complete "stack", from server to client(s):

Ubuntu Server (Edgy)
Python 2.5
CherryPy 3.0.2 (an application server)
[Custom Inhouse Application]
IE6/IE7/Firefox/Opera/Safari Clients
jQuery

The client-side of the "custom application" can be configured to use
GET or POST when sending information back to the server. Semantically
and functionally, POST makes the most sense for what we are doing.
However, when we configure the application to use POST, we start
getting strange socket errors when communicating with IE7 clients.

We did a packet capture and managed to capture some packets[1] during
one of the socket errors. The executive summary is that the server
timed out and closed a persistent HTTP/1.1 connection, sent a TCP
packet with the FIN bit set to the client (IE7), the client responded
with an ACK, **and then proceeded to send a POST request on that same
socket.**

If I understand correctly, at best the remote socket would be in
FIN_WAIT_2 state, and would be "half-closed". Or, (as is the case
with the current implementation of CherryPy) the server socket has
been closed for reading and writing, and any further communication on
it yields RST packets back to the client.

So, is this a bug in IE7? Has anyone else noticed this sort of
thing? No other browsers, including IE6 seem to exhibit this
behavior. Also, when we use GET, there is no issue (except for
semantic HTTP "problems" and query string length limits).

Anyhow, thanks for your time.

Christian Wyglendowski

[1] Here is a textual summary of the packet exchange:
No. Time Source Destination
Protocol Info

# the last satisfied request to the server (tproxy is just port
8080)
4297 634.534812 192.168.130.23 10.1.1.64
TCP 38563 > tproxy [PSH, ACK]
4298 634.538900 10.1.1.64 192.168.130.23
TCP tproxy > 38563 [PSH, ACK]
4299 634.539062 10.1.1.64 192.168.130.23
TCP tproxy > 38563 [ACK]
4300 634.539094 10.1.1.64 192.168.130.23
TCP tproxy > 38563 [ACK]
4301 634.608119 192.168.130.23 10.1.1.64
TCP 38563 > tproxy [ACK]
4302 634.608145 10.1.1.64 192.168.130.23
TCP tproxy > 38563 [PSH, ACK]
4303 634.618596 192.168.130.23 10.1.1.64
TCP 38563 > tproxy [ACK]
4304 634.622739 192.168.130.23 10.1.1.64
TCP 38563 > tproxy [ACK]
4305 634.670353 192.168.130.23 10.1.1.64
TCP 38563 > tproxy [ACK]

# ...
# 10 seconds of idle time on the socket cause the server to close
it after the persistent
# connection timeout.
# ...

# server closes, packet with FIN set sent
4334 644.548751 10.1.1.64 192.168.130.23
TCP tproxy > 38563 [FIN, ACK]

# client acknowledges the FIN
4335 644.665319 192.168.130.23 10.1.1.64
TCP 38563 > tproxy [ACK]

# here is the HTTP POST on the same socket that it just acknowledge
the FIN!!
4336 644.754593 192.168.130.23 10.1.1.64
TCP 38563 > tproxy [PSH, ACK]

# server socket is closed, so further communication with it yields
series of RSTs
4337 644.754817 10.1.1.64 192.168.130.23
TCP tproxy > 38563 [RST]
4338 644.754647 192.168.130.23 10.1.1.64
TCP 38563 > tproxy [PSH, ACK]
4339 644.754868 10.1.1.64 192.168.130.23
TCP tproxy > 38563 [RST]
4340 644.777550 192.168.130.23 10.1.1.64
TCP 38563 > tproxy [FIN, ACK]
4341 644.777581 10.1.1.64 192.168.130.23
TCP tproxy > 38563 [RST]

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

 
Old 08-24-2007, 08:30 AM
  #2 (permalink)  
Old 08-28-2007, 11:30 AM
Christian Wyglendowski
Newsgroup Contributor
 
Posts: n/a
Re: Strange TCP Behavior?

On Aug 24, 11:19 am, Christian Wyglendowski <christ...@dowski.com>
wrote:

> We did a packet capture and managed to capture some packets[1] during
> one of the socket errors. The executive summary is that the server
> timed out and closed a persistent HTTP/1.1 connection, sent aTCP
> packet with the FIN bit set to the client (IE7), the client responded
> with an ACK, **and then proceeded to send a POST request on that same
> socket.**


Ok, a little more information. After the connection is reset by the
server, IE opens a new connection and attempts to retransmit the POST
request. **However,** it only transmits the request headers, and
never anything more. The application thread serving the request
blocks on read(), expecting more because the Content-Length in the
headers leads it to expect a message body. It times out after a short
duration, and returns a 500 error.

Christian
http://www.dowski.com

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

Reply

Bookmarks

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Strange behavior Gary McQuigg Internet Explorer 1 06-15-2007 11:10 AM
strange behavior A Windows Vista 0 03-01-2007 05:45 PM
Strange behavior My computer & my document icon misplaced Windows XP 2 01-04-2007 06:09 AM
Strange behavior My computer & my document icon misplaced Windows XP 0 01-04-2007 06:06 AM
CD strange behavior Edward Windows XP 1 01-04-2007 02:04 AM


New To Technology Questions? Do You Need Help with Your Computer or Device? Do You Need Help with this site?

All times are GMT -8. The time now is 10:32 PM.


2003 - 2009 All Rights Reserved. Technology Questions

Search Engine Friendly URLs by vBSEO 3.3.0