Skip to content
Extraits de code Groupes Projets
Valider 8aa13f97 rédigé par esj's avatar esj
Parcourir les fichiers

Suite de [11441]: ne pas fermer la connexion dans la fonction...

Suite de [11441]: ne pas fermer la connexion dans la fonction recuperer_entetes en cas de status <> 200: la persistence peut rester utilie.
parent 94140521
Aucune branche associée trouvée
Étiquettes v2.8.7
Aucune requête de fusion associée trouvée
...@@ -205,12 +205,15 @@ function recuperer_lapage($url, $trans=false, $get='GET', $taille_max = 1048576, ...@@ -205,12 +205,15 @@ function recuperer_lapage($url, $trans=false, $get='GET', $taille_max = 1048576,
$headers = ''; $headers = '';
else { else {
$headers = recuperer_entetes($f, $date_verif); $headers = recuperer_entetes($f, $date_verif);
if (!$headers) { if (is_numeric($headers)) {
spip_log("ECHEC chargement $url"); spip_log("HTTP status $headers pour $url");
fclose($f);
return false; return false;
} }
if (!is_array($headers)) if (!is_array($headers)) {
fclose($f);
return $headers ; // cas Location ou Modified. return $headers ; // cas Location ou Modified.
}
$headers = join('', $headers); $headers = join('', $headers);
} }
...@@ -241,20 +244,19 @@ function recuperer_body($f, $taille_max=1048576) ...@@ -241,20 +244,19 @@ function recuperer_body($f, $taille_max=1048576)
return $result; return $result;
} }
// Entetes de reponse HTTP sur la socket $f // Lit les entetes de reponse HTTP sur la socket $f et retourne:
// Les retourne sous forme de tableau, // la valeur (chaine) de l'en-tete Location si on l'a trouvee
// sauf si presence de Location ou Last-Modified, // la valeur (numerique) du statut si different de 200, notamment Not-Modified
// ou on renvoie une chaine et on ferme la connexion // le tableau des entetes dans tous les autres cas
function recuperer_entetes($f, $date_verif='') function recuperer_entetes($f, $date_verif='')
{ {
$s = @trim(fgets($f, 16384)); $s = @trim(fgets($f, 16384));
if (!preg_match(',^HTTP/[0-9]+\.[0-9]+ ([0-9]+),', $s, $r)) { if (!preg_match(',^HTTP/[0-9]+\.[0-9]+ ([0-9]+),', $s, $r)) {
@fclose($f); return 0;
return false;
} }
$status = $r[1]; $status = intval($r[1]);
$headers = array(); $headers = array();
while ($s = trim(fgets($f, 16384))) { while ($s = trim(fgets($f, 16384))) {
$headers[]= $s."\n"; $headers[]= $s."\n";
...@@ -266,18 +268,14 @@ function recuperer_entetes($f, $date_verif='') ...@@ -266,18 +268,14 @@ function recuperer_entetes($f, $date_verif='')
if(strtotime($date_verif)>=strtotime($r[1])) { if(strtotime($date_verif)>=strtotime($r[1])) {
//Cas ou la page distante n'a pas bouge depuis //Cas ou la page distante n'a pas bouge depuis
//la derniere visite //la derniere visite
fclose($f);
return $status; return $status;
} }
} }
} }
if ($status >= 300 AND $status < 400 AND $location) { if ($status >= 300 AND $status < 400 AND $location) {
fclose($f);
return $location; return $location;
} else if ($status != 200){ } else if ($status != 200){
spip_log("ECHEC chargement $url : Status $status"); return $status;
@fclose($f);
return false;
} }
return $headers; return $headers;
} }
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter