Je travaille sur un filtre ISAPI pour supprimer certains contenus des réponses. J'ai besoin de rassembler tout le corps de la réponse avant de faire le traitement, car le contenu que je suis en train d'effacer pourrait chevaucher les tampons d'envoi.Détermination de la longueur de réponse à partir d'un filtre ISAPI
Pour ce faire, je voudrais mettre en tampon le contenu de la réponse avec chaque notification SF_NOTIFY_SEND_RAW_DATA
jusqu'à ce que je reçois la dernière, puis envoyer les données traduites. Je voudrais savoir la meilleure façon de déterminer lequel SF_NOTIFY_SEND_RAW_DATA
est réellement le dernier. Si j'attends la notification SF_NOTIFY_END_OF_REQUEST
, je ne sais pas comment envoyer les données que j'ai tamponnées.
Une approche consisterait à utiliser la longueur de contenu. Cela nécessiterait que je détecte la fin des en-têtes. Il faudrait également supposer que l'en-tête content-length est correct (est-ce garanti?). Puisque HTTP ne nécessite même pas un en-tête de longueur de contenu, je ne suis même pas sûr qu'il sera toujours là. Il semble qu'il devrait y avoir un moyen plus facile.
Je suppose que la réponse n'est pas fragmentée, donc je ne gère pas le découplage avant de faire le changement de réponse. De plus, lorsque je modifie le corps de la réponse, la taille du corps de la réponse ne change pas, donc je n'ai pas besoin de revenir en arrière et de mettre à jour la longueur du contenu.