Fixes . This fix was merged upstream in and will be in GnuTLS 3.7.3. Upstream commit: commit 110e2172dbef1fbdf7399dab1e80780847b61c0c Author: Ludovic Courtès Date: Sat Apr 24 22:02:14 2021 +0200 guile: Writes to record ports handle EAGAIN/EINTR transparently. diff --git a/guile/src/core.c b/guile/src/core.c index a13670fc7b..0926dc8a97 100644 --- a/guile/src/core.c +++ b/guile/src/core.c @@ -985,7 +985,10 @@ write_to_session_record_port (SCM port, const void *data, size_t size) c_result = gnutls_record_send (c_session, (char *) data + c_sent, size - c_sent); if (EXPECT_FALSE (c_result < 0)) - scm_gnutls_error (c_result, FUNC_NAME); + { + if (c_result != GNUTLS_E_AGAIN && c_result != GNUTLS_E_INTERRUPTED) + scm_gnutls_error (c_result, FUNC_NAME); + } else c_sent += c_result; } @@ -1069,7 +1072,8 @@ read_from_session_record_port (SCM port, SCM dst, size_t start, size_t count) #undef FUNC_NAME /* Return the file descriptor that backs PORT. This function is called upon a - blocking read--i.e., 'read_from_session_record_port' returned -1. */ + blocking read--i.e., 'read_from_session_record_port' or + 'write_to_session_record_port' returned -1. */ static int session_record_port_fd (SCM port) { @@ -1097,7 +1101,16 @@ write_to_session_record_port (SCM port, SCM src, size_t start, size_t count) c_session = scm_to_gnutls_session (session, 1, FUNC_NAME); data = (char *) SCM_BYTEVECTOR_CONTENTS (src) + start; - result = gnutls_record_send (c_session, data, count); + do + result = gnutls_record_send (c_session, data, count); + while (result == GNUTLS_E_INTERRUPTED + || (result == GNUTLS_E_AGAIN + && !SCM_GNUTLS_SESSION_TRANSPORT_IS_FD (c_session))); + + if (result == GNUTLS_E_AGAIN + && SCM_GNUTLS_SESSION_TRANSPORT_IS_FD (c_session)) + /* Tell Guile that reading would block. */ + return (size_t) -1; if (EXPECT_FALSE (result < 0)) scm_gnutls_error (result, FUNC_NAME); f='/guix/log/doc?id=53ef4bf53775cf80959000667c5bdb7f4d7b6232'>doc/he-config-bare-bones.scm
AgeCommit message (Expand)Author
2022-06-10doc: Update example of a minimalistic home environment....* doc/he-config-bare-bones.scm: Adujst example according to changes in bash-service-type and home-files-service-type. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Andrew Tropin
2021-10-09Move (gnu home-services) to (gnu home services)....* gnu/home-services.scm (%guix-home-root-directory): Replace gnu/home-services.scm with "gnu/home/services.scm". Rename to gnu/home/services.scm. * gnu/local.mk (GNU_SYSTEM_MODULES): Rename gnu/home-services.scm to gnu/home/services.scm. * doc/he-config-bare-bones.scm: Replace (gnu home-services) with (gnu home services). * gnu/home.scm: Same. * gnu/home/services/fontutils.scm: Same. * gnu/home/services/mcron.scm: Same. * gnu/home/services/shells.scm: Same. * gnu/home/services/shepherd.scm: Same. * gnu/home/services/symlink-manager.scm: Same. * gnu/home/services/xdg.scm: Same. * guix/scripts/home.scm: Same. * guix/self.scm: Same. Oleg Pykhalov
2021-10-08gnu: Move (gnu home-services) to (gnu home services)....* gnu/home-services/configuration.scm: Move the content ... * gnu/home/services/configuration.scm: ... here. * doc/guix.texi: Replace (gnu home-services mcron) with (gnu home services mcron). Replace (gnu home-services) with (gnu home services). * gnu/home.scm: Replace (gnu home-services fontutils) with (gnu services fontutils). Replace (gnu home-services shells) with (gnu home services shells). Replace (gnu home-services symlink-manager) with (gnu home services symlink-manager). Replace (gnu home-services xdg) with (gnu home services xdg). * gnu/home-services/fontutils.scm: Rename to gnu/services/fontutils.scm. * gnu/home-services/mcron.scm: Move to gnu/home/services/mcron.scm. Replace (gnu home-services shepherd) with (gnu home services shepherd). * gnu/home-services.scm (%service-type-path): Search home services in "gnu/services". * gnu/home-services/shells.scm: Replace (gnu home-services configuration) with (gnu home services configuration). Rename to gnu/home/services/shells.scm. Replace (gnu home-services utils) with (gnu home services utils). * gnu/home-services/shepherd.scm: Move to gnu/home/services/shepherd.scm. * gnu/home-services/symlink-manager.scm: Rename to gnu/home/services/symlink-manager.scm. * gnu/home-services/utils.scm: Rename to gnu/home/services/utils.scm. * gnu/home-services/xdg.scm: Rename to gnu/home/services/xdg.scm. * guix/scripts/home/import.scm: Replace (gnu home-services bash) with (gnu home services bash). * gnu/home-services.scm: Update documentation string. * doc/he-config-bare-bones.scm: Apply new (gnu home-services ...) modules location. * gnu/local.mk (GNU_SYSTEM_MODULES): Same. Oleg Pykhalov
2021-09-09doc: Add Guix Home documentation....* doc/guix.texi: Add Guix Home documentation. * doc/he-config-bare-bones.scm: New file. Signed-off-by: Oleg Pykhalov <go.wigust@gmail.com> Andrew Tropin