Subject: bug#33780: network-stream.el: network-stream-certificate always returns nil

From: Eli Zaretskii <[email-masked]>
Date: Mon, 14 Jan 2019 20:51:49 +0200

> From: Robert Pluim <[email-masked]>
> Cc: [email-masked],  [email-masked],  [email-masked]
> Date: Mon, 14 Jan 2019 18:40:59 +0100
> 
> > I don't think I understood why nsm gets called only in the ":nowait t"
> > case.  What did I miss?
> 
> process.c has:
> 
> #ifdef HAVE_GNUTLS
> static void
> finish_after_tls_connection (Lisp_Object proc)
> {
>   struct Lisp_Process *p = XPROCESS (proc);
>   Lisp_Object contact = p->childp;
>   Lisp_Object result = Qt;
> 
>   if (!NILP (Ffboundp (Qnsm_verify_connection)))
>     result = call3 (Qnsm_verify_connection,
> 		    proc,
> 		    Fplist_get (contact, QChost),
> 		    Fplist_get (contact, QCservice));
> 
> so loading nsm.el causes nsm-verify-connection to get called in the
> ':nowait t' case. Presumably in the ':nowait nil' case gnutls-boot has
> already completed the tls connection, and finish_after_tls_connection
> never gets called (thatʼs speculation on my part). I donʼt know the
> GnuTLS code well enough to know if this is a bug. Ted?

Ah, okay.  No, I don't think this is a bug.  So use some way to get
nsm to approve the connection.