[BACK]Return to channels.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Diff for /src/usr.bin/ssh/channels.c between version 1.140 and 1.141

version 1.140, 2001/10/10 22:18:47 version 1.141, 2001/11/29 21:10:51
Line 2390 
Line 2390 
   
 /*  /*
  * Creates an internet domain socket for listening for X11 connections.   * Creates an internet domain socket for listening for X11 connections.
  * Returns a suitable value for the DISPLAY variable, or NULL if an error   * Returns a suitable display number for the DISPLAY variable, or -1 if
  * occurs.   * an error occurs.
  */   */
 char *  int
 x11_create_display_inet(int screen_number, int x11_display_offset)  x11_create_display_inet(int x11_display_offset, int gateway_ports)
 {  {
         int display_number, sock;          int display_number, sock;
         u_short port;          u_short port;
         struct addrinfo hints, *ai, *aitop;          struct addrinfo hints, *ai, *aitop;
         char strport[NI_MAXSERV];          char strport[NI_MAXSERV];
         int gaierr, n, num_socks = 0, socks[NUM_SOCKS];          int gaierr, n, num_socks = 0, socks[NUM_SOCKS];
         char display[512];  
         char hostname[MAXHOSTNAMELEN];  
   
         for (display_number = x11_display_offset;          for (display_number = x11_display_offset;
              display_number < MAX_DISPLAYS;               display_number < MAX_DISPLAYS;
Line 2410 
Line 2408 
                 port = 6000 + display_number;                  port = 6000 + display_number;
                 memset(&hints, 0, sizeof(hints));                  memset(&hints, 0, sizeof(hints));
                 hints.ai_family = IPv4or6;                  hints.ai_family = IPv4or6;
                 hints.ai_flags = AI_PASSIVE;            /* XXX loopback only ? */                  hints.ai_flags = gateway_ports ? AI_PASSIVE : 0;
                 hints.ai_socktype = SOCK_STREAM;                  hints.ai_socktype = SOCK_STREAM;
                 snprintf(strport, sizeof strport, "%d", port);                  snprintf(strport, sizeof strport, "%d", port);
                 if ((gaierr = getaddrinfo(NULL, strport, &hints, &aitop)) != 0) {                  if ((gaierr = getaddrinfo(NULL, strport, &hints, &aitop)) != 0) {
                         error("getaddrinfo: %.100s", gai_strerror(gaierr));                          error("getaddrinfo: %.100s", gai_strerror(gaierr));
                         return NULL;                          return -1;
                 }                  }
                 for (ai = aitop; ai; ai = ai->ai_next) {                  for (ai = aitop; ai; ai = ai->ai_next) {
                         if (ai->ai_family != AF_INET && ai->ai_family != AF_INET6)                          if (ai->ai_family != AF_INET && ai->ai_family != AF_INET6)
Line 2423 
Line 2421 
                         sock = socket(ai->ai_family, SOCK_STREAM, 0);                          sock = socket(ai->ai_family, SOCK_STREAM, 0);
                         if (sock < 0) {                          if (sock < 0) {
                                 error("socket: %.100s", strerror(errno));                                  error("socket: %.100s", strerror(errno));
                                 return NULL;                                  return -1;
                         }                          }
                         if (bind(sock, ai->ai_addr, ai->ai_addrlen) < 0) {                          if (bind(sock, ai->ai_addr, ai->ai_addrlen) < 0) {
                                 debug("bind port %d: %.100s", port, strerror(errno));                                  debug("bind port %d: %.100s", port, strerror(errno));
Line 2446 
Line 2444 
         }          }
         if (display_number >= MAX_DISPLAYS) {          if (display_number >= MAX_DISPLAYS) {
                 error("Failed to allocate internet-domain X11 display socket.");                  error("Failed to allocate internet-domain X11 display socket.");
                 return NULL;                  return -1;
         }          }
         /* Start listening for connections on the socket. */          /* Start listening for connections on the socket. */
         for (n = 0; n < num_socks; n++) {          for (n = 0; n < num_socks; n++) {
Line 2455 
Line 2453 
                         error("listen: %.100s", strerror(errno));                          error("listen: %.100s", strerror(errno));
                         shutdown(sock, SHUT_RDWR);                          shutdown(sock, SHUT_RDWR);
                         close(sock);                          close(sock);
                         return NULL;                          return -1;
                 }                  }
         }          }
   
         /* Set up a suitable value for the DISPLAY variable. */  
         if (gethostname(hostname, sizeof(hostname)) < 0)  
                 fatal("gethostname: %.100s", strerror(errno));  
         snprintf(display, sizeof display, "%.400s:%d.%d", hostname,  
                  display_number, screen_number);  
   
         /* Allocate a channel for each socket. */          /* Allocate a channel for each socket. */
         for (n = 0; n < num_socks; n++) {          for (n = 0; n < num_socks; n++) {
                 sock = socks[n];                  sock = socks[n];
Line 2474 
Line 2466 
                     0, xstrdup("X11 inet listener"), 1);                      0, xstrdup("X11 inet listener"), 1);
         }          }
   
         /* Return a suitable value for the DISPLAY environment variable. */          /* Return the display number for the DISPLAY environment variable. */
         return xstrdup(display);          return display_number;
 }  }
   
 #ifndef X_UNIX_PATH  #ifndef X_UNIX_PATH

Legend:
Removed from v.1.140  
changed lines
  Added in v.1.141