Hello all,

I have a server that works like a port forwarder to an HTTP
proxy. IE connects to my server, and my server forward traffics
to a remove HTTP proxy. It works well most of the times but
occasionally IE gets corrupt data. To debug this, I wrote
a dummy client that sends 50 concurrent GET requests to the
same (commercial) web server through my port forwarder and
a proxy server (squid.) I observer exceptions of socket error
10058, as shown in the log of the http client test tool.

Here's the log of 50 requests, from the special http client.
Note that result 22, 31, 27 did not get the correct page length:

03:33:43 Request done 00 291224 200
03:33:45 Request done 06 291224 200
03:33:45 Request done 01 291224 200
03:33:45 Request done 03 291224 200
03:33:45 Request done 12 291224 200
03:33:45 Request done 02 291224 200
03:33:45 Request done 14 291224 200
03:33:47 Request done 32 291224 200
03:33:47 Request done 20 291224 200
03:33:47 Request done 08 291224 200
03:33:48 Request done 48 291224 200
03:33:48 Request done 41 291224 200
03:33:49 Request done 37 291224 200
03:33:49 Request done 21 291224 200
03:33:49 Request done 28 291224 200
03:33:49 Request done 33 291224 200
03:33:49 Request done 38 291224 200
03:33:49 Request done 46 291224 200
03:33:49 Request done 29 291224 200
03:33:49 Request done 24 291224 200
03:33:49 Request done 30 291224 200
03:33:49 Request done 15 291224 200
03:33:49 Request done 05 291224 200
03:33:50 Request done 09 291224 200
03:33:51 Request done 35 291224 200
03:33:57 Request done 13 291224 200
03:33:57 Request done 07 291224 200
03:33:59 Request done 04 291224 200
03:34:00 Request done 17 291224 200
03:34:01 Request done 11 291224 200
03:34:02 Request done 10 291224 200
03:34:03 Request done 16 291224 200
03:34:04 Request done 19 291224 200
03:34:08 Request done 36 291224 200
03:34:13 Request done 18 291224 200
03:34:13 Request done 22 264456 200
03:34:13 Request done 23 291224 200
03:34:13 Request done 40 291224 200
03:34:14 Request done 43 291224 200
03:34:15 Request done 34 291224 200
03:34:17 Request done 44 291224 200
03:34:18 Request done 39 291224 200
03:34:19 Request done 45 291224 200
03:34:20 Request done 42 291224 200
03:34:21 Request done 49 291224 200
03:34:22 Request done 25 291224 200
03:34:22 Request done 47 291224 200
03:34:23 Request done 26 291224 200
03:34:27 Request done 31 264112 200
03:34:31 Request done 27 182836 200

Here's the log from the client. Note the three 10058 exceptions
that correspond to the 3 corrupt packets:

11/28/2006 3:33:47 AM TTransportSocket: Close ID=133
11/28/2006 3:33:47 AM TTransportSocket: Close ID=121
11/28/2006 3:33:47 AM TTransportSocket: Close ID=109
11/28/2006 3:33:48 AM TTransportSocket: Close ID=149
11/28/2006 3:33:48 AM TTransportSocket: Close ID=142
11/28/2006 3:33:49 AM TTransportSocket: Close ID=138
11/28/2006 3:33:49 AM TTransportSocket: Close ID=122
11/28/2006 3:33:49 AM TTransportSocket: Close ID=129
11/28/2006 3:33:49 AM TTransportSocket: Close ID=134
11/28/2006 3:33:49 AM TTransportSocket: Close ID=139
11/28/2006 3:33:49 AM TTransportSocket: Close ID=147
11/28/2006 3:33:49 AM TTransportSocket: Close ID=131
11/28/2006 3:33:49 AM TTransportSocket: Close ID=130
11/28/2006 3:33:49 AM TTransportSocket: Close ID=125
11/28/2006 3:33:49 AM TTransportSocket: Close ID=116
11/28/2006 3:33:49 AM TTransportSocket: Close ID=106
11/28/2006 3:33:50 AM TTransportSocket: Close ID=110
11/28/2006 3:33:51 AM TTransportSocket: Close ID=136
11/28/2006 3:33:57 AM TTransportSocket: Close ID=114
11/28/2006 3:33:57 AM TTransportSocket: Close ID=108
11/28/2006 3:33:59 AM TTransportSocket: Close ID=105
11/28/2006 3:34:00 AM TTransportSocket: Close ID=118
11/28/2006 3:34:01 AM TTransportSocket: Close ID=112
11/28/2006 3:34:02 AM TTransportSocket: Close ID=111
11/28/2006 3:34:03 AM TTransportSocket: Close ID=117
11/28/2006 3:34:04 AM TTransportSocket: Close ID=120
11/28/2006 3:34:08 AM TTransportSocket: Close ID=137
11/28/2006 3:34:09 AM TTransportSocket: Close ID=119
11/28/2006 3:34:11 AM TTransportSocket: Close ID=124
11/28/2006 3:34:12 AM TTransportSocket: Close ID=123
11/28/2006 3:34:12 AM TComm.WSocketServerClientBgException 123 10058
11/28/2006 3:34:13 AM TTransportSocket: Close ID=141
11/28/2006 3:34:14 AM TTransportSocket: Close ID=144
11/28/2006 3:34:15 AM TTransportSocket: Close ID=135
11/28/2006 3:34:17 AM TTransportSocket: Close ID=145
11/28/2006 3:34:18 AM TTransportSocket: Close ID=140
11/28/2006 3:34:19 AM TTransportSocket: Close ID=146
11/28/2006 3:34:20 AM TTransportSocket: Close ID=143
11/28/2006 3:34:21 AM TTransportSocket: Close ID=150
11/28/2006 3:34:22 AM TTransportSocket: Close ID=126
11/28/2006 3:34:22 AM TTransportSocket: Close ID=148
11/28/2006 3:34:23 AM TTransportSocket: Close ID=127
11/28/2006 3:34:25 AM TTransportSocket: Close ID=132
11/28/2006 3:34:26 AM TTransportSocket: Close ID=128
11/28/2006 3:34:27 AM TComm.WSocketServerClientBgException 132 10058
11/28/2006 3:34:27 AM TComm.WSocketServerClientBgException 128 10058

So it seems that The exceptions cause the incomplete fetches. Error
10058 means "Cannot send after socket shutdown." I'm not sure why this
happens because the request has been sent already by the time the exception
happens and partial page has been fetched.

11/28/2006 3:34:12 AM TTransportSocket: Close ID=123
11/28/2006 3:34:12 AM TComm.WSocketServerClientBgException 123 10058

The first line above means the transport socket receives a command
from the server to close this client socket. Right after which, the
10058 error happens. I don't know what the client is trying to send
at this time.

Same thing for these two exceptions:
11/28/2006 3:34:25 AM TTransportSocket: Close ID=132
11/28/2006 3:34:26 AM TTransportSocket: Close ID=128
11/28/2006 3:34:27 AM TComm.WSocketServerClientBgException 132 10058
11/28/2006 3:34:27 AM TComm.WSocketServerClientBgException 128 10058

So the question is, what sending causes this problem? Can any of
the TCP psh, fin, ack, etc. packets cause this problem? Could it be
that the connection is closed before an ACK is sent back? It shouldn't
be though because w/o getting a proper ACK, the server shouldn't be
disconnecting.


-- 
Best regards,
Jack

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

Reply via email to