Mercurial > hg > nginx
view src/os/unix/ngx_dlopen.h @ 7948:a2613fc1bce5
Fixed sendfile() limit handling on Linux.
On Linux starting with 2.6.16, sendfile() silently limits all operations
to MAX_RW_COUNT, defined as (INT_MAX & PAGE_MASK). This incorrectly
triggered the interrupt check, and resulted in 0-sized writev() on the
next loop iteration.
Fix is to make sure the limit is always checked, so we will return from
the loop if the limit is already reached even if number of bytes sent is
not exactly equal to the number of bytes we've tried to send.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Fri, 29 Oct 2021 20:21:51 +0300 |
parents | 7142b04337d6 |
children |
line wrap: on
line source
/* * Copyright (C) Maxim Dounin * Copyright (C) Nginx, Inc. */ #ifndef _NGX_DLOPEN_H_INCLUDED_ #define _NGX_DLOPEN_H_INCLUDED_ #include <ngx_config.h> #include <ngx_core.h> #define ngx_dlopen(path) dlopen((char *) path, RTLD_NOW | RTLD_GLOBAL) #define ngx_dlopen_n "dlopen()" #define ngx_dlsym(handle, symbol) dlsym(handle, symbol) #define ngx_dlsym_n "dlsym()" #define ngx_dlclose(handle) dlclose(handle) #define ngx_dlclose_n "dlclose()" #if (NGX_HAVE_DLOPEN) char *ngx_dlerror(void); #endif #endif /* _NGX_DLOPEN_H_INCLUDED_ */