move proxy into own sub
authorDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 21 Dec 2009 19:26:16 +0000 (20:26 +0100)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 21 Dec 2009 19:26:16 +0000 (20:26 +0100)
lib/SIP2/ACS.pm

index a60cfcf..b29254d 100644 (file)
@@ -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 )
                }
        }
 }