From 64195fc641f64b18de3a7a1ebc79c085b4e9c2bf Mon Sep 17 00:00:00 2001 From: r-zakarya <82443831+r-zakarya@users.noreply.github.com> Date: Sat, 26 Sep 2026 18:42:22 +0100 Subject: [PATCH] fix(apk): attente de connexion courte et trois essais Mesure sur ce telephone : api.github.com rend plusieurs adresses, 140.82.121.6 repond en 0,22 s et 140.82.121.5 n'est pas joignable. Un navigateur passe a la suivante aussitot ; l'application attendait son delai entier sur la mauvaise. Huit secondes pour la poignee de main, trente pour la reponse, trois essais. Co-Authored-By: Claude Opus 5 --- android-client/PMA.SyncClient.pas | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/android-client/PMA.SyncClient.pas b/android-client/PMA.SyncClient.pas index 3336678..affb398 100644 --- a/android-client/PMA.SyncClient.pas +++ b/android-client/PMA.SyncClient.pas @@ -61,6 +61,8 @@ type FBaseUrl: string; FToken: string; FTimeoutMs: Integer; + /// Attente de la POIGNEE DE MAIN, distincte de celle de la reponse. + FConnectMs: Integer; FPrivacyChecked: Boolean; public constructor Create(const ABaseUrl, AToken: string); @@ -136,7 +138,7 @@ begin FPrivacyChecked := True; LHttp := THTTPClient.Create; try - LHttp.ConnectionTimeout := FTimeoutMs; + LHttp.ConnectionTimeout := FConnectMs; LHttp.ResponseTimeout := FTimeoutMs; LHttp.HandleRedirects := False; LHttp.UserAgent := 'PMServer'; @@ -193,7 +195,7 @@ begin LRepo := LParts[1]; LHttp := THTTPClient.Create; try - LHttp.ConnectionTimeout := FTimeoutMs; + LHttp.ConnectionTimeout := FConnectMs; LHttp.ResponseTimeout := FTimeoutMs; LHttp.HandleRedirects := False; LHttp.UserAgent := 'PMServer'; @@ -328,7 +330,7 @@ begin try LHttp := THTTPClient.Create; try - LHttp.ConnectionTimeout := FTimeoutMs; + LHttp.ConnectionTimeout := FConnectMs; LHttp.ResponseTimeout := FTimeoutMs; LHttp.HandleRedirects := False; LHttp.UserAgent := 'PMServer'; // GitHub refuse toute requete sans @@ -338,7 +340,7 @@ begin // Deux essais, meme raison qu'a la lecture : un SYN perdu ne dit rien // du serveur. Le corps est renvoye depuis le debut a chaque essai. LResp := nil; - for var LTry := 1 to 2 do + for var LTry := 1 to 3 do begin try LReq.Position := 0; @@ -350,7 +352,7 @@ begin begin Result.Status := ssNetworkError; Result.Error := E.ClassName + ': ' + E.Message; - if LTry = 2 then Exit; + if LTry = 3 then Exit; end; end; end; @@ -413,7 +415,14 @@ begin // paquets (ping 71 a 236 ms), et c'est le SYN qui se perd. D'ou DEUX essais // courts plutot qu'une seule longue attente, et un total qui reste sous le // garde-fou de 50 s de l'ecran. - FTimeoutMs := 20000; + FTimeoutMs := 30000; + // COURT POUR SE CONNECTER, LONG POUR REPONDRE. Mesure sur ce telephone : + // api.github.com rend plusieurs adresses, 140.82.121.6 repond en 0,22 s et + // 140.82.121.5 n'est pas joignable du tout. Un navigateur passe a la + // suivante aussitot ; l'application attendait son delai entier sur la + // mauvaise. Huit secondes suffisent a une adresse qui repond, et trois + // essais laissent le temps de tomber sur une bonne. + FConnectMs := 8000; end; function TSyncClient.Fetch(const AKnownETag: string): TSyncResult; @@ -439,7 +448,7 @@ begin LHttp := THTTPClient.Create; try - LHttp.ConnectionTimeout := FTimeoutMs; + LHttp.ConnectionTimeout := FConnectMs; LHttp.ResponseTimeout := FTimeoutMs; LHttp.UserAgent := 'PMServer'; // GitHub refuse toute requete sans // PAS DE CONNEXION REUTILISEE. Le telephone change de reseau (Wi-Fi qui @@ -467,7 +476,7 @@ begin LStream := TStringStream.Create('', TEncoding.UTF8); try LResp := nil; - for var LTry := 1 to 2 do + for var LTry := 1 to 3 do begin try LResp := LHttp.Get(FBaseUrl, LStream); @@ -477,7 +486,7 @@ begin begin Result.Status := ssNetworkError; Result.Error := E.ClassName + ': ' + E.Message; - if LTry = 2 then Exit; + if LTry = 3 then Exit; LStream.Clear; end; end;