#
# this testcase is invalid. The LIST command must succeed. Why?
# both ports in question are opened with SO_REUSEADDR
# both processes use as the same user
#
# in order to trigger the failure we would have to
# try to bind the same addr:port pair for two different
# users. This is not what's happen in this test case.
# we can just delete this test case on Solaris.
#
# Change has not been submitted to upstream I feel it might
# be valid test case on other OSes, who knows. It is
# rather exotic corner case.
#

--- a/tests/t/lib/ProFTPD/Tests/Commands/PORT.pm
+++ b/tests/t/lib/ProFTPD/Tests/Commands/PORT.pm
@@ -55,11 +55,6 @@ my $TESTS = {
     test_class => [qw(bug forking)],
   },
 
-  port_eaddrinuse_bug3944 => {
-    order => ++$order,
-    test_class => [qw(bug forking)],
-  },
-
 };
 
 sub new {
@@ -1123,162 +1118,4 @@ sub port_during_xfer_bug3487 {
   unlink($log_file);
 }
 
-sub port_eaddrinuse_bug3944 {
-  my $self = shift;
-  my $tmpdir = $self->{tmpdir};
-
-  my $config_file = "$tmpdir/cmds.conf";
-  my $pid_file = File::Spec->rel2abs("$tmpdir/cmds.pid");
-  my $scoreboard_file = File::Spec->rel2abs("$tmpdir/cmds.scoreboard");
-
-  my $log_file = test_get_logfile();
-
-  my $auth_user_file = File::Spec->rel2abs("$tmpdir/cmds.passwd");
-  my $auth_group_file = File::Spec->rel2abs("$tmpdir/cmds.group");
-
-  my $user = 'proftpd';
-  my $passwd = 'test';
-  my $group = 'ftpd';
-  my $home_dir = File::Spec->rel2abs($tmpdir);
-  my $uid = 500;
-  my $gid = 500;
-
-  # Make sure that, if we're running as root, that the home directory has
-  # permissions/privs set for the account we create
-  if ($< == 0) {
-    unless (chmod(0755, $home_dir)) {
-      die("Can't set perms on $home_dir to 0755: $!");
-    }
-
-    unless (chown($uid, $gid, $home_dir)) {
-      die("Can't set owner of $home_dir to $uid/$gid: $!");
-    }
-  }
-
-  auth_user_write($auth_user_file, $user, $passwd, $uid, $gid, $home_dir,
-    '/bin/bash');
-  auth_group_write($auth_group_file, $group, $gid, $user);
-
-  my $timeout = 20;
-
-  my $config = {
-    PidFile => $pid_file,
-    ScoreboardFile => $scoreboard_file,
-    SystemLog => $log_file,
-    TraceLog => $log_file,
-    Trace => 'DEFAULT:10',
-
-    AuthUserFile => $auth_user_file,
-    AuthGroupFile => $auth_group_file,
-    AuthOrder => 'mod_auth_file.c',
-
-    RootRevoke => 'off',
-    TimeoutIdle => '30',
-
-    IfModules => {
-      'mod_delay.c' => {
-        DelayEngine => 'off',
-      },
-    },
-  };
-
-  my ($port, $config_user, $config_group) = config_write($config_file, $config);
-
-  my $vhost_addr = '127.0.0.1';
-  my $vhost_port = $port - 1;
-
-  if (open(my $fh, ">> $config_file")) {
-    print $fh <<EOC;
-<VirtualHost $vhost_addr>
-  ServerName "DefaultServer VHost"
-  Port $vhost_port
-</VirtualHost>
-EOC
-
-    unless (close($fh)) {
-      die("Can't write $config_file: $!");
-    }
-
-  } else {
-    die("Can't open $config_file: $!");
-  }
- 
-  # Open pipes, for use between the parent and child processes.  Specifically,
-  # the child will indicate when it's done with its test by writing a message
-  # to the parent.
-  my ($rfh, $wfh);
-  unless (pipe($rfh, $wfh)) {
-    die("Can't open pipe: $!");
-  }
-
-  my $ex;
-
-  # Fork child
-  $self->handle_sigchld();
-  defined(my $pid = fork()) or die("Can't fork: $!");
-  if ($pid) {
-    eval {
-      my $client = ProFTPD::TestSuite::FTP->new('127.0.0.1', $port, 1);
-      $client->login($user, $passwd);
-
-      my $conn = $client->list_raw();
-      if ($conn) {
-        eval { $conn->close() };
-        die("LIST succeeded unexpectedly");
-      }
-
-      my $resp_code = $client->response_code();
-      my $resp_msg = $client->response_msg();
-
-      my $expected = 425;
-      $self->assert($expected == $resp_code,
-        test_msg("Expected $expected, got $resp_code"));
-
-      $expected = 'Unable to build data connection: Address already in use';
-      $self->assert($expected eq $resp_msg,
-        test_msg("Expected '$expected', got '$resp_msg'"));
-
-      ($resp_code, $resp_msg) = $client->quit();
-
-      $expected = 221;
-      $self->assert($expected == $resp_code,
-        test_msg("Expected $expected, got $resp_code"));
-
-      $expected = 'Goodbye.';
-      $self->assert($expected eq $resp_msg,
-        test_msg("Expected '$expected', got '$resp_msg'"));
-    };
-
-    if ($@) {
-      $ex = $@;
-    }
-
-    $wfh->print("done\n");
-    $wfh->flush();
-
-  } else {
-    eval { server_wait($config_file, $rfh, $timeout + 1) };
-    if ($@) {
-      warn($@);
-      exit 1;
-    }
-
-    exit 0;
-  }
-
-  # Stop server
-  server_stop($pid_file);
-
-  $self->assert_child_ok($pid);
-
-  if ($ex) {
-    test_append_logfile($log_file);
-    unlink($log_file);
-
-    die($ex);
-  }
-
-  unlink($log_file);
-}
-
 1;
