- eval {
- local $SIG{ALRM} = sub { die "raw_transport Timed Out!\n"; };
- syslog("LOG_DEBUG", "raw_transport: timeout is %d", $service->{timeout});
- while ($strikes--) {
- alarm $service->{timeout};
- $input = Sip::read_SIP_packet(*STDIN);
- alarm 0;
- if (!$input) {
- # EOF on the socket
- syslog("LOG_INFO", "raw_transport: shutting down: EOF during login");
- return;
- }
- $input =~ s/[\r\n]+$//sm; # Strip off trailing line terminator(s)
- last if Sip::MsgType::handle($input, $self, LOGIN);
- }
- };
-
- if (length $@) {
- syslog("LOG_ERR", "raw_transport: LOGIN ERROR: '$@'");
- die "raw_transport: login error (timeout? $@), exiting";
- } elsif (!$self->{account}) {
- syslog("LOG_ERR", "raw_transport: LOGIN FAILED");
- die "raw_transport: Login failed (no account), exiting";
+ while (!$self->{account}) {
+ local $SIG{ALRM} = sub { die "raw_transport Timed Out!\n"; };
+ syslog("LOG_DEBUG", "raw_transport: timeout is %d", $service->{timeout});
+ $input = Sip::read_SIP_packet(*STDIN);
+ if (!$input) {
+ # EOF on the socket
+ syslog("LOG_INFO", "raw_transport: shutting down: EOF during login");
+ return;
+ }
+ $input =~ s/[\r\n]+$//sm; # Strip off trailing line terminator(s)
+ last if Sip::MsgType::handle($input, $self, LOGIN);