1. I believe I have fixed all the login/logout 'broken pipe' errors
[spider.git] / src / client.c
index 98f5a668f96e62c17a5537b106fc62d372ade3e1..885b50efa3601a019e4038001dbb84f9787eaae5 100644 (file)
@@ -90,6 +90,8 @@ char *root = "/spider";         /* root of data tree, can be overridden by DXSPI
 int timeout = 60;                              /* default timeout for logins and things */
 int paclen = DEFPACLEN;                        /* default buffer size for outgoing packets */
 int tabsize = 8;                               /* default tabsize for text messages */
+char *connsort = "local";              /* the connection variety */
+
 
 myregex_t iscallreg[] = {              /* regexes to determine whether this is a reasonable callsign */
        {
@@ -289,7 +291,7 @@ int fcb_handler(sel_t *sp, int in, int out, int err)
        unsigned char c;
        
        /* input modes */
-       if (in) {
+       if (ending == 0 && in) {
                char *p, buf[MAXBUFL];
                int r;
 
@@ -507,11 +509,11 @@ lend:;
  */
 void setmode(char *m)
 {
-       char *connsort = strlower(m);
-       if (eq(connsort, "telnet") || eq(connsort, "local") || eq(connsort, "nlonly") {
+       connsort = strlower(m);
+       if (eq(connsort, "telnet") || eq(connsort, "local") || eq(connsort, "nlonly")) {
                nl = '\n';
                echo = 1;
-               mode = eq(connsort, "nlonly") 2 : 1;
+               mode = eq(connsort, "nlonly") 2 : 1;
        } else if (eq(connsort, "ax25")) {
                nl = '\r';
                echo = 0;
@@ -577,7 +579,7 @@ lerr:
        }
 
        /* this is kludgy, but hey so is the rest of this! */
-       if (!eq(connsort, "ax25") && paclen == DEFPACLEN) {
+       if (mode != 0 && paclen == DEFPACLEN) {
                paclen = MAXPACLEN;
        }
 }
@@ -627,9 +629,11 @@ void term_timeout(int i)
 
 void terminate(int i)
 {
+#if 0
        if (node && send_Z && call) {
                send_msg(node, 'Z', "bye", 3);
        }
+#endif
        
        signal(SIGALRM, term_timeout);
        alarm(10);
@@ -770,8 +774,6 @@ main(int argc, char *argv[])
        
        /* is this a login? */
        if (eq(call, "LOGIN") || eq(call, "login")) {
-               chgstate(LOGIN);
-       } else if (eq(
        
                char buf[MAXPACLEN+1];
                char callsign[MAXCALLSIGN+1];
@@ -850,9 +852,9 @@ lgotcall:
        send_msg(node, 'A', connsort, strlen(connsort));
        
        /* main processing loop */
-       while (!ending) {
+       while (ending == 0) {
                sel_run();
-               if (!ending) {
+               if (ending == 0) {
                        process_stdin();
                        process_node();
                }