Re: $r->request_body выдает ошибку если тело запроса пустое
Andrey Antonov
antonov.andrey at gmail.com
Fri Dec 22 17:18:41 MSK 2006
Ошибку генерирует например такой код:
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 at rambler-co.ru> написал(а):
>
> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20061222/b98176b2/attachment.html>
-------------- next part --------------
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 at agava.ams-systems.ru: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
.
More information about the nginx-ru
mailing list