From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.devel Subject: Re: Asynchronous DNS Date: Mon, 15 Feb 2016 12:55:45 +0200 Message-ID: <83k2m6xmxa.fsf@gnu.org> References: <86io20n3xn.fsf@realize.ch> <8760y055l1.fsf@gnus.org> <8660xzmyyr.fsf@realize.ch> <87pow7ocyw.fsf@gnus.org> <861t8nmxlj.fsf@realize.ch> <87y4auiurw.fsf@gnus.org> <86k2me8dee.fsf@realize.ch> <83a8n9ddk5.fsf@gnu.org> <864mdh8vj5.fsf@realize.ch> <87pow579kt.fsf@gnus.org> <86ziv87st0.fsf@realize.ch> <87vb5u4qtq.fsf@gnus.org> <86egci6xvk.fsf@realize.ch> <87twldgsrv.fsf@gnus.org> <8637sw7w4m.fsf@realize.ch> <87vb5sdod6.fsf@gnus.org> <83lh6nzvfp.fsf@gnu.org> <87fuwv6ai4.fsf@gnus.org> <86oabi6dts.fsf@realize.ch> <87wpq68u4d.fsf@gnus.org> <8737suwldg.fsf@gnus.org> Reply-To: Eli Zaretskii NNTP-Posting-Host: plane.gmane.org X-Trace: ger.gmane.org 1455533811 24453 80.91.229.3 (15 Feb 2016 10:56:51 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 15 Feb 2016 10:56:51 +0000 (UTC) Cc: emacs-devel@gnu.org To: Lars Ingebrigtsen Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Feb 15 11:56:39 2016 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1aVGpb-0001zW-HN for ged-emacs-devel@m.gmane.org; Mon, 15 Feb 2016 11:56:39 +0100 Original-Received: from localhost ([::1]:58962 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aVGpa-0000PU-VX for ged-emacs-devel@m.gmane.org; Mon, 15 Feb 2016 05:56:39 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:32802) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aVGoj-0007tk-KY for emacs-devel@gnu.org; Mon, 15 Feb 2016 05:55:46 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aVGoe-0003uS-H3 for emacs-devel@gnu.org; Mon, 15 Feb 2016 05:55:45 -0500 Original-Received: from fencepost.gnu.org ([2001:4830:134:3::e]:47118) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aVGoe-0003uO-3C; Mon, 15 Feb 2016 05:55:40 -0500 Original-Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:4583 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.82) (envelope-from ) id 1aVGod-0006UA-AZ; Mon, 15 Feb 2016 05:55:39 -0500 In-reply-to: <8737suwldg.fsf@gnus.org> (message from Lars Ingebrigtsen on Mon, 15 Feb 2016 17:14:35 +1100) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:199965 Archived-At: > From: Lars Ingebrigtsen > 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.