[haiku-bugs] Re: [Haiku] #12319: Time/NTP sometimes crashes in gethostbyname()

  • From: "pulkomandy" <trac@xxxxxxxxxxxx>
  • Date: Sat, 22 Apr 2017 06:17:53 -0000

#12319: Time/NTP sometimes crashes in gethostbyname()
----------------------------------+----------------------------
   Reporter:  ttcoder             |      Owner:  nobody
       Type:  bug                 |     Status:  new
   Priority:  normal              |  Milestone:  R1
  Component:  Network & Internet  |    Version:  R1/Development
 Resolution:                      |   Keywords:
 Blocked By:                      |   Blocking:
Has a Patch:  1                   |   Platform:  All
----------------------------------+----------------------------

Comment (by pulkomandy):

 In the jamfile, I think you want to link to libnetwork rather than libnet.

 The error handling seems a bit off. If resolver.InitCheck is not ok, the
 error should be something like "could not resolve server address", not
 "could not contact server".

 If resolving all server addresses fail, I think your code will end up in
 an infinite loop: resolver.GetNextAddress will not return B_OK, and you
 will call it over and over again. I think using a {{{while
 (resolver.GetNextAddress(&cookie, address) == B_OK)}}} would be less error
 prone.

 After the while, you are checking the error state of the resolver, but not
 that of actually writing to the server. I suggest storing the result of
 sendto in a bool:

 {{{
 if (sendto(...) != -1) {
     success = true;
     break;
 }
 }}}

 Then after the while loop:

 {{{
 if (!success) {
     // error handling goes here
 }
 }}}

--
Ticket URL: <https://dev.haiku-os.org/ticket/12319#comment:13>
Haiku <https://dev.haiku-os.org>
The Haiku operating system.

Other related posts: