From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Lars Ingebrigtsen Newsgroups: gmane.emacs.bugs Subject: bug#22493: 25.1.50; open-gnutls-stream doesn't respect :nowait, so the connections are synchronous Date: Wed, 03 Feb 2016 12:58:30 +1100 Message-ID: <8760y6zha1.fsf@gnus.org> References: <87mvrnzpge.fsf@gnus.org> <878u37zndq.fsf@gnus.org> <83r3gzwhg8.fsf@gnu.org> <87fuxebrsy.fsf@gnus.org> <878u36fung.fsf@gnus.org> <8360y93fka.fsf@gnu.org> <87wpqpwd8p.fsf@gnus.org> <83d1sh14is.fsf@gnu.org> <87egcx13kc.fsf@gnus.org> <83bn801d06.fsf@gnu.org> <87bn7znazd.fsf@gnus.org> <83lh73ytxo.fsf@gnu.org> <87a8nizjia.fsf@gnus.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1454464829 21854 80.91.229.3 (3 Feb 2016 02:00:29 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 3 Feb 2016 02:00:29 +0000 (UTC) Cc: 22493@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Feb 03 03:00:15 2016 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1aQmjs-00035c-L6 for geb-bug-gnu-emacs@m.gmane.org; Wed, 03 Feb 2016 03:00:12 +0100 Original-Received: from localhost ([::1]:60336 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aQmjr-0001QO-SE for geb-bug-gnu-emacs@m.gmane.org; Tue, 02 Feb 2016 21:00:11 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:40364) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aQmjo-0001Ou-9B for bug-gnu-emacs@gnu.org; Tue, 02 Feb 2016 21:00:09 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aQmjj-0004St-9u for bug-gnu-emacs@gnu.org; Tue, 02 Feb 2016 21:00:08 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:48701) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aQmjj-0004Sd-72 for bug-gnu-emacs@gnu.org; Tue, 02 Feb 2016 21:00:03 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84) (envelope-from ) id 1aQmji-0003aV-RI for bug-gnu-emacs@gnu.org; Tue, 02 Feb 2016 21:00:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 03 Feb 2016 02:00:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 22493 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 22493-submit@debbugs.gnu.org id=B22493.145446474913693 (code B ref 22493); Wed, 03 Feb 2016 02:00:02 +0000 Original-Received: (at 22493) by debbugs.gnu.org; 3 Feb 2016 01:59:09 +0000 Original-Received: from localhost ([127.0.0.1]:57287 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84) (envelope-from ) id 1aQmin-0003Yj-VT for submit@debbugs.gnu.org; Tue, 02 Feb 2016 20:59:09 -0500 Original-Received: from hermes.netfonds.no ([80.91.224.195]:51396) by debbugs.gnu.org with esmtp (Exim 4.84) (envelope-from ) id 1aQmii-0003YG-Eg for 22493@debbugs.gnu.org; Tue, 02 Feb 2016 20:59:04 -0500 Original-Received: from cpe-60-225-211-161.nsw.bigpond.net.au ([60.225.211.161] helo=mouse) by hermes.netfonds.no with esmtpsa (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.72) (envelope-from ) id 1aQmiI-0000iM-SY; Wed, 03 Feb 2016 02:58:35 +0100 In-Reply-To: <87a8nizjia.fsf@gnus.org> (Lars Ingebrigtsen's message of "Wed, 03 Feb 2016 12:10:21 +1100") User-Agent: Gnus/5.130014 (Ma Gnus v0.14) Emacs/25.1.50 (gnu/linux) X-MailScanner-ID: 1aQmiI-0000iM-SY MailScanner-NULL-Check: 1455069516.87932@7wgRxTcpwEfjKil3oCzknw X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:112314 Archived-At: Lars Ingebrigtsen writes: >> +#ifdef HAVE_GNUTLS >> + /* The TLS connection hasn't been set up yet, so we can't write >> + anything on the socket. */ >> + if (!NILP (p->gnutls_boot_parameters)) >> + return; >> +#endif >> >> I don't think this is a good idea: you are silently returning here >> without doing anything; the callers of send_process won't expect >> that. I think this should signal an error instead. > > It's perfectly fine to say > > (setq proc (make-network-process ... :nowait t :tls-parameters ...)) > (process-send-string proc) I think you're right again. I thought I had tested this, but I hadn't: (progn (setq proc (make-network-process :name "foo" :buffer (get-buffer-create "*foo*") :host "gmane.org" :service "http" :nowait t)) (process-send-string proc "GET / HTTP/1.0\n\n")) With async DNS, this will fail, because the process-send-string happens before the connection had completed. (And this isn't a TLS socket.) So I think that (like I said on the emacs-devel threads) we may have to change the :nowait stuff to allow a more fine-grained control. So the rule would be if you want a fully async connection, you have to say ":nowait 'dns" or something, and then put a sentinel on the process to not do anything until it changes status to "connected". (This is what url.el does already, which is why I didn't see this before...) But in the case of TLS connections, then, er, we have to ... do something. Ok, here's the scenario. With a non-TLS socket, this is what's going on: make-network-process gives us a process in "open", and then when it changes to "connected" (after connecting the socket) we can start talking. (This is what url.el does.) With a TLS socket: make-network-process gives us a process in "open", and then when it changes to "connected" (after connecting the socket) we can't start talking. We have to wait until the TLS has been negotiated. So perhaps it should only move to the "connected" state after the negotiation has finished? Or introduce more states? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no