On Thu, 04 Aug 2022 16:20:12 +0200 Ludovic Courtès <l...@gnu.org> wrote: > Ludovic Courtès <l...@gnu.org> skribis: > > > The custom input/output port wrapping the TLS session record port would > > introduce overhead, and it would also prevent its uses in a non-blocking > > context--e.g., with Fibers. The port close mechanism added in GnuTLS > > 3.7.7 allows us to get rid of that wrapper. > > > > * guix/build/download.scm (wrap-record-port-for-gnutls<3.7.7): New > > procedure, with code formerly in 'tls-wrap'. > > (tls-wrap): Check for 'set-session-record-port-close!' and use it when > > available; otherwise call 'wrap-record-port-for-gnutls<3.7.7'. > > I synchronized Guile's copy of this code: > > 317b06bf8 web: 'tls-wrap' retries handshake upon non-fatal errors. > c01ca10b3 web: Do not wrap TLS port on GnuTLS >= 3.7.7. > > I realized that’s not enough to make it possible to use non-blocking > ports though.
[snip revised patch] > Thoughts? I have not been following these patches and this may be completely irrelevant, but if the context of these patches is the use of gnutls-guile, then when I last looked (which was some time ago) gnutls-guile ports were not suspendable. So a non-blocking gnutls-guile port will still block when used with guile's suspendable ports. If I have missed the point please ignore this.