RE: NT SP6 and WouldBlock in HTTCP.C - Seemingly broken

Fred,

I've attached my version of 

HTEvent.c
HTEvent.h
HTEvtLst.c
HTEvtLst.h
HTTCP.c

The issue gets solved by checking the new member valiable win_error of the
event object before connect() is called in HTDoConnect(). This allows to
failsafe detect the connect error before connect() is called a second time.

Please let me know if that works for your,

Regards,

Jens


-----Original Message-----
From: Fred Covely [mailto:fcovely@covely.com]
Sent: Dienstag, 24. April 2001 17:29
To: Jens Meggers; www-lib@w3.org
Subject: RE: NT SP6 and WouldBlock in HTTCP.C - Seemingly broken


Congratulations, thats the fastest bug fix I ever saw (8>).

I'm real curious as to your solution.

I'm not seeing any issues with this on win2k, only NT.  But the
user I have on NT SP6 fails hard everytime.  I think I'll go
ahead and set up an NT/SP6 box and see if I can reproduce
with and without your patch when it comes out.

regards,

Fred Covely
fcovely@covely.com
(B)760-631-8157
(C)760-717-9689

-----Original Message-----
From: Jens Meggers [mailto:jens.meggers@firepad.com]
Sent: Tuesday, April 24, 2001 5:08 PM
To: 'Fred Covely'; www-lib@w3.org
Subject: RE: NT SP6 and WouldBlock in HTTCP.C - Seemingly broken


Fred,

I solved the problem within the last weeks. I had to pass the error message
that the asyn event messages of the socket call is carrying with the event
object to the HTDoConnect method. Actually, it works. Unfortunatly, a lot of
files are involved. I will send a patch description asap.

Jens


-----Original Message-----
From: Fred Covely [mailto:fcovely@covely.com]
Sent: Dienstag, 24. April 2001 17:09
To: www-lib@w3.org
Subject: NT SP6 and WouldBlock in HTTCP.C - Seemingly broken


I have run into an interesting problem on NT SP 6 on at
least one machine.  I've done a detailed trace on the box
that is failing and on several Win2K boxes that work.

Clearly based on the source comments there has been a lot
of work done in this area, so I would request your input
on this problem.

Here is the scenario:

We are doing a simple httpget on a public site (yahoo.com, or whatever).
On a win2K machine the sequence in HTTCP.C looks like this:

1224  15:50:44        Event....... Registering socket for HTEvent_CONNECT
1224  15:50:44        HTDoConnect. rcode `10035'
1224  15:50:44        HTDoConnect. status `-1'
1224  15:50:44        HTDoConnect. WOULD BLOCK `www.yahoo.com'
1224  15:50:44      Host Event.. WRITE passed to `http://www.yahoo.com'
1224  15:50:44      HTDoConnect. rcode `10056'
1224  15:50:44      HTDoConnect. status `-1'
1224  15:50:44      HTHost 01099988 going to state TCP_CONNECTED.
1224  15:50:44      Event....... Socket 456 unregistered for HTEvent_CONNECT
...
1224  15:50:44      DNS weight.. Home 5 has weight 0.00
1224  15:50:44      HTHost 01099988 connected.
1224  15:50:44      Host connect Unlocking Host 01099988
1224  15:50:44      StreamStack. Constructing stream stack for text/x-http
to */*

The Win2K request then proceeds normally.

On the NT SP 6 machine the same request looks like this:

286  14:40:54        Event....... Register socket 248, request 0082B640
...
286  14:40:54        HTDoConnect. rcode `10035'
286  14:40:54        HTDoConnect. status `-1'
286  14:40:54        HTDoConnect. WOULD BLOCK `www.yahoo.com'
286  14:41:39      Host Event.. WRITE passed to `http://www.yahoo.com'
286  14:41:39      HTDoConnect. rcode `10035'
286  14:41:39      HTDoConnect. status `-1'
286  14:41:39      HTDoConnect. WOULD BLOCK `www.yahoo.com'
286  14:42:24      Host Event.. WRITE passed to `http://www.yahoo.com'
286  14:42:24      HTDoConnect. rcode `10035'
286  14:42:24      HTDoConnect. status `-1'
286  14:42:24      HTDoConnect. WOULD BLOCK `www.yahoo.com'
286  14:43:09      Host Event.. WRITE passed to `http://www.yahoo.com'
286  14:43:09      HTDoConnect. rcode `10035'
286  14:43:09      HTDoConnect. status `-1'

In inspecting the Microsoft web site on the connect, they clearly
state that the preferred implementation is not to use multiple
connect calls.  I don't have enough familiarity with the libwww
code to venture a guess as to what is wrong.  Could it be related
to the multiple connect strategy?  If so has anyone looked at
the best way to do this?  I see a comment of about a year ago
from jens@meggers.com indicating there were known ms problems
in this area.  I have a hard time believing someone has not
figured out how to do an absolutely bullet proof connect in windows.

Any input greatly appreciated.


Fred Covely
fcovely@covely.com
(B)760-631-8157
(C)760-717-9689

Received on Friday, 27 April 2001 23:47:24 UTC