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
.