~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/drizzled.cc

Fix for bug #324052

Show diffs side-by-side

added added

removed removed

Lines of Context:
796
796
  struct addrinfo *next;
797
797
  struct addrinfo hints;
798
798
  int error;
 
799
  int ip_sock;
799
800
 
800
801
  set_ports();
801
802
 
812
813
    unireg_abort(1);                            /* purecov: tested */
813
814
  }
814
815
 
815
 
  for (next= ai, pollfd_count= 0; next; next= next->ai_next, pollfd_count++)
 
816
  for (next= ai, pollfd_count= 0; next; next= next->ai_next)
816
817
  {
817
 
    int ip_sock;
818
 
 
819
818
    ip_sock= socket(next->ai_family, next->ai_socktype, next->ai_protocol);
820
 
 
821
819
    if (ip_sock == -1)
822
820
    {
823
 
      sql_perror(ER(ER_IPSOCK_ERROR));          /* purecov: tested */
824
 
      unireg_abort(1);                          /* purecov: tested */
 
821
      /* getaddrinfo can return bad results, skip them here and error later if
 
822
         we didn't find anything to bind to. */
 
823
      continue;
825
824
    }
826
825
 
827
826
    fds[pollfd_count].fd= ip_sock;
828
827
    fds[pollfd_count].events= POLLIN | POLLERR;
 
828
    pollfd_count++;
829
829
 
830
830
    /* Add options for our listening socket */
831
831
    {
904
904
    }
905
905
  }
906
906
 
 
907
  if (pollfd_count == 0 && ai != NULL && ip_sock == -1)
 
908
  {
 
909
    sql_perror(ER(ER_IPSOCK_ERROR));            /* purecov: tested */
 
910
    unireg_abort(1);                            /* purecov: tested */
 
911
  }
 
912
 
907
913
  freeaddrinfo(ai);
908
914
 
909
915
  /* We need a pipe to wakeup the listening thread since some operating systems