mirror of
https://github.com/nginx/nginx.git
synced 2024-12-27 17:31:35 -06:00
nginx-0.0.1-2003-11-26-18:42:18 import
This commit is contained in:
parent
a8fa0a6a37
commit
c0f8d91bde
@ -5,8 +5,12 @@ NGX_FMT=NO
|
|||||||
|
|
||||||
for FMT in $NGX_FORMATS
|
for FMT in $NGX_FORMATS
|
||||||
do
|
do
|
||||||
echo "#include <stdio.h>" >> autotest.c
|
echo "#include <stdio.h>" > autotest.c
|
||||||
echo "#include <sys/types.h>" >> autotest.c
|
echo "#include <sys/types.h>" >> autotest.c
|
||||||
|
echo "#include <sys/time.h>" >> autotest.c
|
||||||
|
echo "#include <sys/resource.h>" >> autotest.c
|
||||||
|
echo "$NGX_INTTYPES_H" >> autotest.c
|
||||||
|
echo "$NGX_AUTO_CONFIG" >> autotest.c
|
||||||
echo "int main() {" >> autotest.c
|
echo "int main() {" >> autotest.c
|
||||||
echo "printf(\"${FMT}\", ($NGX_TYPE) $NGX_MAX_SIZE);" >> autotest.c
|
echo "printf(\"${FMT}\", ($NGX_TYPE) $NGX_MAX_SIZE);" >> autotest.c
|
||||||
echo "return 0; }" >> autotest.c
|
echo "return 0; }" >> autotest.c
|
||||||
|
6
auto/fmt/xfmt
Normal file
6
auto/fmt/xfmt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
|
||||||
|
echo "#ifndef $NGX_FMT_NAME" >> $NGX_AUTO_CONFIG_H
|
||||||
|
echo "#define $NGX_FMT_NAME \"$NGX_FMT\"" | sed -e 's/d"$/x"/' \
|
||||||
|
>> $NGX_AUTO_CONFIG_H
|
||||||
|
echo "#endif" >> $NGX_AUTO_CONFIG_H
|
||||||
|
echo >> $NGX_AUTO_CONFIG_H
|
12
auto/func
12
auto/func
@ -1,19 +1,21 @@
|
|||||||
|
|
||||||
echo "checking for $NGX_FUNC"
|
echo "checking for $NGX_FUNC"
|
||||||
|
|
||||||
|
func=`echo $NGX_FUNC | sed -e 's/()$//' | tr '[a-z]' '[A-Z]'`
|
||||||
|
|
||||||
echo "$NGX_UNISTD_H" > autotest.c
|
echo "$NGX_UNISTD_H" > autotest.c
|
||||||
echo "$NGX_FUNC_INC" >> autotest.c
|
echo "$NGX_FUNC_INC" >> autotest.c
|
||||||
echo "int main() { $NGX_FUNC_TEST; return 0; }" >> autotest.c
|
echo "int main() { $NGX_FUNC_TEST; return 0; }" >> autotest.c
|
||||||
|
|
||||||
eval "${CC} -o autotest autotest.c > /dev/null 2>&1"
|
eval "$CC $CC_TEST_FLAGS -o autotest autotest.c > /dev/null 2>&1"
|
||||||
|
|
||||||
if [ -x autotest ]; then
|
if [ -x autotest ]; then
|
||||||
echo " + $NGX_FUNC found"
|
echo " + $NGX_FUNC found"
|
||||||
|
|
||||||
echo "#ifndef $NGX_HAVE" >> $NGX_AUTO_CONFIG_H
|
echo "#ifndef HAVE_$func" >> $NGX_AUTO_CONFIG_H
|
||||||
echo "#define $NGX_HAVE 1" >> $NGX_AUTO_CONFIG_H
|
echo "#define HAVE_$func 1" >> $NGX_AUTO_CONFIG_H
|
||||||
echo "#endif" >> $NGX_AUTO_CONFIG_H
|
echo "#endif" >> $NGX_AUTO_CONFIG_H
|
||||||
echo >> $NGX_AUTO_CONFIG_H
|
echo >> $NGX_AUTO_CONFIG_H
|
||||||
else
|
else
|
||||||
echo " + $NGX_FUNC not found"
|
echo " + $NGX_FUNC not found"
|
||||||
fi
|
fi
|
||||||
|
25
auto/inc
Normal file
25
auto/inc
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
|
||||||
|
echo "checking for $NGX_INC"
|
||||||
|
|
||||||
|
inc=`echo $NGX_INC | sed -e 's/\./_/' | tr '[a-z]' '[A-Z]'`
|
||||||
|
|
||||||
|
echo "#include <$NGX_INC>" > autotest.c
|
||||||
|
echo "int main() { return 0; }" >> autotest.c
|
||||||
|
|
||||||
|
eval "${CC} -o autotest autotest.c > /dev/null 2>&1"
|
||||||
|
|
||||||
|
if [ -x autotest ]; then
|
||||||
|
echo " + $NGX_INC found"
|
||||||
|
|
||||||
|
echo "#ifndef HAVE_$inc" >> $NGX_AUTO_CONFIG_H
|
||||||
|
echo "#define HAVE_$inc 1" >> $NGX_AUTO_CONFIG_H
|
||||||
|
echo "#endif" >> $NGX_AUTO_CONFIG_H
|
||||||
|
echo >> $NGX_AUTO_CONFIG_H
|
||||||
|
|
||||||
|
eval "NGX_$inc='#include <$NGX_INC>'"
|
||||||
|
|
||||||
|
else
|
||||||
|
echo " + $NGX_INC not found"
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm autotest*
|
@ -4,6 +4,4 @@ MAKEFILE=$OBJS/Makefile
|
|||||||
NGX_AUTO_CONFIG_H=$OBJS/ngx_auto_config.h
|
NGX_AUTO_CONFIG_H=$OBJS/ngx_auto_config.h
|
||||||
NGX_MODULES_C=$OBJS/ngx_modules.c
|
NGX_MODULES_C=$OBJS/ngx_modules.c
|
||||||
|
|
||||||
|
NGX_ERR=autoconf.err
|
||||||
NGX_UNISTD_H="#include <unistd.h>"
|
|
||||||
NGX_INTTYPES_H="#include <inttypes.h>"
|
|
||||||
|
@ -19,13 +19,12 @@ case $PLATFORM in
|
|||||||
. auto/os/freebsd
|
. auto/os/freebsd
|
||||||
;;
|
;;
|
||||||
|
|
||||||
Solaris:*)
|
Linux:*)
|
||||||
CC_TEST_FLAGS="-D_FILE_OFFSET_BITS=64"
|
. auto/os/linux
|
||||||
CORE_LIBS="$CORE_LIBS -lsocket -lnsl"
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
Linux:*)
|
SunOS:*)
|
||||||
CC_TEST_FLAGS="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE"
|
. auto/os/solaris
|
||||||
;;
|
;;
|
||||||
|
|
||||||
win32)
|
win32)
|
||||||
|
16
auto/os/linux
Normal file
16
auto/os/linux
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
|
||||||
|
CORE_INCS="$UNIX_INCS"
|
||||||
|
CORE_DEPS="$UNIX_DEPS $LINUX_DEPS"
|
||||||
|
CORE_SRCS="$UNIX_SRCS $LINUX_SRCS $SELECT_SRCS $POLL_SRCS"
|
||||||
|
EVENT_MODULES="$EVENT_MODULES $SELECT_MODULE $POLL_MODULE"
|
||||||
|
|
||||||
|
ZLIB_LIB="-lz"
|
||||||
|
|
||||||
|
|
||||||
|
# TODO check sendfile64()
|
||||||
|
|
||||||
|
#CC_TEST_FLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE"
|
||||||
|
CC_TEST_FLAGS="-D_GNU_SOURCE"
|
||||||
|
|
||||||
|
# STUB
|
||||||
|
CORE_SRCS="$CORE_SRCS $LINUX_SENDFILE_SRCS"
|
18
auto/os/solaris
Normal file
18
auto/os/solaris
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
|
||||||
|
CORE_INCS="$UNIX_INCS"
|
||||||
|
CORE_DEPS="$UNIX_DEPS $SOLARIS_DEPS"
|
||||||
|
CORE_SRCS="$UNIX_SRCS $SOLARIS_SRCS $SELECT_SRCS $POLL_SRCS"
|
||||||
|
EVENT_MODULES="$EVENT_MODULES $SELECT_MODULE $POLL_MODULE"
|
||||||
|
|
||||||
|
MD5_LIB="-lmd5"
|
||||||
|
ZLIB_LIB="-lz"
|
||||||
|
|
||||||
|
CC_TEST_FLAGS="-D_FILE_OFFSET_BITS=64"
|
||||||
|
|
||||||
|
CORE_LIBS="$CORE_LIBS -lsocket -lnsl"
|
||||||
|
|
||||||
|
# STUB
|
||||||
|
CFLAGS="$CFLAGS -D HAVE_DEVPOLL=1"
|
||||||
|
EVENT_MODULES="$EVENT_MODULES $DEVPOLL_MODULE"
|
||||||
|
CORE_SRCS="$CORE_SRCS $DEVPOLL_SRCS"
|
||||||
|
#CORE_SRCS="$CORE_SRCS $LINUX_SENDFILE_SRCS"
|
13
auto/sources
13
auto/sources
@ -95,14 +95,21 @@ UNIX_SRCS="$CORE_SRCS $EVENT_SRCS \
|
|||||||
src/os/unix/ngx_process.c \
|
src/os/unix/ngx_process.c \
|
||||||
src/os/unix/ngx_daemon.c"
|
src/os/unix/ngx_daemon.c"
|
||||||
|
|
||||||
|
|
||||||
LINUX_SENDFILE_SRCS=src/os/unix/ngx_linux_sendfile_chain.c
|
|
||||||
|
|
||||||
FREEBSD_DEPS=src/os/unix/ngx_freebsd_config.h
|
FREEBSD_DEPS=src/os/unix/ngx_freebsd_config.h
|
||||||
FREEBSD_SRCS=src/os/unix/ngx_freebsd_init.c
|
FREEBSD_SRCS=src/os/unix/ngx_freebsd_init.c
|
||||||
FREEBSD_SENDFILE_SRCS=src/os/unix/ngx_freebsd_sendfile_chain.c
|
FREEBSD_SENDFILE_SRCS=src/os/unix/ngx_freebsd_sendfile_chain.c
|
||||||
|
|
||||||
|
|
||||||
|
LINUX_DEPS=src/os/unix/ngx_linux_config.h
|
||||||
|
LINUX_SRCS=src/os/unix/ngx_linux_init.c
|
||||||
|
LINUX_SENDFILE_SRCS=src/os/unix/ngx_linux_sendfile_chain.c
|
||||||
|
|
||||||
|
|
||||||
|
SOLARIS_DEPS=src/os/unix/ngx_solaris_config.h
|
||||||
|
SOLARIS_SRCS=src/os/unix/ngx_solaris_init.c
|
||||||
|
SOLARIS_SENDFILE_SRCS=src/os/unix/ngx_solaris_sendfilev_chain.c
|
||||||
|
|
||||||
|
|
||||||
WIN32_INCS="$CORE_INCS $EVENT_INCS -I src/os/win32"
|
WIN32_INCS="$CORE_INCS $EVENT_INCS -I src/os/win32"
|
||||||
|
|
||||||
WIN32_DEPS="$CORE_DEPS $EVENT_DEPS \
|
WIN32_DEPS="$CORE_DEPS $EVENT_DEPS \
|
||||||
|
@ -4,6 +4,10 @@ echo "checking for $NGX_TYPE size"
|
|||||||
NGX_BYTES=
|
NGX_BYTES=
|
||||||
|
|
||||||
echo "#include <sys/types.h>" > autotest.c
|
echo "#include <sys/types.h>" > autotest.c
|
||||||
|
echo "#include <sys/time.h>" >> autotest.c
|
||||||
|
echo "#include <sys/resource.h>" >> autotest.c
|
||||||
|
echo "$NGX_INTTYPES_H" >> autotest.c
|
||||||
|
echo "$NGX_AUTO_CONFIG" >> autotest.c
|
||||||
echo "int main() {" >> autotest.c
|
echo "int main() {" >> autotest.c
|
||||||
echo "printf(\"%d\", sizeof($NGX_TYPE));" >> autotest.c
|
echo "printf(\"%d\", sizeof($NGX_TYPE));" >> autotest.c
|
||||||
echo "return 0; }" >> autotest.c
|
echo "return 0; }" >> autotest.c
|
||||||
|
@ -7,10 +7,13 @@ for TYPE in $NGX_TYPE $NGX_TYPES
|
|||||||
do
|
do
|
||||||
echo "#include <sys/types.h>" > autotest.c
|
echo "#include <sys/types.h>" > autotest.c
|
||||||
echo "#include <sys/socket.h>" >> autotest.c
|
echo "#include <sys/socket.h>" >> autotest.c
|
||||||
|
echo "#include <sys/time.h>" >> autotest.c
|
||||||
|
echo "#include <sys/resource.h>" >> autotest.c
|
||||||
|
echo "#include <netinet/in.h>" >> autotest.c
|
||||||
echo "$NGX_INTTYPES_H" >> autotest.c
|
echo "$NGX_INTTYPES_H" >> autotest.c
|
||||||
echo "int main() { $TYPE i = 0; return 0; }" >> autotest.c
|
echo "int main() { $TYPE i = 0; return 0; }" >> autotest.c
|
||||||
|
|
||||||
eval "$CC -o autotest autotest.c > /dev/null 2>&1"
|
eval "$CC -o autotest autotest.c > $NGX_ERR 2>&1"
|
||||||
|
|
||||||
if [ -x autotest ]; then
|
if [ -x autotest ]; then
|
||||||
if [ $TYPE = $NGX_TYPE ]; then
|
if [ $TYPE = $NGX_TYPE ]; then
|
||||||
|
@ -4,6 +4,7 @@ echo 'checking for uintptr_t'
|
|||||||
FOUND=NO
|
FOUND=NO
|
||||||
|
|
||||||
echo "#include <sys/types.h>" > autotest.c
|
echo "#include <sys/types.h>" > autotest.c
|
||||||
|
echo "$NGX_INTTYPES_H" >> autotest.c
|
||||||
echo "int main() { uintptr_t i = 0; return 0; }" >> autotest.c
|
echo "int main() { uintptr_t i = 0; return 0; }" >> autotest.c
|
||||||
|
|
||||||
eval "$CC -o autotest autotest.c > /dev/null 2>&1"
|
eval "$CC -o autotest autotest.c > /dev/null 2>&1"
|
||||||
|
45
auto/unix
45
auto/unix
@ -2,6 +2,8 @@
|
|||||||
CC_WARN=$CC
|
CC_WARN=$CC
|
||||||
NGX_FMT_COLLECT=YES
|
NGX_FMT_COLLECT=YES
|
||||||
|
|
||||||
|
# C types
|
||||||
|
|
||||||
NGX_TYPE="int"; . auto/types/sizeof;
|
NGX_TYPE="int"; . auto/types/sizeof;
|
||||||
NGX_FORMATS="%d"; . auto/fmt/fmt
|
NGX_FORMATS="%d"; . auto/fmt/fmt
|
||||||
|
|
||||||
@ -14,6 +16,32 @@ NGX_FORMATS="%lld %qd"; . auto/fmt/fmt
|
|||||||
NGX_TYPE="void *"; . auto/types/sizeof; NGX_PTR_BYTES=$NGX_BYTES
|
NGX_TYPE="void *"; . auto/types/sizeof; NGX_PTR_BYTES=$NGX_BYTES
|
||||||
|
|
||||||
|
|
||||||
|
# headers
|
||||||
|
|
||||||
|
NGX_INC="unistd.h"; . auto/inc
|
||||||
|
NGX_INC="inttypes.h"; . auto/inc
|
||||||
|
|
||||||
|
#POSIX types
|
||||||
|
|
||||||
|
NGX_AUTO_CONFIG="#include \"$NGX_AUTO_CONFIG_H\""
|
||||||
|
|
||||||
|
NGX_TYPE="uint64_t"
|
||||||
|
NGX_TYPES="u_int64_t"; . auto/types/typedef
|
||||||
|
|
||||||
|
NGX_TYPE="socklen_t"
|
||||||
|
NGX_TYPES="uint32_t"; . auto/types/typedef
|
||||||
|
|
||||||
|
NGX_TYPE="in_addr_t"
|
||||||
|
NGX_TYPES="uint32_t"; . auto/types/typedef
|
||||||
|
|
||||||
|
NGX_TYPE="rlim_t"
|
||||||
|
NGX_TYPES="int"; . auto/types/typedef
|
||||||
|
|
||||||
|
. auto/types/uintptr_t
|
||||||
|
|
||||||
|
|
||||||
|
# printf() formats
|
||||||
|
|
||||||
CC_WARN=$CC_STRONG
|
CC_WARN=$CC_STRONG
|
||||||
NGX_FMT_COLLECT=NO
|
NGX_FMT_COLLECT=NO
|
||||||
|
|
||||||
@ -40,31 +68,22 @@ NGX_TYPE="rlim_t"; . auto/types/sizeof
|
|||||||
eval NGX_FORMATS=\${NGX_${NGX_BYTES}_FMT}; . auto/fmt/fmt
|
eval NGX_FORMATS=\${NGX_${NGX_BYTES}_FMT}; . auto/fmt/fmt
|
||||||
|
|
||||||
|
|
||||||
CC_WARN=$CC
|
# syscalls and libc calls
|
||||||
|
|
||||||
NGX_TYPE="uint64_t"
|
|
||||||
NGX_TYPES="u_int64_t"; . auto/types/typedef
|
|
||||||
|
|
||||||
NGX_TYPE="socklen_t"
|
|
||||||
NGX_TYPES="u_int32_t"; . auto/types/typedef
|
|
||||||
|
|
||||||
. auto/types/uintptr_t
|
|
||||||
|
|
||||||
|
|
||||||
NGX_FUNC_INC=
|
NGX_FUNC_INC=
|
||||||
NGX_FUNC_TEST="int fd = 0; char buf[1]; size_t size = 1;
|
NGX_FUNC_TEST="int fd = 0; char buf[1]; size_t size = 1;
|
||||||
ssize_t n; off_t offset = 0;
|
ssize_t n; off_t offset = 0;
|
||||||
n = pread(fd, buf, size, offset)"
|
n = pread(fd, buf, size, offset)"
|
||||||
NGX_HAVE=HAVE_PREAD; NGX_FUNC="pread()"; . auto/func
|
NGX_FUNC="pread()"; . auto/func
|
||||||
|
|
||||||
|
|
||||||
NGX_FUNC_INC=
|
NGX_FUNC_INC=
|
||||||
NGX_FUNC_TEST="int fd = 1; char buf[1]; size_t size = 1;
|
NGX_FUNC_TEST="int fd = 1; char buf[1]; size_t size = 1;
|
||||||
ssize_t n; off_t offset = 0;
|
ssize_t n; off_t offset = 0;
|
||||||
n = pwrite(fd, buf, size, offset)"
|
n = pwrite(fd, buf, size, offset)"
|
||||||
NGX_HAVE=HAVE_PWRITE; NGX_FUNC="pwrite()"; . auto/func
|
NGX_FUNC="pwrite()"; . auto/func
|
||||||
|
|
||||||
|
|
||||||
NGX_FUNC_INC="#include <time.h>"
|
NGX_FUNC_INC="#include <time.h>"
|
||||||
NGX_FUNC_TEST="struct tm t; time_t c=0; localtime_r(&c, &t)"
|
NGX_FUNC_TEST="struct tm t; time_t c=0; localtime_r(&c, &t)"
|
||||||
NGX_HAVE=HAVE_LOCALTIME_R; NGX_FUNC="localtime_r()"; . auto/func
|
NGX_FUNC="localtime_r()"; . auto/func
|
||||||
|
@ -311,7 +311,12 @@ static int ngx_kqueue_set_event(ngx_event_t *ev, int filter, u_int flags)
|
|||||||
|
|
||||||
if (filter == EVFILT_VNODE) {
|
if (filter == EVFILT_VNODE) {
|
||||||
change_list[nchanges].fflags = NOTE_DELETE|NOTE_WRITE|NOTE_EXTEND
|
change_list[nchanges].fflags = NOTE_DELETE|NOTE_WRITE|NOTE_EXTEND
|
||||||
|NOTE_ATTRIB|NOTE_RENAME|NOTE_REVOKE;
|
|NOTE_ATTRIB|NOTE_RENAME
|
||||||
|
#if (__FreeBSD__ == 4 && __FreeBSD_version >= 430000) \
|
||||||
|
|| __FreeBSD_version >= 500018
|
||||||
|
|NOTE_REVOKE
|
||||||
|
#endif
|
||||||
|
;
|
||||||
change_list[nchanges].data = 0;
|
change_list[nchanges].data = 0;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -11,7 +11,7 @@ ssize_t ngx_read_file(ngx_file_t *file, char *buf, size_t size, off_t offset)
|
|||||||
{
|
{
|
||||||
ssize_t n;
|
ssize_t n;
|
||||||
|
|
||||||
ngx_log_debug(file->log, "read: %d, %x, %d, %qd" _
|
ngx_log_debug(file->log, "read: %d, %x, %d, " OFF_T_FMT _
|
||||||
file->fd _ buf _ size _ offset);
|
file->fd _ buf _ size _ offset);
|
||||||
|
|
||||||
#if (HAVE_PREAD)
|
#if (HAVE_PREAD)
|
||||||
|
@ -79,4 +79,5 @@
|
|||||||
#define HAVE_LITTLE_ENDIAN 1
|
#define HAVE_LITTLE_ENDIAN 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* _NGX_FREEBSD_CONFIG_H_INCLUDED_ */
|
#endif /* _NGX_FREEBSD_CONFIG_H_INCLUDED_ */
|
||||||
|
@ -22,7 +22,7 @@ ngx_os_io_t ngx_os_io = {
|
|||||||
NULL,
|
NULL,
|
||||||
#if (HAVE_SENDFILE)
|
#if (HAVE_SENDFILE)
|
||||||
ngx_freebsd_sendfile_chain,
|
ngx_freebsd_sendfile_chain,
|
||||||
NGX_HAVE_SENDFILE
|
NGX_IO_SENDFILE
|
||||||
#else
|
#else
|
||||||
ngx_writev_chain,
|
ngx_writev_chain,
|
||||||
0
|
0
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#define _NGX_LINUX_H_INCLUDED_
|
#define _NGX_LINUX_H_INCLUDED_
|
||||||
|
|
||||||
|
|
||||||
ngx_chain_t *ngx_linux_sendfile_chain(ngx_connection_t *c, ngx_chain_t *in)
|
ngx_chain_t *ngx_linux_sendfile_chain(ngx_connection_t *c, ngx_chain_t *in);
|
||||||
|
|
||||||
|
|
||||||
#endif /* _NGX_LINUX_H_INCLUDED_ */
|
#endif /* _NGX_LINUX_H_INCLUDED_ */
|
||||||
|
@ -4,8 +4,10 @@
|
|||||||
|
|
||||||
#define _GNU_SOURCE /* pread(), pwrite(), gethostname() */
|
#define _GNU_SOURCE /* pread(), pwrite(), gethostname() */
|
||||||
|
|
||||||
|
#if 0
|
||||||
#define _FILE_OFFSET_BITS 64
|
#define _FILE_OFFSET_BITS 64
|
||||||
#define _LARGEFILE_SOURCE
|
#define _LARGEFILE_SOURCE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
@ -24,8 +26,11 @@
|
|||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include <sys/resource.h>
|
#include <sys/resource.h>
|
||||||
#include <sys/sysctl.h>
|
#include <sys/sysctl.h>
|
||||||
|
#include <sys/wait.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
#include <sys/sendfile.h>
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
|
#include <netinet/tcp.h> /* TCP_CORK */
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
#include <dirent.h>
|
#include <dirent.h>
|
||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
|
@ -11,8 +11,8 @@ ngx_os_io_t ngx_os_io = {
|
|||||||
ngx_unix_recv,
|
ngx_unix_recv,
|
||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
ngx_writev_chain,
|
ngx_linux_sendfile_chain,
|
||||||
NGX_HAVE_ZEROCOPY
|
NGX_IO_SENDFILE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ ngx_chain_t *ngx_linux_sendfile_chain(ngx_connection_t *c, ngx_chain_t *in)
|
|||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
char *prev;
|
char *prev;
|
||||||
off_t fprev;
|
off_t offset;
|
||||||
size_t size, fsize, sent;
|
size_t size, fsize, sent;
|
||||||
ngx_int_t use_cork, eintr;
|
ngx_int_t use_cork, eintr;
|
||||||
struct iovec *iov;
|
struct iovec *iov;
|
||||||
@ -16,7 +16,7 @@ ngx_chain_t *ngx_linux_sendfile_chain(ngx_connection_t *c, ngx_chain_t *in)
|
|||||||
ngx_hunk_t *file;
|
ngx_hunk_t *file;
|
||||||
ngx_array_t header;
|
ngx_array_t header;
|
||||||
ngx_event_t *wev;
|
ngx_event_t *wev;
|
||||||
ngx_chain_t *cl;
|
ngx_chain_t *cl, *tail;
|
||||||
|
|
||||||
wev = c->write;
|
wev = c->write;
|
||||||
|
|
||||||
@ -24,8 +24,6 @@ ngx_chain_t *ngx_linux_sendfile_chain(ngx_connection_t *c, ngx_chain_t *in)
|
|||||||
return in;
|
return in;
|
||||||
}
|
}
|
||||||
|
|
||||||
cork = 0;
|
|
||||||
|
|
||||||
do {
|
do {
|
||||||
file = NULL;
|
file = NULL;
|
||||||
fsize = 0;
|
fsize = 0;
|
||||||
@ -84,20 +82,20 @@ ngx_log_debug(c->log, "CORK");
|
|||||||
|
|
||||||
file = cl->hunk;
|
file = cl->hunk;
|
||||||
fsize = (size_t) (file->file_last - file->file_pos);
|
fsize = (size_t) (file->file_last - file->file_pos);
|
||||||
fprev = file->file_last;
|
offset = file->file_last;
|
||||||
cl = cl->next;
|
cl = cl->next;
|
||||||
|
|
||||||
/* coalesce the neighbouring file hunks */
|
/* coalesce the neighbouring file hunks */
|
||||||
|
|
||||||
while (cl && (cl->hunk->type & NGX_HUNK_FILE)) {
|
while (cl && (cl->hunk->type & NGX_HUNK_FILE)) {
|
||||||
if (file->file->fd != cl->hunk->file->fd
|
if (file->file->fd != cl->hunk->file->fd
|
||||||
|| fprev != cl->hunk->file_pos)
|
|| offset != cl->hunk->file_pos)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
fsize += (size_t) (cl->hunk->file_last - cl->hunk->file_pos);
|
fsize += (size_t) (cl->hunk->file_last - cl->hunk->file_pos);
|
||||||
fprev = cl->hunk->file_last;
|
offset = cl->hunk->file_last;
|
||||||
cl = cl->next;
|
cl = cl->next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -110,7 +108,8 @@ ngx_log_debug(c->log, "CORK");
|
|||||||
tail = cl;
|
tail = cl;
|
||||||
|
|
||||||
if (fsize) {
|
if (fsize) {
|
||||||
rc = sendfile(c->fd, file->file->fd, file->file_pos, fsize);
|
offset = file->file_pos;
|
||||||
|
rc = sendfile(c->fd, file->file->fd, &offset, fsize);
|
||||||
|
|
||||||
if (rc == -1) {
|
if (rc == -1) {
|
||||||
err = ngx_errno;
|
err = ngx_errno;
|
||||||
|
@ -57,4 +57,9 @@ extern int rotate;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
|
#include <ngx_linux.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#endif /* _NGX_OS_H_INCLUDED_ */
|
#endif /* _NGX_OS_H_INCLUDED_ */
|
||||||
|
@ -17,8 +17,9 @@
|
|||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <strings.h>
|
#include <strings.h>
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <sys/wait.h>
|
||||||
#include <sys/filio.h> /* FIONBIO */
|
#include <sys/filio.h> /* FIONBIO */
|
||||||
#include <sys/stropts.h> /* INFTIM */
|
#include <sys/stropts.h> /* INFTIM */
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
@ -26,16 +27,7 @@
|
|||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
#include <netdb.h>
|
#include <netdb.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
|
||||||
#if 0
|
|
||||||
#define OFF_FMT "%lld"
|
|
||||||
#define SIZE_FMT "%d"
|
|
||||||
#define SIZEX_FMT "%x"
|
|
||||||
#define TIME_FMT "%ld"
|
|
||||||
#define PID_FMT "%ld"
|
|
||||||
#define RLIM_FMT "%lu"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef HAVE_SELECT
|
#ifndef HAVE_SELECT
|
||||||
|
@ -13,7 +13,7 @@ ngx_os_io_t ngx_os_io = {
|
|||||||
NULL,
|
NULL,
|
||||||
NULL,
|
NULL,
|
||||||
ngx_writev_chain,
|
ngx_writev_chain,
|
||||||
NGX_HAVE_ZEROCOPY
|
0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -40,7 +40,7 @@ int ngx_os_init(ngx_log_t *log)
|
|||||||
return NGX_ERROR;
|
return NGX_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
ngx_log_error(NGX_LOG_INFO, log, 0, "OS: %s %s"
|
ngx_log_error(NGX_LOG_INFO, log, 0, "OS: %s %s",
|
||||||
ngx_solaris_sysname, ngx_solaris_release);
|
ngx_solaris_sysname, ngx_solaris_release);
|
||||||
|
|
||||||
ngx_log_error(NGX_LOG_INFO, log, 0, "version: %s",
|
ngx_log_error(NGX_LOG_INFO, log, 0, "version: %s",
|
||||||
|
Loading…
Reference in New Issue
Block a user