Преглед на файлове

* Fix by Dokkie8844 to treat error codes by GnuTLS in a more graceful manner. Fixes issue #40195

Michaël Van Canneyt преди 1 година
родител
ревизия
8e024b2606
променени са 1 файла, в които са добавени 6 реда и са изтрити 2 реда
  1. 6 2
      packages/gnutls/src/gnutlssockets.pp

+ 6 - 2
packages/gnutls/src/gnutlssockets.pp

@@ -588,7 +588,9 @@ Var
 
 begin
   P:=PByte(@Buffer);
-  Result:=Check(gnutls_record_send(Fsession,P,Count));
+  repeat
+    Result:=Check(gnutls_record_send(FSession,P,Count));
+  until (Result <> GNUTLS_E_AGAIN) and (Result <> GNUTLS_E_INTERRUPTED);
   if Result<0 then
     Result:=-1;
 end;
@@ -600,7 +602,9 @@ Var
 
 begin
   P:=PByte(@Buffer);
-  Result:=Check(gnutls_record_recv(FSession,P,Count));
+  repeat
+    Result:=Check(gnutls_record_recv(FSession,P,Count));
+  until (Result <> GNUTLS_E_AGAIN) and (Result <> GNUTLS_E_INTERRUPTED);
   if Result<0 then
     Result:=-1;
 end;