Merged the latest version of the Tentacle server from the SF repo.
(cherry picked from commit e44ef7ddc1
)
This commit is contained in:
parent
1b8b9f3390
commit
18e2eb54a0
Binary file not shown.
|
@ -64,6 +64,7 @@ use threads;
|
|||
use Thread::Semaphore;
|
||||
use POSIX ":sys_wait_h";
|
||||
use Time::HiRes qw(usleep);
|
||||
use Scalar::Util qw(refaddr);
|
||||
|
||||
# Constants for Win32 services.
|
||||
use constant WIN32_SERVICE_STOPPED => 0x01;
|
||||
|
@ -682,7 +683,7 @@ sub accept_connections {
|
|||
my $pid;
|
||||
my $t_server_socket;
|
||||
|
||||
# Ignore SIGPIPE errors (happens on FreeBSD when SSL is enabled ¿?)
|
||||
# Ignore SIGPIPE
|
||||
$SIG{PIPE} = 'IGNORE';
|
||||
|
||||
# Start server
|
||||
|
@ -769,14 +770,21 @@ sub serve_proxy_connection {
|
|||
|
||||
# Forward data between the client and the server.
|
||||
eval {
|
||||
while (1) {
|
||||
if ($t_select->can_read(0)) {
|
||||
my $select = IO::Select->new ();
|
||||
$select->add($t_proxy_socket);
|
||||
$select->add($t_client_socket);
|
||||
while (my @ready = $select->can_read()) {
|
||||
foreach my $socket (@ready) {
|
||||
if (refaddr($socket) == refaddr($t_client_socket)) {
|
||||
my ($read, $data) = recv_data($t_block_size);
|
||||
return unless defined($data);
|
||||
send_data_proxy($data);
|
||||
}
|
||||
if ($t_proxy_select->can_read(0)) {
|
||||
}
|
||||
else {
|
||||
my ($read, $data) = recv_data_proxy($t_block_size);
|
||||
return unless defined($data);
|
||||
send_data($data);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -969,8 +977,10 @@ sub print_log {
|
|||
sub error {
|
||||
|
||||
if ($t_quiet == 0) {
|
||||
die("[err] $_[0]\n\n");
|
||||
print (STDERR "[err] $_[0]\n");
|
||||
}
|
||||
|
||||
die("\n");
|
||||
}
|
||||
|
||||
################################################################################
|
||||
|
|
Binary file not shown.
|
@ -64,6 +64,7 @@ use threads;
|
|||
use Thread::Semaphore;
|
||||
use POSIX ":sys_wait_h";
|
||||
use Time::HiRes qw(usleep);
|
||||
use Scalar::Util qw(refaddr);
|
||||
|
||||
# Constants for Win32 services.
|
||||
use constant WIN32_SERVICE_STOPPED => 0x01;
|
||||
|
@ -769,14 +770,21 @@ sub serve_proxy_connection {
|
|||
|
||||
# Forward data between the client and the server.
|
||||
eval {
|
||||
while (1) {
|
||||
if ($t_select->can_read(0)) {
|
||||
my $select = IO::Select->new ();
|
||||
$select->add($t_proxy_socket);
|
||||
$select->add($t_client_socket);
|
||||
while (my @ready = $select->can_read()) {
|
||||
foreach my $socket (@ready) {
|
||||
if (refaddr($socket) == refaddr($t_client_socket)) {
|
||||
my ($read, $data) = recv_data($t_block_size);
|
||||
return unless defined($data);
|
||||
send_data_proxy($data);
|
||||
}
|
||||
if ($t_proxy_select->can_read(0)) {
|
||||
}
|
||||
else {
|
||||
my ($read, $data) = recv_data_proxy($t_block_size);
|
||||
return unless defined($data);
|
||||
send_data($data);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue