* remove output_fh tracking. It's not needed.
* write output Sip::write_msg via POSIX::write to bypass IO::Multiplex
output buffer caching. This is needed since SIP child procs never
return from mux_input (they exit) so the cached output is never
sent to the client.
Signed-off-by: Bill Erickson <berick@esilibrary.com>
}
$self = $active_connections{$conn_id}->{net_server};
- $self->{output_fh} = $mux_fh;
my $pid = fork();
die "Cannot fork: $!" unless (defined($pid) && $pid > -1);
sub write_msg {
my ($self, $msg, $file) = @_;
- $file ||= $self->{output_fh};
-
if ($error_detection) {
if (defined($self->{seqno})) {
$msg .= 'AY' . $self->{seqno};
$msg .= checksum($msg);
}
+ my $outmsg = "$msg\r";
if ($file) {
- print $file "$msg\r";
+ print $file $outmsg;
} else {
- print "$msg\r";
+ my $rv = POSIX::write(fileno(STDOUT), $outmsg, length($outmsg));
+ syslog("LOG_ERR", "Error writing to STDOUT $!") unless $rv;
}
syslog("LOG_INFO", "OUTPUT MSG: '$msg'");
$req && (substr($msg, 0, 2) ne $req)) {
return substr($msg, 0, 2);
}
- $self->{output_fh} = $server->{output_fh};
return($self->{handler}->($self, $server));
}