home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl_ste.zip / auto / Net / FTP / _dataconn.al < prev    next >
Text File  |  1997-11-28  |  922b  |  47 lines

  1. # NOTE: Derived from ./blib/lib/Net/FTP.pm.  Changes made here will be lost.
  2. package Net::FTP;
  3.  
  4. ##
  5. ## Communication methods
  6. ##
  7.  
  8. sub _dataconn
  9. {
  10.  my $ftp = shift;
  11.  my $data = undef;
  12.  my $pkg = "Net::FTP::" . $ftp->type;
  13.  
  14.  eval "require " . $pkg;
  15.  
  16.  $pkg =~ s/ /_/g;
  17.  
  18.  delete ${*$ftp}{'net_ftp_dataconn'};
  19.  
  20.  if(defined ${*$ftp}{'net_ftp_pasv'})
  21.   {
  22.    my @port = split(/,/,${*$ftp}{'net_ftp_pasv'});
  23.  
  24.    $data = $pkg->new(PeerAddr => join(".",@port[0..3]),
  25.                      PeerPort => $port[4] * 256 + $port[5],
  26.                      Proto    => 'tcp'
  27.                     );
  28.   }
  29.  elsif(defined ${*$ftp}{'net_ftp_listen'})
  30.   {
  31.    $data = ${*$ftp}{'net_ftp_listen'}->accept($pkg);
  32.    close(delete ${*$ftp}{'net_ftp_listen'});
  33.   }
  34.  
  35.  if($data)
  36.   {
  37.    ${*$data} = "";
  38.    $data->timeout($ftp->timeout);
  39.    ${*$ftp}{'net_ftp_dataconn'} = $data;
  40.    ${*$data}{'net_ftp_cmd'} = $ftp;
  41.   }
  42.  
  43.  $data;
  44. }
  45.  
  46. 1;
  47.