I went to test the timeout by specifying the ip address of 10.0.0.1 and port of 275001, on my machine it does as intended and sends the timeout message to the channel but once ran from another machine the irc bot just freezes and the process has to be killed and restarted again, but I've had it working successfully once on the other machine and the other 9 times I've tried just resulted in it being frozen. Any explanations as to what could be causing this?sub send_rcon { my ($server, $port, $password, $command, %message_info) = @_; my $incoming; use IO::Socket; my $socket = IO::Socket::INET->new(PeerAddr => $server, PeerPort => $port, Proto => 'udp') or return "rcon: socket error [ +$!]."; if ($socket) { $socket->send(chr(255)x4 . "rcon $password $command") or return "r +con: send error [$!]."; $SIG{ALRM} = sub { scm($message_info{'irc_chan'}, "rcon: timed out +.", $message_info{'kernel'}); }; eval { alarm (5); sysread($socket, $incoming, 1024) or return "rcon: return erro +r [$1]."; alarm (0); close $socket; }; } return $incoming; }
In reply to Alarm not working across systems by rendler
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |