Hello Jack,

I think you have to check your event handlers for exception. BGException
is fired when exception comes from the message pump. But most event
handlers are fired from the message pump as well.

---
Rgds, Wilfried [TeamICS]
http://www.overbyte.be/eng/overbyte/teamics.html
http://www.mestdagh.biz

Tuesday, November 28, 2006, 20:46, Jack wrote:

> 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