?

Log in

No account? Create an account

Solaris, IPV6, getnameinfo() completely busted?

« previous entry | next entry »
Jan. 4th, 2008 | 11:25 am

Dear LazyWeb,

No matter how I modify this following code it does not work with Solaris. Solaris always returns "non-recoverable name resolution failure":

     int error;
     char port_buf[NI_MAXSERV];
     size_socket addrLen = sizeof(vio->remote);
     if (getpeername(vio->sd, (struct sockaddr *) (&vio->remote),
                     &addrLen) != 0)
     {
       DBUG_PRINT("exit", ("getpeername gave error: %d", socket_errno));
       DBUG_RETURN(1);
     }

     if ((error= getnameinfo((struct sockaddr *)(&vio->remote),
                             sizeof(struct sockaddr_storage),
                             buf, buflen,
                             port_buf, NI_MAXSERV, NI_NUMERICHOST|NI_NUMERICSERV)))
     {
       WATCHPOINT_STRING(gai_strerror(error));
       DBUG_PRINT("exit", ("getnameinfo gave error: %s",
                           gai_strerror(error)));
       DBUG_RETURN(1);
     }




Linux, FreeBSD, OSX, AIX, Windows.... all are fine. Except Solaris. For DNS resolution nsswitch.conf lists files, then DNS.

I am completely capable of FUBAR code myself. So some part of me really does believe this is my mistake. When I google for "non-recoverable name resolution failure" and Solaris I get plenty of hits though, so I am skeptical.

Very few open source projects have good IPv6 support at this time, so it is not like I can just poke around and other groups code and see how they are doing it (though I am tempted to fire off some patches...).

(...and yes this is MySQL, and if I have to all platforms but Solaris get IPv6 support, I have a very low tolerance for work arounds on broken operating systems).

Link | Leave a comment |

Comments {18}

Lover of Ideas

(no subject)

from: omnifarious
date: Jan. 5th, 2008 10:28 am (UTC)
Link

Well, I guess I stand corrected then. I was speaking of their support from the standpoint of actually using the APIs. I know that when I've tested things I've gotten all the information I ever needed about how to reach a particular host. I guess though, that if they're using older APIs this doesn't help you understand what's going on with your Solaris code.

The IPv6 APIs for name resolution and such have been in flux for quite awhile. I haven't ever examined them really closely as most of my programming since about 2003 has been in Python. I should research what the most recent thing to do is supposed to be now.

Reply | Parent | Thread

Brian "Krow" Aker

(no subject)

from: krow
date: Jan. 5th, 2008 05:14 pm (UTC)
Link

It would be easy to patch up Python from looking at the code. It would move quite a few of their IFDEF as well.


Reply | Parent | Thread