Bonjour,
J'ai développé en C++ un module Apache recevant une requête HTTP envoyée en POST.
Ce module récupère le body de la requête HTTP sous forme d'une chaîne de caractères qu'il va ensuite utiliser dans un traitement métier.
Toutefois, il arrive parfois que la lecture de la chaîne de caractères en question soit tronquée !
Je m'explique davantage :
Le module Apache lit le header "Content-Length" et obtient par exemple la valeur 5879, ce qui signifie que le body de la requête HTTP contient 5879 caractères.
Le module utilise ensuite les fonctions ap_setup_client_block(), ap_should_client_block() et ap_get_client_block() pour lire le body de la requête HTTP.
Le plus souvent, les 5879 caractères du body de la requête HTTP sont effectivement lus.
Mais dans certains cas, le body d'une requête HTTP qui a pu être correctement lue plusieurs fois va de temps en temps être tronqué à 3760 ou à 4380 caractères...
À noter qu'il ne s'agit pas d'un problème d'envoi de la requête HTTP car j'ai inséré un système de monitoring et la requête HTTP monitorée est bel et bien complète à chaque fois.
J'ai essayé de remonter la pile d'appel de la fonction get_client_block(), d'où me semble provenir mon problème, dans les sources d'Apache, mais j'avoue que je m'y perds un peu...
Quelqu'un saurait-il m'expliquer ce qui se passe de temps en temps pour que le body de la requête HTTP ne soit pas lu correctement ou bien me conseiller sur une éventuelle autre librairie à utiliser pour lire correctement le body de la requête HTTP sans problèmes ?
Merci à vous !
Partager