- From: Gregory Nicholls <gnicholls@level8.com>
- Date: Sat, 10 Jun 2000 11:39:17 -0400
- To: www-lib@w3.org
I've run across some (to me) odd behaviour in a couple of places and after some investigation I've made some changes that seem to work. Given that it's been demonstrated that I don't really understand how this stuff all hangs together I'd appreciate someone reviewing these changes and commenting. (1) Non-blocking sockets on WinNT. My connects were failing. My Doc for WinNT says that I should be prepared to handle EINVAL and WOULDBLOCK as equivalent to EALREADY. The HTTCP.c module doesn't provide for this. The change I made was to add an additional state, TCP_CONNECT_PENDING. When a connect returns WOULDBLOCK the state moves to CONNECT_PENDING. When the state machine processes CONNECT_PENDING it simply changes the state to CONNECTED. Now AFAIK this should be OK, as a completed connect sets the socket to write. Now this works fine on my system but can someone tell me if this is a bad thing for any reason ? (2) HTTP Post requests. I've followed as best I can the past discussions and reasons for the timeout before sending the entity but I just don't see the logic. If we receive a 100-Continue we should immediately send the entity body. The timer is still good for cases where we don't receive a 100. I modified the HTTPEvent state machine ( HTTP.c around line 1237) so that if the status returned from HTHost_Read is 100, we call the postCallBack routine immediately and delete the associated timer. The timer will still pop in cases where a 100 is not received. Again this seems to work fine in my tests so far. Is there a reason why this is not a good thing ?? I'll be happy to send anyone the source changes if they'd like a closer look. Thanks, G.
Received on Saturday, 10 June 2000 11:36:11 UTC