Why TDI Connect IRP returns STATUS_IO_TIMEOUT

hi, everyone,
There is a question when my TDI Client Driver calles IoCallDriver() to setup a connection.
The TDI Client can connect to the Win32 TCP Server, however, after a lot of constant successful connections, it
returns STATUS_IO_TIMEOUT. I will set up a new connection when trying to tranfer, and close it when transferred.
What may be the reason, is that I have set up and closed too many connections in one short period? BTW, It may
not happen on another machine.
Thanks.
paul

Lack of local port numbers.

After you close the connection, it goes to TIME_WAIT state for around 3
minutes and holds the local port number. So, you can easily exhaust them.

Also your approach of connecting each time is slow. It requires 2 * RTT for
each transaction.

Retain the connection in the idle state to solve this. Send the next
transactions over this retained connection. This will speed the things up and
solve the problem with local ports.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

----- Original Message -----
From: “Paul Chen”
To: “Windows System Software Devs Interest List”
Sent: Saturday, November 06, 2004 9:48 AM
Subject: [ntdev] Why TDI Connect IRP returns STATUS_IO_TIMEOUT

> hi, everyone,
> There is a question when my TDI Client Driver calles IoCallDriver() to
setup a connection.
> The TDI Client can connect to the Win32 TCP Server, however, after a lot of
constant successful connections, it
> returns STATUS_IO_TIMEOUT. I will set up a new connection when trying to
tranfer, and close it when transferred.
> What may be the reason, is that I have set up and closed too many connections
in one short period? BTW, It may
> not happen on another machine.
> Thanks.
> paul
>
> —
> Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to $subst(‘List.Name’) as:
$subst(‘Recip.EmailAddr’)
> To unsubscribe send a blank email to $subst(‘Email.UnSub’)
>

hi, Maxim
Is there any possibility to explicitly let the ending connection enter
the CLOSED status and free the port number? As you have said, it should
occur on every machine if it sets up enough new connection in short period?
However, it won’t fail on another machine.
Thanks.

paul


Is your PC infected? Get a FREE online computer virus scan from McAfee®
Security. http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963

The correct way is to keep the connection open till later requests will
arrive.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

----- Original Message -----
From: “paul chen”
To: “Windows System Software Devs Interest List”
Sent: Sunday, November 07, 2004 8:39 PM
Subject: Re:[ntdev] Why TDI Connect IRP returns STATUS_IO_TIMEOUT

> hi, Maxim
> Is there any possibility to explicitly let the ending connection enter
> the CLOSED status and free the port number? As you have said, it should
> occur on every machine if it sets up enough new connection in short period?
> However, it won’t fail on another machine.
> Thanks.
>
> paul
>
> _________________________________________________________________
> Is your PC infected? Get a FREE online computer virus scan from McAfee®
> Security. http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963
>
>
> —
> Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: xxxxx@storagecraft.com
> To unsubscribe send a blank email to xxxxx@lists.osr.com