On Tue, Sep 17, 2013 at 12:25:17AM -0400, Ted Unangst wrote: > On Mon, Sep 16, 2013 at 21:23, Kapetanakis Giannis wrote: > > > The following diff fixes the problem and the program works in current. > > The program is bahamut ircd and I managed to make it work up to 5.3 > > without this. > > In current it's broken due to resolver errors. > > > > Don't know if you have a reason to not populate _res.nsaddr_list in the > > new res_init() from asr interface. > > I think a patch like this should go in. It's just easier to be > compatible with the stupid old _res interface for now. Maybe later we > can push programs to use the builtin async resolver. > > In the mean time, some feedback on the diff. > > > _res.nscount = ac->ac_nscount; > > + for (i = 0; i < ac->ac_nscount; i++) { > > + _res.nsaddr_list[i] = *((struct sockaddr_in *) > > ac->ac_ns[i]); > > + } > > + > > I think this will give unexpected results if ipv6 resolvers are > configured. You'll notice the asr code is allocating possibly varying > amounts of memory. I think you're going to want to memcpy the correct > length. > > memcpy(&_res.nsaddr_list[i], ac->ac_ns[i], ac->ac_ns[i]->sa_len);
That's looks better indeed. -Otto