Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: Timeout for timeout for an established connection

by zwon (Monsignor)
on Dec 30, 2012 at 16:23 UTC ( #1010939=note: print w/ replies, xml ) Need Help??


in reply to Timeout for an established connection

SO_RCVTIMEO parameter sets timeout for recv call. As you're using poll you have to handle timeouts yourself. After each poll check if there are sockets which didn't have data to read for more than 10 seconds and close them.


Comment on Re: Timeout for timeout for an established connection
Download Code
Re^2: Timeout for timeout for an established connection
by 0day (Sexton) on Dec 30, 2012 at 16:37 UTC
    How to do it? Check each socket? Suppose, there is 1000 sockets. Poll said that two of them are available to read. During 0.2 seconds, will be available for 2 more. You say every time check the other 998?
      my $index = $#noreply +1; push @noreply, $obj = HTTP_Request->new($ip, $packet, sub { delete $noreply[$index]; .............. }); .............. .............. my $check_time = time(); my $timeout = 30; while (1) { $poll->poll(5); for my $sock ( $poll->handles( POLLHUP | POLLERR | POLLNVAL )) { $sock->error(); } for my $sock ( $poll->handles(POLLIN) ) { $sock->recv(); } for my $sock ($poll->handles(POLLOUT)) { $sock->send(); } if (time > ($check_time + $timeout)) { $check_time = time; my $i; foreach (@noreply) { if ($_ && $_->ttl < $check_time) { delete $noreply[$i]; $_->close; } ++$i; } } }
      Maybe someone has a more elegant solution?

        If you willing to switch to AnyEvent, then AnyEvent::Handle allows you to set inactivity timeouts for reading and writing just as you want.

        Also, calling delete on array values is deprecated. I'd suggest something like:

        @noreply = grep { $_ && $_->ttl >= $check_time } @noreply;

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1010939]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (11)
As of 2014-08-22 10:49 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (153 votes), past polls