eval { local $SIG{ALRM} = sub { die "timeout" }; my $prev_alarm = alarm($prop->{timeout}); while( $data_length = readheader()){ $data = ""; alarm($prop->{timeout}); read STDIN, $data, $data_length, 0; alarm($prop->{timeout}); $modul_result = $modul_handle->process_xml($data); send_response($modul_result); } alarm($prev_alarm); }; if( $@ =~ /^timeout/ ){ $self->log(4, "Connection timed out.\n"); }