W3C home > Mailing lists > Public > www-lib@w3.org > April to June 2000

potential change review please

From: Gregory Nicholls <gnicholls@level8.com>
Date: Sat, 10 Jun 2000 11:39:17 -0400
Message-ID: <39426125.6A5F4EF9@level8.com>
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 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 23 April 2007 18:18:36 GMT