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