]> andersk Git - gssapi-openssh.git/blobdiff - openssh/packet.c
Re-import of OpenSSH 3.7.1p2 (Chase\!)
[gssapi-openssh.git] / openssh / packet.c
index daae9ffaaa2ad06d2b27c1f2ac53849477e1545e..02b629f30f6ec5358248fa8b26a262527c29fd11 100644 (file)
@@ -37,7 +37,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: packet.c,v 1.112 2003/09/23 20:17:11 markus Exp $");
+RCSID("$OpenBSD: packet.c,v 1.110 2003/09/19 09:02:02 markus Exp $");
 
 #include "openbsd-compat/sys-queue.h"
 
@@ -165,6 +165,8 @@ packet_set_connection(int fd_in, int fd_out)
                buffer_init(&incoming_packet);
                TAILQ_INIT(&outgoing);
        }
+       /* Kludge: arrange the close function to be called from fatal(). */
+       fatal_add_cleanup((void (*) (void *)) packet_close, NULL);
 }
 
 /* Returns 1 if remote host is connected via socket, 0 if not. */
@@ -304,7 +306,7 @@ packet_connection_is_ipv4(void)
        if (to.ss_family == AF_INET)
                return 1;
 #ifdef IPV4_IN_IPV6
-       if (to.ss_family == AF_INET6 &&
+       if (to.ss_family == AF_INET6 && 
            IN6_IS_ADDR_V4MAPPED(&((struct sockaddr_in6 *)&to)->sin6_addr))
                return 1;
 #endif
@@ -868,7 +870,7 @@ packet_read_seqnr(u_int32_t *seqnr_p)
                len = read(connection_in, buf, sizeof(buf));
                if (len == 0) {
                        logit("Connection closed by %.200s", get_remote_ipaddr());
-                       cleanup_exit(255);
+                       fatal_cleanup();
                }
                if (len < 0)
                        fatal("Read from socket failed: %.100s", strerror(errno));
@@ -1134,7 +1136,7 @@ packet_read_poll_seqnr(u_int32_t *seqnr_p)
                                logit("Received disconnect from %s: %u: %.400s",
                                    get_remote_ipaddr(), reason, msg);
                                xfree(msg);
-                               cleanup_exit(255);
+                               fatal_cleanup();
                                break;
                        case SSH2_MSG_UNIMPLEMENTED:
                                seqnr = packet_get_int();
@@ -1159,7 +1161,7 @@ packet_read_poll_seqnr(u_int32_t *seqnr_p)
                                msg = packet_get_string(NULL);
                                logit("Received disconnect from %s: %.400s",
                                    get_remote_ipaddr(), msg);
-                               cleanup_exit(255);
+                               fatal_cleanup();
                                xfree(msg);
                                break;
                        default:
@@ -1336,7 +1338,8 @@ packet_disconnect(const char *fmt,...)
 
        /* Close the connection. */
        packet_close();
-       cleanup_exit(255);
+
+       fatal_cleanup();
 }
 
 /* Checks if there is any buffered output, and tries to write some of the output. */
@@ -1403,10 +1406,10 @@ packet_not_very_much_data_to_write(void)
 }
 
 
+#if defined(IP_TOS) && !defined(IP_TOS_IS_BROKEN)
 static void
 packet_set_tos(int interactive)
 {
-#if defined(IP_TOS) && !defined(IP_TOS_IS_BROKEN)
        int tos = interactive ? IPTOS_LOWDELAY : IPTOS_THROUGHPUT;
 
        if (!packet_connection_is_on_socket() ||
@@ -1416,8 +1419,8 @@ packet_set_tos(int interactive)
            sizeof(tos)) < 0)
                error("setsockopt IP_TOS %d: %.100s:",
                    tos, strerror(errno));
-#endif
 }
+#endif
 
 /* Informs that the current session is interactive.  Sets IP flags for that. */
 
@@ -1438,7 +1441,10 @@ packet_set_interactive(int interactive)
                return;
        if (interactive)
                set_nodelay(connection_in);
+#if defined(IP_TOS) && !defined(IP_TOS_IS_BROKEN)
        packet_set_tos(interactive);
+#endif
+
 }
 
 /* Returns true if the current connection is interactive. */
This page took 0.035558 seconds and 4 git commands to generate.