}
sub startsf {
- my $mainsockfcmd = "./server/sockfilt".exe_ext('SRV')." " .
- "--ipv$ipvnum --port $port " .
- "--pidfile \"$mainsockf_pidfile\" " .
- "--portfile \"$portfile\" " .
- "--logfile \"$mainsockf_logfile\"";
- $sfpid = open2(*SFREAD, *SFWRITE, $mainsockfcmd);
+ my @mainsockfcmd = ("./server/sockfilt".exe_ext('SRV'),
+ "--ipv$ipvnum",
+ "--port", $port,
+ "--pidfile", $mainsockf_pidfile,
+ "--portfile", $portfile,
+ "--logfile", $mainsockf_logfile);
+ $sfpid = open2(*SFREAD, *SFWRITE, @mainsockfcmd);
- print STDERR "$mainsockfcmd\n" if($verbose);
+ print STDERR "@mainsockfcmd\n" if($verbose);
print SFWRITE "PING\n";
my $pong;
sysread_or_die(\*SFREAD, \$pong, 5);
if($pong !~ /^PONG/) {
- logmsg "Failed sockfilt command: $mainsockfcmd\n";
+ logmsg "Failed sockfilt command: @mainsockfcmd\n";
killsockfilters($piddir, $proto, $ipvnum, $idnum, $verbose);
unlink($pidfile);
unlink($portfile);
sub PASV_ftp {
my ($arg, $cmd)=@_;
my $pasvport;
- my $bindonly = ($nodataconn) ? '--bindonly' : '';
# kill previous data connection sockfilt when alive
if($datasockf_runs eq 'yes') {
logmsg "DATA sockfilt for passive data channel starting...\n";
# We fire up a new sockfilt to do the data transfer for us.
- my $datasockfcmd = "./server/sockfilt".exe_ext('SRV')." " .
- "--ipv$ipvnum $bindonly --port 0 " .
- "--pidfile \"$datasockf_pidfile\" " .
- "--logfile \"$datasockf_logfile\"";
- $slavepid = open2(\*DREAD, \*DWRITE, $datasockfcmd);
+ my @datasockfcmd = ("./server/sockfilt".exe_ext('SRV'),
+ "--ipv$ipvnum", "--port", 0,
+ "--pidfile", $datasockf_pidfile,
+ "--logfile", $datasockf_logfile);
+ if($nodataconn) {
+ push(@datasockfcmd, '--bindonly');
+ }
+ $slavepid = open2(\*DREAD, \*DWRITE, @datasockfcmd);
if($nodataconn) {
datasockf_state('PASSIVE_NODATACONN');
datasockf_state('PASSIVE');
}
- print STDERR "$datasockfcmd\n" if($verbose);
+ print STDERR "@datasockfcmd\n" if($verbose);
print DWRITE "PING\n";
my $pong;
logmsg "DATA sockfilt for active data channel starting...\n";
# We fire up a new sockfilt to do the data transfer for us.
- my $datasockfcmd = "./server/sockfilt".exe_ext('SRV')." " .
- "--ipv$ipvnum --connect $port --addr \"$addr\" " .
- "--pidfile \"$datasockf_pidfile\" " .
- "--logfile \"$datasockf_logfile\"";
- $slavepid = open2(\*DREAD, \*DWRITE, $datasockfcmd);
+ my @datasockfcmd = ("./server/sockfilt".exe_ext('SRV'),
+ "--ipv$ipvnum", "--connect", $port, "--addr", $addr,
+ "--pidfile", $datasockf_pidfile,
+ "--logfile", $datasockf_logfile);
+ $slavepid = open2(\*DREAD, \*DWRITE, @datasockfcmd);
datasockf_state('ACTIVE');
- print STDERR "$datasockfcmd\n" if($verbose);
+ print STDERR "@datasockfcmd\n" if($verbose);
print DWRITE "PING\n";
my $pong;