emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Asynchronous DNS


From: Eli Zaretskii
Subject: Re: Asynchronous DNS
Date: Mon, 15 Feb 2016 12:55:45 +0200

> From: Lars Ingebrigtsen <address@hidden>
> Date: Mon, 15 Feb 2016 17:14:35 +1100
> 
> Async DNS for 'en.wikipedia.org'
> Waiting for socket from set-process-filter...
> Waiting for socket from set-process-filter...
> Async DNS for 'upload.wikimedia.org'
> Waiting for socket from set-process-filter...
> Async DNS for 'upload.wikimedia.org'
> Waiting for socket from set-process-filter...
> Async DNS for 'upload.wikimedia.org'
> Waiting for socket from set-process-filter...
> Async DNS for 'upload.wikimedia.org'
> Waiting for socket from set-process-filter...
> Async DNS for 'upload.wikimedia.org'
> Waiting for socket from set-process-filter...
> Async DNS for 'upload.wikimedia.org'
> Waiting for socket from set-process-filter...
> Waiting for socket from set-process-filter...
> Async DNS for 'en.wikipedia.org'
> Waiting for socket from set-process-filter...
> Waiting for socket from set-process-filter...
> 
> Does that function really have to wait for a socket?

It needs the input file descriptor:

>   if (p->infd >= 0)
>     {
>       if (EQ (filter, Qt) && !EQ (p->status, Qlisten))
>         {
>           FD_CLR (p->infd, &input_wait_mask);        <<<<<<<<<<<<<<<<<<
>           FD_CLR (p->infd, &non_keyboard_wait_mask); <<<<<<<<<<<<<<<<<<
>         }
>       else if (EQ (p->filter, Qt)
>                /* Network or serial process not stopped:  */
>                && !EQ (p->command, Qt))
>         {
>           FD_SET (p->infd, &input_wait_mask);
>           FD_SET (p->infd, &non_keyboard_wait_mask);
>         }
>     }
> 
> but I don't think that makes much of a difference...  hm...

This is needed to set up the various masks that report on the socket
being ready to be read.  The file descriptor comes from the socket, so
you cannot set up those masks until you have the socket.  Of course,
until you do have a socket, no filter will ever need to be invoked, so
this part of the filter setup could be deferred until the connection
succeeds.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]