Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Perl module: fix sendfile() to work with large files.
Hello!
On Tue, Apr 28, 2009 at 09:28:53PM +0400, Igor Sysoev wrote:
> On Tue, Apr 28, 2009 at 08:09:51PM +0400, Maxim Dounin wrote:
>
> > # HG changeset patch
> > # User Maxim Dounin <mdounin@xxxxxxxxxx>
> > # Date 1240934462 -14400
> > # Node ID a2d0123c0f1cbdd30de9f1f85831e781b8f0329b
> > # Parent 28335b73075091c0e231e7660b1c1fca1dc23ef8
> > Perl: fix sendfile() to work with large files.
> >
> > diff --git a/src/http/modules/perl/nginx.xs b/src/http/modules/perl/nginx.xs
> > --- a/src/http/modules/perl/nginx.xs
> > +++ b/src/http/modules/perl/nginx.xs
> > @@ -607,7 +607,7 @@ sendfile(r, filename, offset = -1, bytes
> >
> > ngx_http_request_t *r;
> > char *filename;
> > - int offset;
> > + off_t offset;
> > size_t bytes;
> > ngx_str_t path;
> > ngx_buf_t *b;
>
> Ты это проверял ?
Да.
> Когда я программировал это дело, я не мог понять, как
> передать off_t вместо int. У меня есть ощущение, что это будет работать
> только, если перл собран как xxxxxxx-64int.
Тоже да. Если перл собран с 32-битными integer'ами - то будет
обрезаться как и до патча (только уже перлом). Но если с
64-битными - всё будет работать, что не есть плохо. В частности,
на фре даже под i386 перл из портов собирается с -Duse64bitint.
Можно пытаться сделать чтобы работало (e.g. при передаче строки
или double) даже для перла собранного с 32-битными интами, но IMHO
оно не стоит того.
Maxim Dounin
|