Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: KandiZickZad en 23 Abril 2012, 01:50 am



Título: Tamaño de buffer para proxy en C
Publicado por: KandiZickZad en 23 Abril 2012, 01:50 am
Buenas, estoy haciendo un proxy cache en C, y estoy teniendo un problema con los buffers que estoy usando. Ya he logrado leer la solicitud una primera vez del navegador, así obtengo en el buffer una respuesta con el GET etc... luego le envío la solicitud al navegador, pero la respuesta que me da estoy segura de que está incompleta. Supongo que la razón es el tamaño del buffer. Acá está una parte del código:

Código
  1. int sockServidor, sockCliente, sockAceptado, codeLlamada;/*resul de syscall*/
  2. struct sockaddr_in ipCliente, ipServidor;
  3. char bufferSolicitud[256]; /*buffer para el stream de intercomunicación*/
  4. char bufferRespuesta[1024]; /*buffer para el stream de respuesta*/
  5. ...
  6. /*escuchando y aceptando solicitudes*/
  7. read(sockAceptado,bufferSolicitud,255); /*lee solicitud del navegador*/
  8. /*agrega host de solicitud a una cola*/
  9. write(sockAceptado,bufferSolicitud,255); /*envia solicitud al navegador*/
  10. read(sockAceptado,bufferRespuesta,1023); /*lee respuesta del navegador*/
  11. printf("%s\n",bufferRespuesta); /*imprimir respuesta en stdout*/
  12.  

Salida estándar:
Código:
cept-Encoding: gzip, deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Proxy-Connection: keep-alive

Cookie: datr=USRyT0N-TnXDmXY9heJPVm4n; lu=ggUW7DJdGaM8HnSG2r9TZzVg; c_user=1684241979; xs=7%3AiTD4F4fsffwmaw%3A0%3A1332897093

Por el contenido de bufferRespuesta, me parece que el problema debe ser que el tamaño del buffer no es suficiente. Pero me sigue pareciendo extraño, pues cuando bufferRespuesta era de tamaño 256, también imprimía la misma respuesta.

Les agradezco mucho la ayuda de antemano. Primeramente, necesito saber cuál es el problema. En caso de ser el tamaño del buffer, les agradecería mucho si me ayudan a encontrar una solución.