I sent you the wrote-old code.  Here is the corrected one:

- Adam

#!/opt/local/GNU/bin/perl

use strict;
BEGIN { $ENV{PATH} = '/usr/ucb:/bin' }
use Socket;
use Carp;

sub server {
  my $port = 80;
  my $proto = getprotobyname('tcp');
  $port = $1 if $port =~ /(\d+)/; # untaint port number

  socket(Server, PF_INET, SOCK_STREAM, $proto)        || die "socket: $!";
  bind(Server, sockaddr_in($port, INADDR_ANY))        || die "bind: $!";
  listen(Server,SOMAXCONN)                            || die "listen: $!";

  logmsg "server started on port $port";
  my $paddr;

  $SIG{CHLD} = \&REAPER;

  for ( ; $paddr = accept(Client,Server); close Client) {
    my($port,$iaddr) = sockaddr_in($paddr);
    my $name = gethostbyaddr($iaddr,AF_INET);

    $host = "www.somewebserver.com";
    $remote = IO::Socket::INET->new( Proto     => "tcp",
                                   PeerAddr  => $host,
                                   PeerPort  => "http(80)",
                                 );
    unless ($remote) { die "cannot connect to http daemon on $host" }
    $remote->autoflush(1);
    while(1<2) {
      while (<Client>) {
        push(@cli_in,$_);
      }
      while(<$remote>) {
        push(@serv_in,$_);
      }
      print $remote @cli_in;
      print Client @serv_in;
      @cli_in = ("");
      @serv_in = ("");
    }
    close $remote;
  }
}

server();


Reply via email to