Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

A fix for receive response

Abierto
#77 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
45/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
cpp
Área
networking

Línea de trabajo

Comienza en thirdparty/HTTPRequest/include/HTTPRequest.hpp, en el bucle de lectura de la respuesta alrededor de socket.recv y la búsqueda del terminador de cabecera. Reproduce una respuesta que llega en paquetes parciales y, después, verifica que el análisis de las cabeceras espere a que estén completas, en lugar de detenerse prematuramente.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Fix problem when receive partly response packet:

diff --git a/thirdparty/HTTPRequest/include/HTTPRequest.hpp b/thirdparty/HTTPRequest/include/HTTPRequest.hpp
index c446e216..1c559632 100644
--- a/thirdparty/HTTPRequest/include/HTTPRequest.hpp
+++ b/thirdparty/HTTPRequest/include/HTTPRequest.hpp
@@ -1198,6 +1198,7 @@ namespace http
bool removeCrlfAfterChunk = false;

         // read the response
  •      int header_recv_times = 0;
           for (;;)
           {
               const auto size = socket.recv(tempBuffer.data(), tempBuffer.size(),
    

@@ -1213,7 +1214,16 @@ namespace http
// Empty line indicates the end of the header section (RFC 7230, 2.1. Client/Server Messaging)
const auto endIterator = std::search(responseData.cbegin(), responseData.cend(),
headerEnd.cbegin(), headerEnd.cend());

  •                if (endIterator == responseData.cend()) break; // two consecutive CRLFs not found
    
  •                if (endIterator == responseData.cend())
    
  •                {
    
  •                        if (header_recv_times < 3)
    
  •                        {
    
  •                            header_recv_times++;
    
  •                            continue;
    
  •                        }
    
  •                        else
    
  •                            break;  // two consecutive CRLFs not found
    
  •                }
    
                   const auto headerBeginIterator = responseData.cbegin();
    
Lenguaje dominante
C++
Estrellas
969
Forks
200
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Aún no hemos revisado los archivos de configuración de este proyecto. Empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de elnormous/HTTPRequest

Todos los issues de elnormous/HTTPRequest

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.