GNU bug report logs - #22493
25.1.50; open-gnutls-stream doesn't respect :nowait, so the connections are synchronous

Previous Next

Package: emacs;

Reported by: Lars Ingebrigtsen <larsi <at> gnus.org>

Date: Sat, 30 Jan 2016 04:02:01 UTC

Severity: normal

Found in version 25.1.50

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

Full log


Message #8 received at 22493 <at> debbugs.gnu.org (full text, mbox):

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: 22493 <at> debbugs.gnu.org
Subject: Re: bug#22493: 25.1.50;
 open-gnutls-stream doesn't respect :nowait, so the connections are
 synchronous
Date: Sat, 30 Jan 2016 05:45:21 +0100
Looking at the code, and doing some experimentation, it looks like this
should be possible to implement.

First of all, gnutls-open-stream should call open-network-stream with
:nowait, and put a sentinel on the stream to see when it's opened, and
then it should call gnutls-negotiate from the sentinel.

The problem is, though, that the process isn't marked as a gnutls
process until gnutls_boot is called, so this needs to happen much
earlier.  Possibly by adding another keyword to make-network-process
that just sets

  XPROCESS (proc)->gnutls_p = 1;

The other problem is that reading/writing from these things will just
send plain text if the gnutls stuff hasn't been initialised:

#ifdef HAVE_GNUTLS
	      if (p->gnutls_p && p->gnutls_state)
		written = emacs_gnutls_write (p, cur_buf, cur_len);
	      else
#endif
		written = emacs_write_sig (outfd, cur_buf, cur_len);

I think that looks rather nonsensical.  If it's p->gnutls_p, then it
should never write to the process, no matter what the state is.  Rather
is should just skip writing until p->gnutls_state gets set (which
happens during gnutls_boot).

Or is there something subtle here I'm missing?  When would we ever want
to write plain text to something that's p->gnutls_p?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





This bug report was last modified 9 years and 165 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.