From f43b1d8a3ca5a0888deccbcb869b16120c904f78 Mon Sep 17 00:00:00 2001 From: Dobrica Pavlinusic Date: Mon, 21 Dec 2009 20:26:16 +0100 Subject: [PATCH] move proxy into own sub --- lib/SIP2/ACS.pm | 73 +++++++++++++++++++++++++------------------------ 1 file changed, 37 insertions(+), 36 deletions(-) diff --git a/lib/SIP2/ACS.pm b/lib/SIP2/ACS.pm index a60cfcf..b29254d 100644 --- a/lib/SIP2/ACS.pm +++ b/lib/SIP2/ACS.pm @@ -21,43 +21,44 @@ use Data::Dump qw(dump); use lib 'lib'; use SIP2::SC; -my $listen = '127.0.0.1:6001'; -my $server = '10.60.0.251:6001'; - -warn "listen on $listen for SIP2/RAW\n"; - -my $lsn = IO::Socket::INET->new(Listen => 1, LocalAddr => $listen, Reuse => 1) or die $!; -my $sel = IO::Select->new($lsn); - -our $sc; - -local $/ = "\r"; - -while (1) { - for my $sock ($sel->can_read(1)) { - - if ($sock == $lsn) { - my $new = $lsn->accept; - my $ip = $sock->peerhost; - warn "connection from $ip\n"; - $sel->add($new); - } else { - my $line = <$sock>; - if ( ! defined $line ) { - warn "disconnect from ", $sock->peerhost; - $sel->remove( $sock ); - delete( $sc->{$sock} ); - close($sock); - next; +sub proxy { + my ( $listen, $server ) = @_; + + warn "listen on $listen for SIP2/RAW and connect to $server\n"; + + my $lsn = IO::Socket::INET->new(Listen => 1, LocalAddr => $listen, Reuse => 1) or die $!; + my $sel = IO::Select->new($lsn); + + my $sc; + + local $/ = "\r"; + + while (1) { + for my $sock ($sel->can_read(1)) { + + if ($sock == $lsn) { + my $new = $lsn->accept; + my $ip = $sock->peerhost; + warn "connection from $ip\n"; + $sel->add($new); + } else { + my $line = <$sock>; + if ( ! defined $line ) { + warn "disconnect from ", $sock->peerhost; + $sel->remove( $sock ); + delete( $sc->{$sock} ); + close($sock); + next; + } + my $ip = $sock->peerhost; + warn "<< $ip ", dump($line); + if ( ! $sc->{$sock} ) { + warn "connect to $server for $sock\n"; + $sc->{$sock} = SIP2::SC->new( $server ); + } + $line .= "\n"; # lf to fix Koha ACS + print $sock $sc->{$sock}->message( $line ) } - my $ip = $sock->peerhost; - warn "<< $ip ", dump($line); - if ( ! $sc->{$sock} ) { - warn "connect to $server for $sock\n"; - $sc->{$sock} = SIP2::SC->new( $server ); - } - $line .= "\n"; # lf to fix Koha ACS - print $sock $sc->{$sock}->message( $line ) } } } -- 2.20.1