Caveat: I'm not sure exactly what code you are referring to, and I havn't tested this. But I'm guessing you mean the following worker thread code block, which I would try to modify like the following. If you are blocking somewhere on a socket, maybe setup a timeout alarm on the connection, or use sysread or one of the other tricks to prevent blocking.
All you really need to do, is somehow keep the thread looping, and periodically checking for $die.
#in your main
share $die;
$die = 0;
....
#set $die =1 when you want to exit or kill the thread
......
#worker code block
sub httpd {
LISTEN: {
my $client = $httpd->accept ;
goto END if $die;
redo LISTEN unless defined $client ;
my $request = $client->get_request ;
unless ($request->method eq 'POST' and
$request->url->path eq '/message') {
$client->send_error(RC_FORBIDDEN) ;
$client->close ;
goto END if $die;
redo LISTEN ;
}
my $q = CGI->new($request->content) ;
my ($nick,$message) = map $q->param($_),qw(nick message) ;
print STDERR "Resetting text box state\n" if DEBUG ;
$tbox->configure(-state => 'normal') ;
$tbox->insert('end',qq($nick says: $message\n)) ;
print STDERR "Disabling text box\n" if DEBUG ;
$tbox->configure(-state => 'disabled') ;
$client->send_status_line ;
$client->close ;
goto END if $die;
redo LISTEN ;
}
END:
}
I'm not really a human, but I play one on earth.
flash japh
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|