-sub run_proxy {
- my $listenersock = shift;
- my $targetsock=shift;
-
- die "Could not create listener socket: $!\n" unless $listenersock;
- die "Could not create connection to server: $!\n" unless $targetsock;
-
- # mark sockets as binary
- binmode( $listenersock );
- binmode( $targetsock );
-
- my $sel = IO::Select->new($listenersock);
- my %Handlers;
- while (my @ready = $sel->can_read) {
- foreach my $fh (@ready) {
- if ($fh == $listenersock) {
- # let's create a new socket
- my $psock = $listenersock->accept;
- $sel->add($psock);
- } else {
- my $result = handle($fh,$targetsock);
- if ($result) {
- # we have finished with the socket
- $sel->remove($fh);
- $fh->close;
- delete $Handlers{*$fh};
- }
- }
- }
- }
-}
-