X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fclient.pl;h=57a5d45b0fa4ea373ac434a08d9c2b623687febe;hb=04ff9a5a6bf8f3ab55bc2922b76a44e2798af8ee;hp=06d4cbc49bf16ab274d4fa926538f35090816b74;hpb=d4074d9835e4c0f7d6d66b9f7eaf522f9ba25728;p=spider.git diff --git a/perl/client.pl b/perl/client.pl index 06d4cbc4..57a5d45b 100755 --- a/perl/client.pl +++ b/perl/client.pl @@ -39,6 +39,7 @@ BEGIN { } use Msg; +use IntMsg; use DXVars; use DXDebug; use DXUtil; @@ -78,8 +79,10 @@ sub sig_term # terminate a child sub sig_chld { - $SIG{CHLD} = \&sig_chld; - $waitedpid = wait; + unless ($^O =~ /^MS/i) { + $SIG{CHLD} = \&sig_chld; + $waitedpid = wait; + } dbg('connect', "caught $pid"); } @@ -94,6 +97,7 @@ sub setmode $out_lineend = "\r\n"; } $/ = $mynl; + $out_lineend = $mynl; } # handle incoming messages @@ -235,7 +239,13 @@ sub doconnect $sock->output_record_separator(''); $sock->option_accept(Dont => TELOPT_ECHO, Wont => TELOPT_ECHO); $sock->open($host) or die "Can't connect to $host port $port $!"; - $sock->binmode(1); + if ($port == 23) { + $sock->telnetmode(1); + $sock->option_send(Dont => TELOPT_ECHO, Wont => TELOPT_ECHO) if $port == 23; + } else { + $sock->telnetmode(0); + } + $sock->binmode(0); $mode = 3; } elsif ($sort eq 'ax25' || $sort eq 'prog') { my @args = split /\s+/, $line; @@ -316,8 +326,8 @@ sub dochat } if ($send) { if ($csort eq 'telnet') { - local $\ = $out_lineend; - $sock->print("$send$out_lineend"); +# local $\ = $out_lineend; + $sock->print("$send\n"); } elsif ($csort eq 'ax25') { local $\ = $out_lineend; $wfh->print("$send"); @@ -394,11 +404,12 @@ if ($call eq $mycall) { $stdout->autoflush(1); -$SIG{'INT'} = \&sig_term; -$SIG{'TERM'} = \&sig_term; -$SIG{'HUP'} = \&sig_term; -$SIG{'CHLD'} = \&sig_chld; -$SIG{'ALRM'} = \&timeout; +unless ($^O =~ /^MS/i) { + $SIG{'INT'} = \&sig_term; + $SIG{'TERM'} = \&sig_term; + $SIG{'HUP'} = \&sig_term; + $SIG{'CHLD'} = \&sig_chld; +} dbgadd('connect'); @@ -513,7 +524,7 @@ if ($ssid) { } -$conn = Msg->connect("$clusteraddr", $clusterport, \&rec_socket); +$conn = IntMsg->connect("$clusteraddr", $clusterport, \&rec_socket); if (! $conn) { if (-r "$data/offline") { open IN, "$data/offline" or die; @@ -534,7 +545,7 @@ Msg->set_event_handler($stdin, "read" => \&rec_stdin); for (;;) { my $t; - Msg->event_loop(1, 1); + Msg->event_loop(1, 0.1); $t = time; if ($t > $lasttime) { if ($outqueue) {