summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlfredo Pironti <alfredo@pironti.eu>2013-01-24 13:46:15 +0100
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2013-02-04 09:28:41 +0100
commitef58e5c4a7b0c8a33d38e0726ebcda3fc637ee55 (patch)
treed997885d2305a14881a90ecb512ddb5d98b2c7af
parent2bd9e844fca0d901ed3b15a0d0b41d4b786be5de (diff)
downloadgnutls-ef58e5c4a7b0c8a33d38e0726ebcda3fc637ee55.tar.gz
Make sure we don't fail if writing gets interrupted
-rw-r--r--lib/gnutls_range.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/gnutls_range.c b/lib/gnutls_range.c
index 422fc996d9..f3d798b80d 100644
--- a/lib/gnutls_range.c
+++ b/lib/gnutls_range.c
@@ -281,6 +281,15 @@ gnutls_record_send_range (gnutls_session_t session, const void *data,
next_fragment_length,
cur_range.high,
MBUFFER_FLUSH);
+
+ while (ret == GNUTLS_E_AGAIN || ret == GNUTLS_E_INTERRUPTED)
+ {
+ ret = _gnutls_send_tlen_int (session, GNUTLS_APPLICATION_DATA, -1,
+ EPOCH_WRITE_CURRENT,
+ NULL, 0, 0,
+ MBUFFER_FLUSH);
+ }
+
if (ret < 0)
{
return ret; /* already gnutls_assert_val'd */