Diff for /qemu/qemu-sockets.c between versions 1.1.1.1 and 1.1.1.2

version 1.1.1.1, 2018/04/24 16:50:49 version 1.1.1.2, 2018/04/24 17:20:57
Line 161  int inet_listen(const char *str, char *o Line 161  int inet_listen(const char *str, char *o
   
     /* create socket + bind */      /* create socket + bind */
     for (e = res; e != NULL; e = e->ai_next) {      for (e = res; e != NULL; e = e->ai_next) {
         getnameinfo((struct sockaddr*)e->ai_addr,e->ai_addrlen,          getnameinfo((struct sockaddr*)e->ai_addr,e->ai_addrlen,
                     uaddr,INET6_ADDRSTRLEN,uport,32,                          uaddr,INET6_ADDRSTRLEN,uport,32,
                     NI_NUMERICHOST | NI_NUMERICSERV);                          NI_NUMERICHOST | NI_NUMERICSERV);
         slisten = socket(e->ai_family, e->ai_socktype, e->ai_protocol);          slisten = socket(e->ai_family, e->ai_socktype, e->ai_protocol);
         if (slisten < 0) {          if (slisten < 0) {
             fprintf(stderr,"%s: socket(%s): %s\n", __FUNCTION__,              fprintf(stderr,"%s: socket(%s): %s\n", __FUNCTION__,
                     inet_strfamily(e->ai_family), strerror(errno));                      inet_strfamily(e->ai_family), strerror(errno));
             continue;              continue;
         }          }
   
         setsockopt(slisten,SOL_SOCKET,SO_REUSEADDR,(void*)&on,sizeof(on));          setsockopt(slisten,SOL_SOCKET,SO_REUSEADDR,(void*)&on,sizeof(on));
 #ifdef IPV6_V6ONLY  #ifdef IPV6_V6ONLY
         if (e->ai_family == PF_INET6) {          if (e->ai_family == PF_INET6) {
             /* listen on both ipv4 and ipv6 */              /* listen on both ipv4 and ipv6 */
             setsockopt(slisten,IPPROTO_IPV6,IPV6_V6ONLY,(void*)&off,sizeof(off));              setsockopt(slisten,IPPROTO_IPV6,IPV6_V6ONLY,(void*)&off,
                   sizeof(off));
         }          }
 #endif  #endif
   
Line 183  int inet_listen(const char *str, char *o Line 184  int inet_listen(const char *str, char *o
             if (bind(slisten, e->ai_addr, e->ai_addrlen) == 0) {              if (bind(slisten, e->ai_addr, e->ai_addrlen) == 0) {
                 if (sockets_debug)                  if (sockets_debug)
                     fprintf(stderr,"%s: bind(%s,%s,%d): OK\n", __FUNCTION__,                      fprintf(stderr,"%s: bind(%s,%s,%d): OK\n", __FUNCTION__,
                             inet_strfamily(e->ai_family), uaddr, inet_getport(e));                          inet_strfamily(e->ai_family), uaddr, inet_getport(e));
                 goto listen;                  goto listen;
             }              }
             try_next = to && (inet_getport(e) <= to + port_offset);              try_next = to && (inet_getport(e) <= to + port_offset);
Line 207  listen: Line 208  listen:
     if (listen(slisten,1) != 0) {      if (listen(slisten,1) != 0) {
         perror("listen");          perror("listen");
         closesocket(slisten);          closesocket(slisten);
           freeaddrinfo(res);
         return -1;          return -1;
     }      }
     if (ostr) {      if (ostr) {
Line 278  int inet_connect(const char *str, int so Line 280  int inet_connect(const char *str, int so
         inet_print_addrinfo(__FUNCTION__, res);          inet_print_addrinfo(__FUNCTION__, res);
   
     for (e = res; e != NULL; e = e->ai_next) {      for (e = res; e != NULL; e = e->ai_next) {
         if (getnameinfo((struct sockaddr*)e->ai_addr,e->ai_addrlen,          if (getnameinfo((struct sockaddr*)e->ai_addr,e->ai_addrlen,
                         uaddr,INET6_ADDRSTRLEN,uport,32,                              uaddr,INET6_ADDRSTRLEN,uport,32,
                         NI_NUMERICHOST | NI_NUMERICSERV) != 0) {                              NI_NUMERICHOST | NI_NUMERICSERV) != 0) {
             fprintf(stderr,"%s: getnameinfo: oops\n", __FUNCTION__);              fprintf(stderr,"%s: getnameinfo: oops\n", __FUNCTION__);
             continue;              continue;
         }          }
         sock = socket(e->ai_family, e->ai_socktype, e->ai_protocol);          sock = socket(e->ai_family, e->ai_socktype, e->ai_protocol);
         if (sock < 0) {          if (sock < 0) {
             fprintf(stderr,"%s: socket(%s): %s\n", __FUNCTION__,              fprintf(stderr,"%s: socket(%s): %s\n", __FUNCTION__,
                     inet_strfamily(e->ai_family), strerror(errno));              inet_strfamily(e->ai_family), strerror(errno));
             continue;              continue;
         }          }
         setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,(void*)&on,sizeof(on));          setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,(void*)&on,sizeof(on));
   
         /* connect to peer */          /* connect to peer */
         if (connect(sock,e->ai_addr,e->ai_addrlen) < 0) {          if (connect(sock,e->ai_addr,e->ai_addrlen) < 0) {
             if (sockets_debug || NULL == e->ai_next)              if (sockets_debug || NULL == e->ai_next)
                 fprintf(stderr, "%s: connect(%s,%s,%s,%s): %s\n", __FUNCTION__,                  fprintf(stderr, "%s: connect(%s,%s,%s,%s): %s\n", __FUNCTION__,
                         inet_strfamily(e->ai_family),                          inet_strfamily(e->ai_family),
                         e->ai_canonname, uaddr, uport, strerror(errno));                          e->ai_canonname, uaddr, uport, strerror(errno));
             closesocket(sock);              closesocket(sock);
             continue;              continue;
         }          }
         if (sockets_debug)          if (sockets_debug)
             fprintf(stderr, "%s: connect(%s,%s,%s,%s): OK\n", __FUNCTION__,              fprintf(stderr, "%s: connect(%s,%s,%s,%s): OK\n", __FUNCTION__,
                     inet_strfamily(e->ai_family),                      inet_strfamily(e->ai_family),
                     e->ai_canonname, uaddr, uport);                      e->ai_canonname, uaddr, uport);
         freeaddrinfo(res);          freeaddrinfo(res);
         return sock;          return sock;
     }      }
     freeaddrinfo(res);      freeaddrinfo(res);
     return -1;      return -1;
Line 322  int unix_listen(const char *str, char *o Line 324  int unix_listen(const char *str, char *o
   
     sock = socket(PF_UNIX, SOCK_STREAM, 0);      sock = socket(PF_UNIX, SOCK_STREAM, 0);
     if (sock < 0) {      if (sock < 0) {
         perror("socket(unix)");          perror("socket(unix)");
         return -1;          return -1;
     }      }
   
     opts = strchr(str, ',');      opts = strchr(str, ',');
     if (opts) {      if (opts) {
         len = opts - str;          len = opts - str;
         path = malloc(len+1);          path = qemu_malloc(len+1);
         snprintf(path, len+1, "%.*s", len, str);          snprintf(path, len+1, "%.*s", len, str);
     } else      } else
         path = strdup(str);          path = qemu_strdup(str);
   
     memset(&un, 0, sizeof(un));      memset(&un, 0, sizeof(un));
     un.sun_family = AF_UNIX;      un.sun_family = AF_UNIX;
Line 365  int unix_listen(const char *str, char *o Line 367  int unix_listen(const char *str, char *o
   
     if (sockets_debug)      if (sockets_debug)
         fprintf(stderr, "bind(unix:%s): OK\n", un.sun_path);          fprintf(stderr, "bind(unix:%s): OK\n", un.sun_path);
     free(path);      qemu_free(path);
     return sock;      return sock;
   
 err:  err:
     free(path);      qemu_free(path);
     closesocket(sock);      closesocket(sock);
     return -1;      return -1;
 }  }
Line 381  int unix_connect(const char *path) Line 383  int unix_connect(const char *path)
   
     sock = socket(PF_UNIX, SOCK_STREAM, 0);      sock = socket(PF_UNIX, SOCK_STREAM, 0);
     if (sock < 0) {      if (sock < 0) {
         perror("socket(unix)");          perror("socket(unix)");
         return -1;          return -1;
     }      }
   
     memset(&un, 0, sizeof(un));      memset(&un, 0, sizeof(un));

Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.2


unix.superglobalmegacorp.com