Jump to content

TCPTimeout Bug?


ripdad
 Share

Recommended Posts

I've been playing with TCPTimeout and noticed something peculiar.

Perhaps someone has reported it before, but I couldn't find it.

A timeout of 1 to 999 is good with no problems.

A timeout of 1000 and higher causes the GUI to be sluggish.

If you keep going up to 2000, 3000, 4000, etc. -- it will be exponentially sluggish.

2 Questions:

What is happening between 999 and 1000 to cause this?

Is this a Windows problem or AutoIt?

The test script below, serves to reproduce the problem. (tested on 2 machines)

TCPStartup()
;
Local $Socket, $Server = TCPListen('127.0.0.1', 80)
If $Server = -1 Then Exit
;
Opt('TCPTimeout', 999); <-- change this to reproduce the problem
;
Local $gui = GUICreate('TCPTimeout Test', 400, 250, -1, -1)
GUISetState(@SW_SHOW)
;
While 1
    Switch GUIGetMsg()
        Case -3
            TCPShutdown()
            GUIDelete($gui)
            Exit
    EndSwitch
    ;
    $Socket = TCPAccept($Server)
    If $Socket <> -1 Then
        TCPCloseSocket($Socket)
    EndIf
WEnd
;

"The mediocre teacher tells. The Good teacher explains. The superior teacher demonstrates. The great teacher inspires." -William Arthur Ward

Link to comment
Share on other sites

That's kinda neat in some fucked up way. Try changing the timeout with a timer and you'll see how it goes wrong

$iTimer = TimerInit()
    $Socket = TCPAccept($Server)
    ConsoleWrite(TimerDiff($iTimer) & @LF)

I don't know why this happens.

Link to comment
Share on other sites

Ah, that is very interesting. Thanks for confirming.

As long as TCPTimeout is 999 and below, the poll is at ~10ms.

When TCPTimeout is at 1000, then the poll is at ~1000ms.

And so on:

TCPTimeout:2000 = poll at ~2000ms

TCPTimeout:3000 = poll at ~3000ms

It appears to be a sleep in between polls that starts at 1000. (which is not the intended behavior of a timeout)

"The mediocre teacher tells. The Good teacher explains. The superior teacher demonstrates. The great teacher inspires." -William Arthur Ward

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...