Lines 35-41
BEGIN {
Link Here
|
35 |
my %transports = ( |
35 |
my %transports = ( |
36 |
RAW => \&raw_transport, |
36 |
RAW => \&raw_transport, |
37 |
telnet => \&telnet_transport, |
37 |
telnet => \&telnet_transport, |
38 |
# http => \&http_transport, # for http just use the OPAC |
|
|
39 |
); |
38 |
); |
40 |
|
39 |
|
41 |
# |
40 |
# |
Lines 126-156
sub raw_transport {
Link Here
|
126 |
my $self = shift; |
125 |
my $self = shift; |
127 |
my ($input); |
126 |
my ($input); |
128 |
my $service = $self->{service}; |
127 |
my $service = $self->{service}; |
129 |
my $strikes = 3; |
|
|
130 |
|
128 |
|
131 |
eval { |
129 |
while (!$self->{account}) { |
132 |
local $SIG{ALRM} = sub { die "raw_transport Timed Out!\n"; }; |
130 |
local $SIG{ALRM} = sub { die "raw_transport Timed Out!\n"; }; |
133 |
syslog("LOG_DEBUG", "raw_transport: timeout is %d", $service->{timeout}); |
131 |
syslog("LOG_DEBUG", "raw_transport: timeout is %d", $service->{timeout}); |
134 |
while ($strikes--) { |
132 |
$input = Sip::read_SIP_packet(*STDIN); |
135 |
alarm $service->{timeout}; |
133 |
if (!$input) { |
136 |
$input = Sip::read_SIP_packet(*STDIN); |
134 |
# EOF on the socket |
137 |
alarm 0; |
135 |
syslog("LOG_INFO", "raw_transport: shutting down: EOF during login"); |
138 |
if (!$input) { |
136 |
return; |
139 |
# EOF on the socket |
137 |
} |
140 |
syslog("LOG_INFO", "raw_transport: shutting down: EOF during login"); |
138 |
$input =~ s/[\r\n]+$//sm; # Strip off trailing line terminator(s) |
141 |
return; |
139 |
last if Sip::MsgType::handle($input, $self, LOGIN); |
142 |
} |
|
|
143 |
$input =~ s/[\r\n]+$//sm; # Strip off trailing line terminator(s) |
144 |
last if Sip::MsgType::handle($input, $self, LOGIN); |
145 |
} |
146 |
}; |
147 |
|
148 |
if (length $@) { |
149 |
syslog("LOG_ERR", "raw_transport: LOGIN ERROR: '$@'"); |
150 |
die "raw_transport: login error (timeout? $@), exiting"; |
151 |
} elsif (!$self->{account}) { |
152 |
syslog("LOG_ERR", "raw_transport: LOGIN FAILED"); |
153 |
die "raw_transport: Login failed (no account), exiting"; |
154 |
} |
140 |
} |
155 |
|
141 |
|
156 |
syslog("LOG_DEBUG", "raw_transport: uname/inst: '%s/%s'", |
142 |
syslog("LOG_DEBUG", "raw_transport: uname/inst: '%s/%s'", |
Lines 272-279
sub sip_protocol_loop {
Link Here
|
272 |
while (1) { |
258 |
while (1) { |
273 |
$input = Sip::read_SIP_packet(*STDIN); |
259 |
$input = Sip::read_SIP_packet(*STDIN); |
274 |
unless ($input) { |
260 |
unless ($input) { |
275 |
print("96$CR"); |
261 |
return; # EOF |
276 |
next; |
|
|
277 |
} |
262 |
} |
278 |
# begin input hacks ... a cheap stand in for better Telnet layer |
263 |
# begin input hacks ... a cheap stand in for better Telnet layer |
279 |
$input =~ s/^[^A-z0-9]+//s; # Kill leading bad characters... like Telnet handshakers |
264 |
$input =~ s/^[^A-z0-9]+//s; # Kill leading bad characters... like Telnet handshakers |
Lines 281-286
sub sip_protocol_loop {
Link Here
|
281 |
while (chomp($input)) {warn "Extra line ending on input";} |
266 |
while (chomp($input)) {warn "Extra line ending on input";} |
282 |
unless ($input) { |
267 |
unless ($input) { |
283 |
syslog("LOG_ERR", "sip_protocol_loop: empty input skipped"); |
268 |
syslog("LOG_ERR", "sip_protocol_loop: empty input skipped"); |
|
|
269 |
print("96$CR"); |
284 |
next; |
270 |
next; |
285 |
} |
271 |
} |
286 |
# end cheap input hacks |
272 |
# end cheap input hacks |
287 |
- |
|
|