hello, first of all thanks a lot for posting that code, it has been of great help for me.
Now, I found I need to make some changes for it to work. I'm starting a process to serve http request on a port. Client is doing basically this:
$ua = LWP::UserAgent->new; my $req = HTTP::Request->new(GET => "http://localhost:8998/foo"); $req->authorization_basic('fo', 'fi'); my $res = $ua->request($req) ;
The thing is it looks I really need to close the socket in sub Run after the sub _thread opened the dequeued file_no. . In other words, instead of :
while( $Qclean->pending ) { my $fno = $Qclean->dequeue(); close delete $self->{ Clients }{ $fno }; }
I need to do:
my $fno = $Qclean->dequeue(); close delete $self->{ Clients }{ $fno };
before letting it arrive to the "local $_ = $server->accept " again.
If I don't do that,then looks like the "close" of the fd I get in sub _thread does not really closes the socket? The thing is "$ua->request($req)" at the client does not return until I kill the server process if I don't actually close the socket in sub Run.
In reply to Re^8: multithreaded tcp listener with IO::Socket
by txemy
in thread multithreaded tcp listener with IO::Socket
by Random_Walk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |