• Publicidad

Ocultar errores

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Ocultar errores

Notapor BigBear » 2013-09-27 18:50 @826

Estoy usando el módulo HTTP::Proxy para tener un servidor proxy. Realizo ciertas consultas con post donde subo imágenes, el script larga el siguiente error:

Content-Length header value was wrong, fixed at C:/Perl/lib/LWP/Protocol/http.pm
line 189.

El problema es que no quiero arreglarlo. Mi idea es cómo evitar este error, en la documentación del módulo no encuentro ninguna opción como debug=0 o algo así.

¿ Alguien me puede ayudar ?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: Ocultar errores

Notapor explorer » 2013-09-27 22:33 @981

No se puede ocultar. Viendo el código de LWP/Protocol/http.pm se ve que ese mensaje sale por medio de un warn, es decir, sale por la salida estándar de error.

Entonces, se me ocurren varias ideas.

1.- Editar LWP/Protocol/http.pm y quitar las líneas de warn

2.- Capturar STDERR para que no salga por la salida estándar

3.- Ver por qué falla, y arreglarlo, para que no vuelva a salir.

En concreto, el mensaje de error sale porque la longitud declarada del mensaje que se envía no coincide con la longitud real del mensaje.

Entonces, la solución es calcular mejor esa longitud. Pero viendo (una vez más) el código que rodea a la línea del error, si no pones ningún 'Content-Length', esas líneas lo calcularán por ti :)

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.         # Set (or override) Content-Length header
  2.         my $clen = $request_headers->header('Content-Length');
  3.         if (defined($$content_ref) && length($$content_ref)) {                # si hay contenido,
  4.             $has_content = length($$content_ref);                             # calculamos su longitud real
  5.             if (!defined($clen) || $clen ne $has_content) {                   # si no hemos definido un 'Content-Length' o si no coincide con lo esperado
  6.                 if (defined $clen) {                                          # si sí hemos definido un 'Content-Length', es que no coinciden
  7.                     warn "Content-Length header value was wrong, fixed";      # avisamos que de la longitud indicada está mal y la vamos a arreglar
  8.                     hlist_remove(\@h, 'Content-Length');                      # quitamos la cabecera (pondremos una nueva ahora)
  9.                 }
  10.                 push(@h, 'Content-Length' => $has_content);                   # ponemos una nueva cabecera, con su longitud real
  11.             }
  12.         }
  13.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 11 invitados