diff options
author | Lars Magne Ingebrigtsen <larsi@gnus.org> | 2010-10-09 15:54:57 +0200 |
---|---|---|
committer | Lars Magne Ingebrigtsen <larsi@gnus.org> | 2010-10-09 15:54:57 +0200 |
commit | 2e6c74c53fbb318aa13144681400f3f80e3529f7 (patch) | |
tree | d262f40b06be006a0ed0c87711cf1363088b5471 /src | |
parent | 7450df5dfcac171bae556c26261ab2873573f34c (diff) | |
download | emacs-2e6c74c53fbb318aa13144681400f3f80e3529f7.tar.gz |
(emacs_gnutls_write): Check for GNUTLS_E_AGAIN and not EINTR.
According to the documentation, this is correct, and it seems to
make things work.
Diffstat (limited to 'src')
-rw-r--r-- | src/ChangeLog | 3 | ||||
-rw-r--r-- | src/gnutls.c | 4 |
2 files changed, 5 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index b147ab2d01f..dc80a88def3 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -5,6 +5,9 @@ (emacs_gnutls_read): Return -1 if we got an error from gnutls_read(). This allows us to actually read lots of data from the GnuTLS stream. + (emacs_gnutls_write): Check for GNUTLS_E_AGAIN and not EINTR. + According to the documentation, this is correct, and it seems to + make things work. 2010-10-09 Chong Yidong <cyd@stupidchicken.com> diff --git a/src/gnutls.c b/src/gnutls.c index da5b10d3190..d9ccaa5a62c 100644 --- a/src/gnutls.c +++ b/src/gnutls.c @@ -86,9 +86,9 @@ emacs_gnutls_write (int fildes, struct Lisp_Process *proc, char *buf, { rtnval = gnutls_write (state, buf, nbyte); - if (rtnval == -1) + if (rtnval < 0) { - if (errno == EINTR) + if (rtnval == GNUTLS_E_AGAIN || rtnval == GNUTLS_E_INTERRUPTED) continue; else return (bytes_written ? bytes_written : -1); |