Selaa lähdekoodia

LibTLS: Retry sending in TLSv12::flush() on EAGAIN or EINTR

Crashing here is not very helpful.
Andrew Kaster 1 vuosi sitten
vanhempi
commit
baa26d10a8
1 muutettua tiedostoa jossa 7 lisäystä ja 4 poistoa
  1. 7 4
      Userland/Libraries/LibTLS/Socket.cpp

+ 7 - 4
Userland/Libraries/LibTLS/Socket.cpp

@@ -271,10 +271,13 @@ ErrorOr<bool> TLSv12::flush()
     size_t written;
     do {
         auto result = stream.write_some(out_bytes);
-        if (result.is_error() && result.error().code() != EINTR && result.error().code() != EAGAIN) {
-            error = result.release_error();
-            dbgln("TLS Socket write error: {}", *error);
-            break;
+        if (result.is_error()) {
+            if (result.error().code() != EINTR && result.error().code() != EAGAIN) {
+                error = result.release_error();
+                dbgln("TLS Socket write error: {}", *error);
+                break;
+            }
+            continue;
         }
         written = result.value();
         out_bytes = out_bytes.slice(written);