Hi,

Apply on top of my previous patch related to gnutls compression.
This is a "I don't know if it's a correct patch".

regards,

-- 
Sylvain
--- src/tidy_tls.c
+++ src/tidy_tls.c
@@ -461,14 +461,22 @@
 {
     int rc;
 
-    rc = (int) gnutls_record_recv(ssl->gnutls_state, buffer, (size_t) length);
+    for(;;) {
+        rc = (int) gnutls_record_recv(ssl->gnutls_state, buffer, (size_t) 
length);
 
-    if (rc < 0 && gnutls_error_is_fatal(rc) == 0) {
-       if (rc == GNUTLS_E_REHANDSHAKE) {
-           (void) gnutls_handshake(ssl->gnutls_state);
-           gnutls_record_send(ssl->gnutls_state, ssl->sendbuffer, (size_t) 
ssl->bytes_sent);
-           rc = (int) gnutls_record_recv(ssl->gnutls_state, buffer, (size_t) 
length);
-       }
+        if (rc < 0 && gnutls_error_is_fatal(rc) == 0) {
+            if (rc == GNUTLS_E_REHANDSHAKE) {
+                (void) gnutls_handshake(ssl->gnutls_state);
+                gnutls_record_send(ssl->gnutls_state, ssl->sendbuffer, 
(size_t) ssl->bytes_sent);
+               continue;
+            } else if (rc == GNUTLS_E_AGAIN || GNUTLS_E_INTERRUPTED) {
+                continue;
+            }
+            /* not handled gnutls non-fatal error */
+            break;
+        } else
+            /* rc >= 0 or gnutls fatal error */
+            break;
     }
 
     ssl->last_error = rc;
_______________________________________________
Lynx-dev mailing list
Lynx-dev@nongnu.org
https://lists.nongnu.org/mailman/listinfo/lynx-dev

Reply via email to