1. I believe I have fixed all the login/logout 'broken pipe' errors
[spider.git] / perl / client.pl
index 4a472984a0c3320684edc357148f6c295e823e68..66c7b0927337d88443097fb62b2c1daa1cc5dce9 100755 (executable)
@@ -51,10 +51,10 @@ use IPC::Open2;
 sub cease
 {
        my $sendz = shift;
-       if ($conn && $sendz) {
-               $conn->send_now("Z$call|bye...");
-               sleep(1);
-       }
+#      if ($conn && $sendz) {
+#              $conn->send_now("Z$call|bye...");
+#              sleep(1);
+#      }
        $stdout->flush if $stdout;
        if ($pid) {
                dbg('connect', "killing $pid");
@@ -99,7 +99,7 @@ sub rec_socket
 {
        my ($con, $msg, $err) = @_;
        if (defined $err && $err) {
-               cease(1);
+               cease(0);
        }
        if (defined $msg) {
                my ($sort, $call, $line) = $msg =~ /^(\w)([^\|]+)\|(.*)$/;
@@ -155,6 +155,8 @@ sub rec_socket
                # any other sorts that might happen are silently ignored.
                # ******************************************************
                # ******************************************************
+       } else {
+               cease(0);
        }
        $lasttime = time; 
 }
@@ -178,8 +180,9 @@ sub rec_stdin
                cease(1);
        } elsif ($r > 0) {
                if ($mode) {
-                       $buf =~ s/\r/\n/og if $mode == 1;
-                       $buf =~ s/\r\n/\n/og if $mode == 2;
+                       $buf =~ s/\r/\n/g if $mode == 1;
+                       $buf =~ s/[\r\x00]//g if $mode == 2;
+                       
                        $dangle = !($buf =~ /\n$/);
                        if ($buf eq "\n") {
                                @lines = (" ");
@@ -278,7 +281,7 @@ sub dochat
                                        dbg('connect', "received 0 length line, aborting...");
                                        cease(11);
                                }
-                               $line =~ s/\r\n/\n/og;
+                               $line =~ s/\r//g;
                                chomp;
                        } elsif ($csort eq 'ax25' || $csort eq 'prog') {
                                local $/ = "\r";
@@ -287,7 +290,8 @@ sub dochat
                                        dbg('connect', "received 0 length line, aborting...");
                                        cease(11);
                                }
-                               $line =~ s/\r//og;
+                               $line =~ s/\r/\n/g;
+                               chomp;
                        }
                        dbg('connect', "received \"$line\"");
                        if ($abort && $line =~ /$abort/i) {