diff options
-rw-r--r-- | THANKS | 1 | ||||
-rw-r--r-- | libmailutils/stream/stream.c | 1 | ||||
-rw-r--r-- | libmu_auth/tlsiostr.c | 8 |
3 files changed, 7 insertions, 3 deletions
@@ -26,6 +26,7 @@ maks <maksqwe1@ukr.net> Neil R. Ormos <ormos@ormos.org> Olivier Bornet <Olivier.Bornet@smartdata.ch> Pierre-Jean <lists@utroff.org> +Rafael Fontenelle <rafaelff@gnome.org> Robby Villegas <robby.villegas@gmail.com> Ronan KERYELL <Ronan.Keryell@enstb.org> Sam Roberts <sroberts@uniserve.com> diff --git a/libmailutils/stream/stream.c b/libmailutils/stream/stream.c index ca66d8251..b45f2b1c5 100644 --- a/libmailutils/stream/stream.c +++ b/libmailutils/stream/stream.c @@ -97,6 +97,7 @@ mu_stream_seterr (struct _mu_stream *stream, int code, int perm) { case 0: case EAGAIN: + case EINTR: case ENOSYS: case EINPROGRESS: break; diff --git a/libmu_auth/tlsiostr.c b/libmu_auth/tlsiostr.c index 5bf4e96e8..bf05ca740 100644 --- a/libmu_auth/tlsiostr.c +++ b/libmu_auth/tlsiostr.c @@ -37,11 +37,13 @@ _tls_io_read (struct _mu_stream *stream, char *buf, size_t bufsize, size_t *pnread) { struct _mu_tls_io_stream *sp = (struct _mu_tls_io_stream *) stream; - int rc; + ssize_t rc; if (sp->up->state != state_open) return EINVAL; - rc = gnutls_record_recv (sp->up->session, buf, bufsize); + do + rc = gnutls_record_recv (sp->up->session, buf, bufsize); + while (rc == GNUTLS_E_AGAIN || rc == GNUTLS_E_INTERRUPTED); if (rc >= 0) { *pnread = rc; @@ -56,7 +58,7 @@ _tls_io_write (struct _mu_stream *stream, const char *buf, size_t bufsize, size_t *pnwrite) { struct _mu_tls_io_stream *sp = (struct _mu_tls_io_stream *) stream; - int rc; + ssize_t rc; if (sp->up->state != state_open) return EINVAL; |