[openbeosnetteam] Re: DNS bug

> the mean DNS bug was hidden in our code. 

The opposite will have suprise me!
:-)

> But I know where it is and now it will be killed! :)))

Great bug hunting job!

> I hope this fixes it:
> The bug is due to R5 compatibility mode. Our DNS code uses OBOS 
> values (address family, etc.), but Net+ tries to open an R5 socket, so 
the boolean g_beos_r5_compatibility (socket.c) is set to true in 
socket().
> If this variable is set to true connect() (socket.c) calls 
> convert_from_beos_r5_sockaddr() to translate the sockaddr to our own 
format.
> The first address gets resolved because Net+ makes the first DNS 
> lookup before any other sockets were created. So, the socket code 
assumes we are using native codes. When the lookup finishes Net+ opens 
an R5 socket which sets compatibility mode. The next DNS lookup tries 
to use an OBOS socket, but connect() fails because it thinks the 
sockaddr is R5-style, not OBOS-style! Thus, all subsequent lookups 
fail.

Damn. Stupid me.
I was wrong thinking the first socket opened() can inform about R5 
compatibility for all the others coming after.
Sorry about that.

- Philippe

--
Fortune Cookie Says:

"The rights you have are the rights given you by this Committee [the
House Un-American Activities Committee].  We will determine what rights
you have and what rights you have not got."
                -- J. Parnell Thomas

Other related posts: