On Sat, Mar 30, 2013 at 06:30:52PM +0100, Eric Faurot wrote:
> On Sat, Mar 30, 2013 at 04:39:47PM +0100, Alexander Bluhm wrote:
> > On Sat, Mar 30, 2013 at 02:30:55PM +0000, Stuart Henderson wrote:
> 
> > > Most other OS are going to be using something closer to the libbind
> > > (ISC) resolver which allows this so I think it would make more sense to
> > > adjust getaddrinfo_async_run() to allow '0' for raw sockets, rather
> > > than patch users.
> > 
> > Makes sense.
> > 
> > > Thinking possibly something like this, but untested:
> > 
> > This fixes my problem.
> > 
> 
> This is a simpler diff. get_port() returns 0 if servname is NULL, and
> the last argument is just a boolean.

Works for me.  OK bluhm@

> 
> Eric.
> 
> Index: getaddrinfo_async.c
> ===================================================================
> RCS file: /cvs/src/lib/libc/asr/getaddrinfo_async.c,v
> retrieving revision 1.12
> diff -u -r1.12 getaddrinfo_async.c
> --- getaddrinfo_async.c       28 Mar 2013 11:47:23 -0000      1.12
> +++ getaddrinfo_async.c       30 Mar 2013 17:23:07 -0000
> @@ -170,7 +170,7 @@
>               }
>  
>               if (ai->ai_socktype == SOCK_RAW &&
> -                 as->as.ai.servname != NULL) {
> +                 get_port(as->as.ai.servname, NULL, 1) != 0) {
>                       ar->ar_gai_errno = EAI_SERVICE;
>                       async_set_state(as, ASR_STATE_HALT);
>                       break;

Reply via email to