ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: $r->request_body выдает ошибку если тело запроса пустое



 Ошибку генерирует например такой код:

sub handler{
    my $r = shift;
    if( $r->has_request_body(\&handle_request) ){
        return OK;
    } else {
        return handle_request($r);
    }
}

sub handle_request{
    my $r = shift;
    $r->request_body(); # если запрос сделан методом гет то здесь ошибка, выполнение хендлера прерывается
    return OK;
}

Ну понятно, что можно в handler установить переменную, $r->request_body() в if запихать и все будет работать. Информация perl -V прилагается.

22.12.06, Igor Sysoev <is@xxxxxxxxxxxxx> написал(а):
On Fri, 22 Dec 2006, Andrey Antonov wrote:

> Наконец-то перешел с 0.3.61 на 0.5.4, все что до этого не работало в
> 0.4.хтеперь работает, это здорово, весь новый функционал очень полезен
> для
> написания достаточно сложных хендлеров на перле.
> Заметил, что $r->request_body стало возвращать ошибку "close() channel
> failed (9: Bad file descriptor)" если тело запроса пустое (например в
> обычном гет запросе). Хорошо бы это пофиксить, тк сейчас надо либо проверять
> тип запроса, либо переменную специальную устанавливать, что не удобно.

Как выглядит перловый код ?


Игорь Сысоев
http://sysoev.ru


Summary of my perl5 (revision 5 version 8 subversion 8) configuration:
  Platform:
    osname=freebsd, osvers=6.1-release, archname=i386-freebsd-thread-multi
    uname='freebsd agava.ams-systems.ru 6.1-release freebsd 6.1-release #1: thu 
dec 21 15:31:23 msk 2006 root@xxxxxxxxxxxxxxxxxxxx:usrsrcsysi386compilemykernel 
i386 '
    config_args=''
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=define use5005threads=undef useithreads=define 
usemultiplicity=define
    useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
    use64bitint=undef use64bitall=undef uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H 
-fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include',
    optimize='-O',
    cppflags='-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe 
-Wdeclaration-after-statement -I/usr/local/include'
    ccversion='', gccversion='3.4.4 [FreeBSD] 20050518', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', 
lseeksize=8
    alignbytes=4, prototype=define
  Linker and Libraries:
    ld='cc', ldflags ='-pthread -Wl,-E  -L/usr/local/lib'
    libpth=/usr/lib /usr/local/lib
    libs=-lm -lcrypt -lutil -lc_r
    perllibs=-lm -lcrypt -lutil -lc_r
    libc=, so=so, useshrplib=false, libperl=libperl.a
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' '
    cccdlflags='-DPIC -fPIC', lddlflags='-shared  -L/usr/local/lib'


Characteristics of this binary (from libperl):
  Compile-time options: MULTIPLICITY PERL_IMPLICIT_CONTEXT
                        PERL_MALLOC_WRAP USE_ITHREADS USE_LARGE_FILES
                        USE_PERLIO USE_REENTRANT_API
  Built under freebsd
  Compiled at Dec 21 2006 16:13:50
  @INC:
    /usr/local/lib/perl5/5.8.8/i386-freebsd-thread-multi
    /usr/local/lib/perl5/5.8.8
    /usr/local/lib/perl5/site_perl/5.8.8/i386-freebsd-thread-multi
    /usr/local/lib/perl5/site_perl/5.8.8
    /usr/local/lib/perl5/site_perl
    .


 




Copyright © Lexa Software, 1996-2009.