From owner-freebsd-ports-bugs@FreeBSD.ORG Thu May 2 00:40:00 2013 Return-Path: Delivered-To: freebsd-ports-bugs@smarthost.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 800231B4; Thu, 2 May 2013 00:40:00 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) by mx1.freebsd.org (Postfix) with ESMTP id 5F5731C96; Thu, 2 May 2013 00:40:00 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.6/8.14.6) with ESMTP id r420e07L067321; Thu, 2 May 2013 00:40:00 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.6/8.14.6/Submit) id r420e044067320; Thu, 2 May 2013 00:40:00 GMT (envelope-from gnats) Resent-Date: Thu, 2 May 2013 00:40:00 GMT Resent-Message-Id: <201305020040.r420e044067320@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-ports-bugs@FreeBSD.org Resent-Cc: d@delphij.net Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Xin LI Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id DB31C197; Thu, 2 May 2013 00:38:15 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) by mx1.freebsd.org (Postfix) with ESMTP id CE0261C5A; Thu, 2 May 2013 00:38:15 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.6/8.14.6) with ESMTP id r420cFWs066743; Thu, 2 May 2013 00:38:15 GMT (envelope-from delphij@freefall.freebsd.org) Received: (from delphij@localhost) by freefall.freebsd.org (8.14.6/8.14.6/Submit) id r420cFGe066740; Thu, 2 May 2013 00:38:15 GMT (envelope-from delphij) Message-Id: <201305020038.r420cFGe066740@freefall.freebsd.org> Date: Thu, 2 May 2013 00:38:15 GMT From: Xin LI To: FreeBSD-gnats-submit@freebsd.org X-Send-Pr-Version: 3.114 X-GNATS-Notify: d@delphij.net Subject: ports/178289: [PATCH] Update www/nginx to 1.4.0 Cc: osa@FreeBSD.org X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: Xin LI List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 May 2013 00:40:00 -0000 >Number: 178289 >Category: ports >Synopsis: [PATCH] Update www/nginx to 1.4.0 >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: update >Submitter-Id: current-users >Arrival-Date: Thu May 02 00:40:00 UTC 2013 >Closed-Date: >Last-Modified: >Originator: Xin LI >Release: FreeBSD 10.0-CURRENT amd64 >Organization: iXsystems, Inc. >Environment: System: FreeBSD freefall.freebsd.org 10.0-CURRENT FreeBSD 10.0-CURRENT #0 r249172: Sat Apr 6 00:40:01 UTC 2013 peter@freefall.freebsd.org:/usr/obj/usr/src/sys/FREEFALL amd64 >Description: The attached patch updates www/nginx to 1.4.0 and refreshes a few modules. >How-To-Repeat: >Fix: --- nginx-1.4.0.diff begins here --- Index: www/nginx/Makefile =================================================================== --- www/nginx/Makefile (revision 317056) +++ www/nginx/Makefile (working copy) @@ -2,7 +2,7 @@ # $FreeBSD$ PORTNAME= nginx -PORTVERSION= 1.2.8 +PORTVERSION= 1.4.0 PORTEPOCH= 1 CATEGORIES= www MASTER_SITES= http://nginx.org/download/ @@ -29,6 +29,7 @@ OPTIONS_DEFINE= \ HTTP_FLV \ HTTP_GEOIP \ HTTP_GZIP_STATIC \ + HTTP_GUNZIP_FILTER \ HTTP_IMAGE_FILTER \ HTTP_PERL \ HTTP_RANDOM_INDEX \ @@ -44,6 +45,7 @@ OPTIONS_DEFINE= \ MAIL_POP3 \ MAIL_SMTP \ MAIL_SSL \ + SPDY \ WWW \ CACHE_PURGE \ CTPP2 \ @@ -58,7 +60,6 @@ OPTIONS_DEFINE= \ HTTP_DAV_EXT \ HTTP_EVAL \ HTTP_FANCYINDEX \ - HTTP_GUNZIP_FILTER \ HTTP_MOGILEFS \ HTTP_NOTICE \ HTTP_PUSH \ @@ -73,7 +74,6 @@ OPTIONS_DEFINE= \ HTTP_UPSTREAM_STICKY \ HTTP_ZIP \ ARRAYVAR \ - CHUNKIN \ DRIZZLE \ ENCRYPTSESSION \ FORMINPUT \ @@ -115,6 +115,7 @@ HTTP_DAV_DESC= Enable http_webdav module HTTP_FLV_DESC= Enable http_flv module HTTP_GEOIP_DESC= Enable http_geoip module HTTP_GZIP_STATIC_DESC= Enable http_gzip_static module +HTTP_GUNZIP_FILTER_DESC= Enable http_gunzip_filter module HTTP_IMAGE_FILTER_DESC= Enable http_image_filter module HTTP_MP4_DESC= Enable http_mp4 module HTTP_PERL_DESC= Enable http_perl module @@ -131,6 +132,7 @@ MAIL_IMAP_DESC= Enable IMAP4 proxy module MAIL_POP3_DESC= Enable POP3 proxy module MAIL_SMTP_DESC= Enable SMTP proxy module MAIL_SSL_DESC= Enable mail_ssl module +SPDY_DESC= Enable SPDY protocol support (SSL req.) WWW_DESC= Enable html sample files CACHE_PURGE_DESC= 3rd party cache_purge module CTPP2_DESC= 3rd party CT++ module @@ -145,7 +147,6 @@ HTTP_AUTH_REQ_DESC= 3rd party http_auth_request m HTTP_DAV_EXT_DESC= 3rd party webdav_ext module HTTP_EVAL_DESC= 3rd party eval module HTTP_FANCYINDEX_DESC= 3rd party http_fancyindex module -HTTP_GUNZIP_FILTER_DESC= 3rd party http_gunzip_filter module HTTP_MOGILEFS_DESC= 3rd party mogilefs module HTTP_MP4_H264_DESC= 3rd party mp4/h264 module HTTP_NOTICE_DESC= 3rd party notice module @@ -161,7 +162,6 @@ HTTP_UPSTREAM_HASH_DESC= 3rd party upstream hash m HTTP_UPSTREAM_STICKY_DESC= 3rd party upstream sticky module HTTP_ZIP_DESC= 3rd party http_zip module ARRAYVAR_DESC= 3rd party array_var module -CHUNKIN_DESC= 3rd party chunkin module DRIZZLE_DESC= 3rd party drizzlie module ENCRYPTSESSION_DESC= 3rd party encrypted_session module FORMINPUT_DESC= 3rd party form_input module @@ -295,7 +295,7 @@ CONFIGURE_ARGS+=--add-module=${WRKDIR}/samizdatco- .if ${PORT_OPTIONS:MHTTP_AUTH_LDAP} # WWW: https://github.com/kvspb/nginx-auth-ldap -GIT_HTTP_AUTH_LDAP_VERSION= c4dc7c9153 +GIT_HTTP_AUTH_LDAP_VERSION= c4dc7c9153 MASTER_SITES+= LOCAL/rm:http_auth_ldap DISTFILES+= http_auth_ldap-${GIT_HTTP_AUTH_LDAP_VERSION}.tar.gz:http_auth_ldap CONFIGURE_ARGS+=--add-module=${WRKDIR}/http_auth_ldap-${GIT_HTTP_AUTH_LDAP_VERSION} @@ -336,8 +336,8 @@ CONFIGURE_ARGS+=--add-module=${WRKDIR}/ngx_ctpp2-$ .endif .if ${PORT_OPTIONS:MECHO} -NGINX_ECHO_VERSION= 0.42 -GIT_ECHO_VERSION= 0-gfb90d17 +NGINX_ECHO_VERSION= 0.45 +GIT_ECHO_VERSION= 0-g6ce0801 FETCH_ARGS= -pRr MASTER_SITES+= https://github.com/agentzh/echo-nginx-module/tarball/v${NGINX_ECHO_VERSION}/:echo DISTFILES+= agentzh-echo-nginx-module-v${NGINX_ECHO_VERSION}-${GIT_ECHO_VERSION}.tar.gz:echo @@ -345,8 +345,8 @@ CONFIGURE_ARGS+=--add-module=${WRKDIR}/agentzh-ech .endif .if ${PORT_OPTIONS:MHEADERS_MORE} -NGINX_HEADERS_MORE_VERSION= 0.19 -GIT_HEADERS_MORE_VERSION= 0-g27bcbd2 +NGINX_HEADERS_MORE_VERSION= 0.20 +GIT_HEADERS_MORE_VERSION= 0-g0df17d0 FETCH_ARGS= -pRr MASTER_SITES+= https://github.com/agentzh/headers-more-nginx-module/tarball/v${NGINX_HEADERS_MORE_VERSION}/:headers_more DISTFILES+= agentzh-headers-more-nginx-module-v${NGINX_HEADERS_MORE_VERSION}-${GIT_HEADERS_MORE_VERSION}.tar.gz:headers_more @@ -385,13 +385,6 @@ DISTFILES+= ngx-fancyindex-${NGINX_FANCYINDEX_VERS CONFIGURE_ARGS+=--add-module=${WRKDIR}/ngx-fancyindex-${NGINX_FANCYINDEX_VERSION} .endif -.if ${PORT_OPTIONS:MHTTP_GUNZIP_FILTER} -NGINX_GUNZIP_FILTER_VERSION= 0.4 -MASTER_SITES+= http://mdounin.ru/files/:gunzipfilter -DISTFILES+= ngx_http_gunzip_filter_module-${NGINX_GUNZIP_FILTER_VERSION}.tar.gz:gunzipfilter -CONFIGURE_ARGS+=--add-module=${WRKDIR}/ngx_http_gunzip_filter_module-${NGINX_GUNZIP_FILTER_VERSION} -.endif - .if ${PORT_OPTIONS:MHTTP_FLV} CONFIGURE_ARGS+=--with-http_flv_module .endif @@ -405,6 +398,10 @@ LIB_DEPENDS+= GeoIP:${PORTSDIR}/net/GeoIP CONFIGURE_ARGS+=--with-http_gzip_static_module .endif +.if ${PORT_OPTIONS:MHTTP_GUNZIP_FILTER} +CONFIGURE_ARGS+=--with-http_gunzip_module +.endif + .if ${PORT_OPTIONS:MHTTP_IMAGE_FILTER} LIB_DEPENDS+= gd:${PORTSDIR}/graphics/gd CONFIGURE_ARGS+=--with-http_image_filter_module @@ -452,8 +449,8 @@ CONFIGURE_ARGS+=--add-module=${WRKDIR}/nginx_http_ .endif .if ${PORT_OPTIONS:MHTTP_PUSH_STREAM} -NGINX_PUSH_STREAM_VERSION= 0.3.4 -GIT_PUSH_STREAM_VERSION= 0-g28d9df7 +NGINX_PUSH_STREAM_VERSION= 0.3.5 +GIT_PUSH_STREAM_VERSION= 0-gb6a8c46 FETCH_ARGS= -pRr MASTER_SITES+= https://github.com/wandenberg/nginx-push-stream-module/tarball/${NGINX_PUSH_STREAM_VERSION}/:pushstream DISTFILES+= wandenberg-nginx-push-stream-module-${NGINX_PUSH_STREAM_VERSION}-${GIT_PUSH_STREAM_VERSION}.tar.gz:pushstream @@ -484,7 +481,6 @@ CONFIGURE_ARGS+=--add-module=${WRKDIR}/ngx_http_re .endif .if ${PORT_OPTIONS:MHTTP_SUBS_FILTER} -USE_HTTP_REWRITE= yes NGINX_HTTP_SUBS_FILTER_VERSION= 0.6.2 GIT_HTTP_SUBS_FILTER_VERSION= 0-g27a01b3 FETCH_ARGS= -pRr @@ -510,6 +506,7 @@ NGINX_UPLOAD_VERSION= 2.2.0 MASTER_SITES+= http://www.grid.net.ru/nginx/download/:upload DISTFILES+= nginx_upload_module-${NGINX_UPLOAD_VERSION}.tar.gz:upload CONFIGURE_ARGS+=--add-module=${WRKDIR}/nginx_upload_module-${NGINX_UPLOAD_VERSION} +EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-ngx_http_upload_module.c .endif .if ${PORT_OPTIONS:MHTTP_UPLOAD_PROGRESS} @@ -539,7 +536,7 @@ EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-ngx_http_u .if ${PORT_OPTIONS:MHTTP_UPSTREAM_STICKY} USE_HTTP_SSL= yes -NGINX_UPSTREAM_STICKY_VERSION= 1.0 +NGINX_UPSTREAM_STICKY_VERSION= 1.1 MASTER_SITES+= http://nginx-sticky-module.googlecode.com/files/:upstreamsticky DISTFILES+= nginx-sticky-module-${NGINX_UPSTREAM_STICKY_VERSION}.tar.gz:upstreamsticky CONFIGURE_ARGS+=--add-module=${WRKDIR}/nginx-sticky-module-${NGINX_UPSTREAM_STICKY_VERSION} @@ -557,19 +554,10 @@ DISTFILES+= mod_zip-${NGINX_ZIP_VERSION}.tar.gz:zi CONFIGURE_ARGS+=--add-module=${WRKDIR}/mod_zip-${NGINX_ZIP_VERSION} .endif -.if ${PORT_OPTIONS:MCHUNKIN} -NGINX_CHUNKIN_VERSION= 0.23 -GIT_CHUNKIN_VERSION= 0-g81c04f6 -FETCH_ARGS= -pRr -MASTER_SITES+= https://github.com/agentzh/chunkin-nginx-module/tarball/v${NGINX_CHUNKIN_VERSION}/:chunkin -DISTFILES+= agentzh-chunkin-nginx-module-v${NGINX_CHUNKIN_VERSION}-${GIT_CHUNKIN_VERSION}.tar.gz:chunkin -CONFIGURE_ARGS+=--add-module=${WRKDIR}/agentzh-chunkin-nginx-module-${GIT_CHUNKIN_VERSION:S/^0-g//} -.endif - .if ${PORT_OPTIONS:MDRIZZLE} -LIB_DEPENDS+= drizzle:${PORTSDIR}/databases/drizzle -NGINX_DRIZZLE_VERSION= 0.1.4 -GIT_DRIZZLE_VERSION= 0-g59e12ad +LIB_DEPENDS+= drizzle:${PORTSDIR}/databases/libdrizzle +NGINX_DRIZZLE_VERSION= 0.1.5 +GIT_DRIZZLE_VERSION= 0-g943c915 FETCH_ARGS= -pRr MASTER_SITES+= https://github.com/chaoslawful/drizzle-nginx-module/tarball/v${NGINX_DRIZZLE_VERSION}/:drizzle DISTFILES+= chaoslawful-drizzle-nginx-module-v${NGINX_DRIZZLE_VERSION}-${GIT_DRIZZLE_VERSION}.tar.gz:drizzle @@ -587,8 +575,8 @@ CONFIGURE_ARGS+=--add-module=${WRKDIR}/simpl-ngx_d .endif .if ${PORT_OPTIONS:MENCRYPTSESSION} -NGINX_ENCRYPTSESSION_VERSION= 0.02 -GIT_ENCRYPTSESSION_VERSION= 0-gc752861 +NGINX_ENCRYPTSESSION_VERSION= 0.03 +GIT_ENCRYPTSESSION_VERSION= 0-g49d741b FETCH_ARGS= -pRr MASTER_SITES+= https://github.com/agentzh/encrypted-session-nginx-module/tarball/v${NGINX_ENCRYPTSESSION_VERSION}/:encryptsession DISTFILES+= agentzh-encrypted-session-nginx-module-v${NGINX_ENCRYPTSESSION_VERSION}-${GIT_ENCRYPTSESSION_VERSION}.tar.gz:encryptsession @@ -621,8 +609,8 @@ CONFIGURE_ARGS+=--add-module=${WRKDIR}/arut-nginx- LIB_DEPENDS+= luajit-5.1:${PORTSDIR}/lang/luajit CONFIGURE_ENV+= "LUAJIT_INC=${LOCALBASE}/include/luajit-2.0" CONFIGURE_ENV+= "LUAJIT_LIB=${LOCALBASE}/lib" -NGINX_LUA_VERSION= 0.7.15 -GIT_LUA_VERSION= 0-g57a6471 +NGINX_LUA_VERSION= 0.8.1 +GIT_LUA_VERSION= 0-gc558c43 FETCH_ARGS= -pRr MASTER_SITES+= https://github.com/chaoslawful/lua-nginx-module/tarball/v${NGINX_LUA_VERSION}/:lua DISTFILES+= chaoslawful-lua-nginx-module-v${NGINX_LUA_VERSION}-${GIT_LUA_VERSION}.tar.gz:lua @@ -694,8 +682,8 @@ CONFIGURE_ARGS+=--add-module=${WRKDIR}/agentzh-rds .endif .if ${PORT_OPTIONS:MREDIS2} -NGINX_REDIS2_VERSION= 0.09 -GIT_REDIS2_VERSION= 0-g279beee +NGINX_REDIS2_VERSION= 0.10 +GIT_REDIS2_VERSION= 0-g78a7622 FETCH_ARGS= -pRr MASTER_SITES+= https://github.com/agentzh/redis2-nginx-module/tarball/v${NGINX_REDIS2_VERSION}/:redis2 DISTFILES+= agentzh-redis2-nginx-module-v${NGINX_REDIS2_VERSION}-${GIT_REDIS2_VERSION}.tar.gz:redis2 @@ -703,8 +691,8 @@ CONFIGURE_ARGS+=--add-module=${WRKDIR}/agentzh-red .endif .if ${PORT_OPTIONS:MRTMP} -NGINX_RTMP_VERSION= 0.9.13 -GIT_RTMP_VERSION= 0-gb631008 +NGINX_RTMP_VERSION= 0.9.18 +GIT_RTMP_VERSION= 0-gbce7ea3 FETCH_ARGS= -pRr MASTER_SITES+= https://github.com/arut/nginx-rtmp-module/tarball/v${NGINX_RTMP_VERSION}/:rtmp DISTFILES+= arut-rtmp-nginx-module-v${NGINX_RTMP_VERSION}-${GIT_RTMP_VERSION}.tar.gz:rtmp @@ -738,8 +726,8 @@ CONFIGURE_ARGS+=--add-module=${WRKDIR}/ngx_slowfs_ .endif .if ${PORT_OPTIONS:MSRCACHE} -NGINX_SRCACHE_VERSION= 0.19 -GIT_SRCACHE_VERSION= 0-gf957c0f +NGINX_SRCACHE_VERSION= 0.20 +GIT_SRCACHE_VERSION= 0-gfb4b659 FETCH_ARGS= -pRr MASTER_SITES+= https://github.com/agentzh/srcache-nginx-module/tarball/v${NGINX_SRCACHE_VERSION}/:srcache DISTFILES+= agentzh-srcache-nginx-module-v${NGINX_SRCACHE_VERSION}-${GIT_SRCACHE_VERSION}.tar.gz:srcache @@ -793,6 +781,12 @@ DISTFILES+= agentzh-xss-nginx-module-v${NGINX_XSS_ CONFIGURE_ARGS+=--add-module=${WRKDIR}/agentzh-xss-nginx-module-${GIT_XSS_VERSION:S/^0-g//} .endif +.if ${PORT_OPTIONS:MSPDY} +USE_OPENSSL_PORT= yes +USE_HTTP_SSL= yes +CONFIGURE_ARGS+=--with-http_spdy_module +.endif + .if ${PORT_OPTIONS:MWWW} PLIST_SUB+= WWWDATA="" .else @@ -846,8 +840,8 @@ CONFIGURE_ARGS+=--add-module=${WRKDIR}/calio-form- .if ${PORT_OPTIONS:MICONV} LIB_DEPENDS+= iconv:${PORTSDIR}/converters/libiconv -NGINX_ICONV_VERSION= 0.10rc7 -GIT_ICONV_VERSION= 0-gabdac17 +NGINX_ICONV_VERSION= 0.10 +GIT_ICONV_VERSION= 0-gb37efb5 FETCH_ARGS= -pRr MASTER_SITES+= https://github.com/calio/iconv-nginx-module/tarball/v${NGINX_ICONV_VERSION}/:iconv DISTFILES+= calio-iconv-nginx-module-v${NGINX_ICONV_VERSION}-${GIT_ICONV_VERSION}.tar.gz:iconv @@ -930,6 +924,16 @@ post-patch: 's!%%PREFIX%%!${LOCALBASE}!g' \ ${WRKDIR}/nginx-sflow-module-${NGINX_SFLOW_VERSION}/ngx_http_sflow_config.h .endif +.if ${PORT_OPTIONS:MSPDY} +.if ${PORT_OPTIONS:MDRIZZLE} + @${REINPLACE_CMD} '584d' \ + ${WRKDIR}/chaoslawful-drizzle-nginx-module-${GIT_DRIZZLE_VERSION:S/^0-g//}/src/ngx_http_drizzle_util.c +.endif +.if ${PORT_OPTIONS:MLUA} + @${REINPLACE_CMD} '437d' \ + ${WRKDIR}/chaoslawful-lua-nginx-module-${GIT_LUA_VERSION:S/^0-g//}/src/ngx_http_lua_socket_tcp.c +.endif +.endif .if ${PORT_OPTIONS:MSUPERVISORD} ( cd ${WRKDIR}/nginx_upstream_fair-${NGINX_UPSTREAM_FAIR_VERSION} && \ ${PATCH} -p0 < \ Index: www/nginx/distinfo =================================================================== --- www/nginx/distinfo (revision 317056) +++ www/nginx/distinfo (working copy) @@ -1,5 +1,5 @@ -SHA256 (nginx-1.2.8.tar.gz) = d2947c98c5bed311b1e6c04e35a730af92e40e2e6bfe9201fa7f404987457137 -SIZE (nginx-1.2.8.tar.gz) = 730589 +SHA256 (nginx-1.4.0.tar.gz) = 84aeb7a131fccff036dc80283dd98c989d2844eb84359cfe7c4863475de923a9 +SIZE (nginx-1.4.0.tar.gz) = 773451 SHA256 (giom-nginx_accept_language_module-02262ce.tar.gz) = 3191f4caa70d9a8942c4f10b6abaaa96af451991d4b5e1e3d7b991376b00bf0c SIZE (giom-nginx_accept_language_module-02262ce.tar.gz) = 3398 SHA256 (nginx-accesskey-2.0.3.tar.gz) = d9e94321e78a02de16c57f3e048fd31059fd8116ed03d6de7180f435c52502b1 @@ -16,18 +16,16 @@ SHA256 (ngx_cache_purge-2.1.tar.gz) = 424005af0c04 SIZE (ngx_cache_purge-2.1.tar.gz) = 10535 SHA256 (ngx_ctpp2-0.5.tar.gz) = f8adfecc23e2c23af95df8549ef92fd52598b21506a9d9df2278b2605668d5a6 SIZE (ngx_ctpp2-0.5.tar.gz) = 19686 -SHA256 (agentzh-echo-nginx-module-v0.42-0-gfb90d17.tar.gz) = 6d6e483ea51eaf51a3ec02fbfc45d356972e202d5dca71eb3b74af0129393759 -SIZE (agentzh-echo-nginx-module-v0.42-0-gfb90d17.tar.gz) = 73764 -SHA256 (agentzh-headers-more-nginx-module-v0.19-0-g27bcbd2.tar.gz) = 7e45d5cbe4ed6865b3bce4fcb6c05f13a52a315702335bcedf68691ad41d8294 -SIZE (agentzh-headers-more-nginx-module-v0.19-0-g27bcbd2.tar.gz) = 23966 +SHA256 (agentzh-echo-nginx-module-v0.45-0-g6ce0801.tar.gz) = 07e93863492a9177d32b220375e21a326c754ea03814faa57487f3d677b6fa94 +SIZE (agentzh-echo-nginx-module-v0.45-0-g6ce0801.tar.gz) = 73588 +SHA256 (agentzh-headers-more-nginx-module-v0.20-0-g0df17d0.tar.gz) = cb7e90247ebd2cffcde63cbbdd2c893b9fde2a941a7993d9d30e16fad0eaf17d +SIZE (agentzh-headers-more-nginx-module-v0.20-0-g0df17d0.tar.gz) = 26754 SHA256 (arut-nginx-dav-ext-module-v0.0.2-0-g0e07a3e.tar.gz) = a0d6fa256e354ce48c06e1f689d26ebb2f7b75f71ce682e34ae6c29331a7fbff SIZE (arut-nginx-dav-ext-module-v0.0.2-0-g0e07a3e.tar.gz) = 6065 SHA256 (vkholodkov-nginx-eval-module-1.0.3-0-g125fa2e.tar.gz) = 945046c42d973be9293e03ab41e3a0e04677524b2cd813cfc5146cf1d2f0ab8f SIZE (vkholodkov-nginx-eval-module-1.0.3-0-g125fa2e.tar.gz) = 5727 SHA256 (ngx-fancyindex-0.3.1.tar.gz) = 877e383c6bc06be92abb88f5ac251a165b63feb5f4828d52a554efc19a3f7c7d SIZE (ngx-fancyindex-0.3.1.tar.gz) = 13071 -SHA256 (ngx_http_gunzip_filter_module-0.4.tar.gz) = d2bcef58612d1f66f92c7160fc05695b540ffdee45936b1e86a0d4981e09114a -SIZE (ngx_http_gunzip_filter_module-0.4.tar.gz) = 7432 SHA256 (nginx_mogilefs_module-1.0.4.tar.gz) = 7ac230d30907f013dff8d435a118619ea6168aa3714dba62c6962d350c6295ae SIZE (nginx_mogilefs_module-1.0.4.tar.gz) = 11208 SHA256 (nginx_mod_h264_streaming-2.2.7.tar.gz) = 6d974ba630cef59de1f60996c66b401264a345d25988a76037c2856cec756c19 @@ -36,8 +34,8 @@ SHA256 (kr-nginx-notice-0-g3c95966.tar.gz) = bb0b8 SIZE (kr-nginx-notice-0-g3c95966.tar.gz) = 3348 SHA256 (nginx_http_push_module-0.692.tar.gz) = 64868708071aa21dbc4c7a07d149dd6ec9108fb7eaf2aad5ad069406151f17fe SIZE (nginx_http_push_module-0.692.tar.gz) = 29119 -SHA256 (wandenberg-nginx-push-stream-module-0.3.4-0-g28d9df7.tar.gz) = 2edd95d0e03292cfd9f294ea788c563e4b06fbe8db67eec20307dd0c4577361b -SIZE (wandenberg-nginx-push-stream-module-0.3.4-0-g28d9df7.tar.gz) = 154415 +SHA256 (wandenberg-nginx-push-stream-module-0.3.5-0-gb6a8c46.tar.gz) = f2c5b2cc3430f023442381b734a1e547dd2ba75a05cd34f2cdcf2431acc4f77e +SIZE (wandenberg-nginx-push-stream-module-0.3.5-0-gb6a8c46.tar.gz) = 153187 SHA256 (ngx_http_redis-0.3.6.tar.gz) = 9e5d8c0f1317a6910710c94d27f9aca4968c48ee1de271e5034525a1e9b6c70e SIZE (ngx_http_redis-0.3.6.tar.gz) = 12099 SHA256 (ngx_http_response-0.3.tar.gz) = 0835584029f053051c624adbe33a826ab0205c9d85a02af6019e6b57607e9045 @@ -52,26 +50,24 @@ SHA256 (nginx_upstream_fair-20090923.tar.gz) = ec9 SIZE (nginx_upstream_fair-20090923.tar.gz) = 10024 SHA256 (Nginx_upstream_hash-0.3.1.tar.gz) = 51929c5352d4c2608b3f852987830be08b6946baf20da346fe520d9b12e39968 SIZE (Nginx_upstream_hash-0.3.1.tar.gz) = 5049 -SHA256 (nginx-sticky-module-1.0.tar.gz) = 415beaac0dd229c271128b461f6059601f4889714b548b20a4720fc5f0a86b60 -SIZE (nginx-sticky-module-1.0.tar.gz) = 114184 +SHA256 (nginx-sticky-module-1.1.tar.gz) = 6c18334d29d055bf9f21d59f9e9fb093e4dad017577f54b37c9358d315b05587 +SIZE (nginx-sticky-module-1.1.tar.gz) = 115412 SHA256 (mod_zip-1.1.6.tar.gz) = d30546b4be8308c721df0240ebc38c474c6b577381a110321eded6dbed5104b1 SIZE (mod_zip-1.1.6.tar.gz) = 21991 -SHA256 (agentzh-chunkin-nginx-module-v0.23-0-g81c04f6.tar.gz) = c703994a46cff5e79892fc8370f375fa4fe7f8f39132779605b0ceea0d1031fa -SIZE (agentzh-chunkin-nginx-module-v0.23-0-g81c04f6.tar.gz) = 39052 -SHA256 (chaoslawful-drizzle-nginx-module-v0.1.4-0-g59e12ad.tar.gz) = c9b476acce35bdf904b2276cf6a365f68d66994824d5df874615629a46809d1a -SIZE (chaoslawful-drizzle-nginx-module-v0.1.4-0-g59e12ad.tar.gz) = 61064 +SHA256 (chaoslawful-drizzle-nginx-module-v0.1.5-0-g943c915.tar.gz) = 271e53a200004ea73fcd97a2dc62d17a7c0afdd9708542d39418d7ee0eef3d56 +SIZE (chaoslawful-drizzle-nginx-module-v0.1.5-0-g943c915.tar.gz) = 61201 SHA256 (simpl-ngx_devel_kit-v0.2.18-0-g48bc5dd.tar.gz) = bfd737ee5608c1ec2e59409c47cb29e390aeb882b8c0bf00d7322e74585cebae SIZE (simpl-ngx_devel_kit-v0.2.18-0-g48bc5dd.tar.gz) = 64972 -SHA256 (agentzh-encrypted-session-nginx-module-v0.02-0-gc752861.tar.gz) = 9689fbef49b6c3b4c4fc67b21fe1aa60880a374af988e93b36b8cf5335109cd9 -SIZE (agentzh-encrypted-session-nginx-module-v0.02-0-gc752861.tar.gz) = 8763 +SHA256 (agentzh-encrypted-session-nginx-module-v0.03-0-g49d741b.tar.gz) = 4485214756dc935a959efd3a2fcd750263df1719956a4ac73f96b0cee0763395 +SIZE (agentzh-encrypted-session-nginx-module-v0.03-0-g49d741b.tar.gz) = 8947 SHA256 (mdirolf-nginx-gridfs-v0.8-0-gb5f8113.tar.gz) = f55617873c9b123d610d59e4da52703c07be0bae5c719ef0cc3d45a53480d29c SIZE (mdirolf-nginx-gridfs-v0.8-0-gb5f8113.tar.gz) = 18882 SHA256 (mongodb-mongo-c-driver-v0.3.1-0-g9b4b232.tar.gz) = bfcdd60c6b53bd499e2bf22fefc96848de37e7d57dfaf7303bb00376dcb812f0 SIZE (mongodb-mongo-c-driver-v0.3.1-0-g9b4b232.tar.gz) = 53033 SHA256 (arut-nginx-let-module-v0.0.4-0-ga5e1dc5.tar.gz) = 9253581f11966329f64b4b4a49a2a60798665812f9007222592586e64bcd66da SIZE (arut-nginx-let-module-v0.0.4-0-ga5e1dc5.tar.gz) = 20543 -SHA256 (chaoslawful-lua-nginx-module-v0.7.15-0-g57a6471.tar.gz) = 0450b451239c92908a9f9aa39af34a045482a0870decca04775c5df6615d00d5 -SIZE (chaoslawful-lua-nginx-module-v0.7.15-0-g57a6471.tar.gz) = 446741 +SHA256 (chaoslawful-lua-nginx-module-v0.8.1-0-gc558c43.tar.gz) = 9df3a46f367ecd95237de846683dc5ab9ac6f6f90b8b8356328fd6ce68c9239c +SIZE (chaoslawful-lua-nginx-module-v0.8.1-0-gc558c43.tar.gz) = 479101 SHA256 (agentzh-memc-nginx-module-v0.13rc3-0-g4007350.tar.gz) = 8c6f7a421346be1f53240b370cd29edd833f8ca32f6f9b926d66230b15727f0c SIZE (agentzh-memc-nginx-module-v0.13rc3-0-g4007350.tar.gz) = 39778 SHA256 (naxsi-core-0.50.tgz) = 7cece5f9d9c5df9e09af1e1023bc8e04bbbbe953e67461b893b8240e82ca52ef @@ -84,18 +80,18 @@ SHA256 (agentzh-rds-csv-nginx-module-v0.05rc2-0-gc SIZE (agentzh-rds-csv-nginx-module-v0.05rc2-0-gc15d3a4.tar.gz) = 17993 SHA256 (agentzh-rds-json-nginx-module-v0.12rc10-0-g74c21b3.tar.gz) = 903b4c88b43b47ca80b45556d702b760707ceecc3decc923340f3b3b69b7f1fe SIZE (agentzh-rds-json-nginx-module-v0.12rc10-0-g74c21b3.tar.gz) = 32794 -SHA256 (agentzh-redis2-nginx-module-v0.09-0-g279beee.tar.gz) = 3e4312d3b2b271e315c8af268ff6595578b526cd1f5d11631aaa336873cf35b3 -SIZE (agentzh-redis2-nginx-module-v0.09-0-g279beee.tar.gz) = 29443 -SHA256 (arut-rtmp-nginx-module-v0.9.13-0-gb631008.tar.gz) = a215e061ee8757a1710e621a0e47896624ef8619c2f9e5e5f9b3cff7083b6d32 -SIZE (arut-rtmp-nginx-module-v0.9.13-0-gb631008.tar.gz) = 427719 +SHA256 (agentzh-redis2-nginx-module-v0.10-0-g78a7622.tar.gz) = c2a164df07759d2a45beacc1f72316be84e9348b7ae5509723eabd2d61cb4897 +SIZE (agentzh-redis2-nginx-module-v0.10-0-g78a7622.tar.gz) = 29850 +SHA256 (arut-rtmp-nginx-module-v0.9.18-0-gbce7ea3.tar.gz) = 97e41d3fd2862c6f8e16331552531242c871c6e3981ee3d6b884119654a940ac +SIZE (arut-rtmp-nginx-module-v0.9.18-0-gbce7ea3.tar.gz) = 443799 SHA256 (agentzh-set-misc-nginx-module-v0.22rc8-0-g658c235.tar.gz) = 7ade6dc6d18b5ab3c2e21a4a1139359e351525ac03f34e2508e5704f157024bd SIZE (agentzh-set-misc-nginx-module-v0.22rc8-0-g658c235.tar.gz) = 37053 SHA256 (nginx-sflow-module-0.9.6.tar.gz) = 5e80d1f8e5ba0963445d8245e09de0cf289936ae9feecb11c5e3a77d021f1ad0 SIZE (nginx-sflow-module-0.9.6.tar.gz) = 27758 SHA256 (ngx_slowfs_cache-1.10.tar.gz) = 1e81453942e5b0877de1f1f06c56ae82918ea9818255cb935bcb673c95a758a1 SIZE (ngx_slowfs_cache-1.10.tar.gz) = 11809 -SHA256 (agentzh-srcache-nginx-module-v0.19-0-gf957c0f.tar.gz) = 0207f9c471afbb21e2c03512bc3c767f1fc277fe88bc0ddc9fbac6b6f4dac63b -SIZE (agentzh-srcache-nginx-module-v0.19-0-gf957c0f.tar.gz) = 61998 +SHA256 (agentzh-srcache-nginx-module-v0.20-0-gfb4b659.tar.gz) = 082d3bc5811cd6cfc706083b4dcc5189466925537fd47037524cc1e33849f1dc +SIZE (agentzh-srcache-nginx-module-v0.20-0-gfb4b659.tar.gz) = 63236 SHA256 (ngx_supervisord-1.4.tar.gz) = 0954a4efb1b955692acf523e169221146d6aa93ad1643c9f2482f75a1fbf9e3b SIZE (ngx_supervisord-1.4.tar.gz) = 19351 SHA256 (yaoweibin-nginx_tcp_proxy_module-v0.26-0-gb83e5a6.tar.gz) = 4d843b8d0511b269382938ba5546f902ec24dbfa76c12f6bd6961d7aaaf3866a @@ -110,5 +106,5 @@ SHA256 (agentzh-array-var-nginx-module-v0.03rc1-0- SIZE (agentzh-array-var-nginx-module-v0.03rc1-0-gfed751a.tar.gz) = 9500 SHA256 (calio-form-input-nginx-module-v0.07-0-g78de845.tar.gz) = d5b2c42a3b9fd2970107eb74c2226cbbfbad48c89807303db903932d21ff76aa SIZE (calio-form-input-nginx-module-v0.07-0-g78de845.tar.gz) = 10580 -SHA256 (calio-iconv-nginx-module-v0.10rc7-0-gabdac17.tar.gz) = bc35d461efccb29b7affda5a397d86d89f5c860fcd9d300ac2d6d7f7667c22b1 -SIZE (calio-iconv-nginx-module-v0.10rc7-0-gabdac17.tar.gz) = 12060 +SHA256 (calio-iconv-nginx-module-v0.10-0-gb37efb5.tar.gz) = e90a406a14d5f419bd500e19082da81390e8ba6040926857926f1a899a53379d +SIZE (calio-iconv-nginx-module-v0.10-0-gb37efb5.tar.gz) = 12510 Index: www/nginx/files/extra-patch-calio-iconv-nginx-module-config =================================================================== --- www/nginx/files/extra-patch-calio-iconv-nginx-module-config (revision 317056) +++ www/nginx/files/extra-patch-calio-iconv-nginx-module-config (working copy) @@ -1,5 +1,5 @@ ---- ../calio-iconv-nginx-module-abdac17/config.orig 2012-01-12 12:01:07.000000000 +0400 -+++ ../calio-iconv-nginx-module-abdac17/config 2011-10-11 03:30:35.000000000 +0400 +--- ../calio-iconv-nginx-module-b37efb5/config.orig 2013-04-16 17:57:17.000000000 -0700 ++++ ../calio-iconv-nginx-module-b37efb5/config 2013-05-01 17:16:28.134624745 -0700 @@ -39,12 +39,12 @@ fi Index: www/nginx/files/extra-patch-chaoslawful-drizzle-nginx-module-config =================================================================== --- www/nginx/files/extra-patch-chaoslawful-drizzle-nginx-module-config (revision 317056) +++ www/nginx/files/extra-patch-chaoslawful-drizzle-nginx-module-config (working copy) @@ -1,5 +1,5 @@ ---- ../chaoslawful-drizzle-nginx-module-59e12ad/config.orig 2011-12-30 10:26:53.000000000 +0400 -+++ ../chaoslawful-drizzle-nginx-module-59e12ad/config 2011-12-30 10:28:20.000000000 +0400 +--- ../chaoslawful-drizzle-nginx-module-943c915/config.orig 2013-03-27 12:47:35.000000000 -0700 ++++ ../chaoslawful-drizzle-nginx-module-943c915/config 2013-05-01 17:12:18.404628060 -0700 @@ -22,12 +22,12 @@ if [ $ngx_found = no ]; then Index: www/nginx/files/extra-patch-ngx_http_upload_module.c =================================================================== --- www/nginx/files/extra-patch-ngx_http_upload_module.c (revision 0) +++ www/nginx/files/extra-patch-ngx_http_upload_module.c (working copy) @@ -0,0 +1,604 @@ +--- ../nginx_upload_module-2.2.0/ngx_http_upload_module.c.orig 2010-09-27 20:54:15.000000000 +0200 ++++ ../nginx_upload_module-2.2.0/ngx_http_upload_module.c 2013-02-21 22:32:08.000000000 +0100 +@@ -233,6 +233,17 @@ + unsigned int raw_input:1; + } ngx_http_upload_ctx_t; + ++static void ngx_http_read_client_request_body_handler(ngx_http_request_t *r); ++static ngx_int_t ngx_http_do_read_client_request_body(ngx_http_request_t *r); ++ ++static ngx_int_t ngx_http_write_request_body(ngx_http_request_t *r); ++static ngx_int_t ngx_http_request_body_filter(ngx_http_request_t *r, ngx_chain_t *in); ++ ++static ngx_int_t ngx_http_request_body_length_filter(ngx_http_request_t *r, ngx_chain_t *in); ++static ngx_int_t ngx_http_request_body_chunked_filter(ngx_http_request_t *r, ngx_chain_t *in); ++ ++static ngx_int_t ngx_http_request_body_save_filter(ngx_http_request_t *r, ngx_chain_t *in); ++ + static ngx_int_t ngx_http_upload_handler(ngx_http_request_t *r); + static ngx_int_t ngx_http_upload_body_handler(ngx_http_request_t *r); + +@@ -2523,6 +2534,534 @@ + return NGX_CONF_OK; + } /* }}} */ + ++static ngx_int_t ++ngx_http_write_request_body(ngx_http_request_t *r) ++{ ++ ssize_t n; ++ ngx_chain_t *cl; ++ ngx_temp_file_t *tf; ++ ngx_http_request_body_t *rb; ++ ngx_http_core_loc_conf_t *clcf; ++ ++ rb = r->request_body; ++ ++ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, ++ "http write client request body, bufs %p", rb->bufs); ++ ++ if (rb->temp_file == NULL) { ++ tf = ngx_pcalloc(r->pool, sizeof(ngx_temp_file_t)); ++ if (tf == NULL) { ++ return NGX_ERROR; ++ } ++ ++ clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); ++ ++ tf->file.fd = NGX_INVALID_FILE; ++ tf->file.log = r->connection->log; ++ tf->path = clcf->client_body_temp_path; ++ tf->pool = r->pool; ++ tf->warn = "a client request body is buffered to a temporary file"; ++ tf->log_level = r->request_body_file_log_level; ++ tf->persistent = r->request_body_in_persistent_file; ++ tf->clean = r->request_body_in_clean_file; ++ ++ if (r->request_body_file_group_access) { ++ tf->access = 0660; ++ } ++ ++ rb->temp_file = tf; ++ ++ if (rb->bufs == NULL) { ++ /* empty body with r->request_body_in_file_only */ ++ ++ if (ngx_create_temp_file(&tf->file, tf->path, tf->pool, ++ tf->persistent, tf->clean, tf->access) ++ != NGX_OK) ++ { ++ return NGX_ERROR; ++ } ++ ++ return NGX_OK; ++ } ++ } ++ ++ if (rb->bufs == NULL) { ++ return NGX_OK; ++ } ++ ++ n = ngx_write_chain_to_temp_file(rb->temp_file, rb->bufs); ++ ++ /* TODO: n == 0 or not complete and level event */ ++ ++ if (n == NGX_ERROR) { ++ return NGX_ERROR; ++ } ++ ++ rb->temp_file->offset += n; ++ ++ /* mark all buffers as written */ ++ ++ for (cl = rb->bufs; cl; cl = cl->next) { ++ cl->buf->pos = cl->buf->last; ++ } ++ ++ rb->bufs = NULL; ++ ++ return NGX_OK; ++} ++ ++static ngx_int_t ++ngx_http_request_body_filter(ngx_http_request_t *r, ngx_chain_t *in) ++{ ++ if (r->headers_in.chunked) { ++ return ngx_http_request_body_chunked_filter(r, in); ++ ++ } else { ++ return ngx_http_request_body_length_filter(r, in); ++ } ++} ++ ++static ngx_int_t ++ngx_http_request_body_save_filter(ngx_http_request_t *r, ngx_chain_t *in) ++{ ++#if (NGX_DEBUG) ++ ngx_chain_t *cl; ++#endif ++ ngx_http_request_body_t *rb; ++ ++ rb = r->request_body; ++ ++#if (NGX_DEBUG) ++ ++ for (cl = rb->bufs; cl; cl = cl->next) { ++ ngx_log_debug7(NGX_LOG_DEBUG_EVENT, r->connection->log, 0, ++ "http body old buf t:%d f:%d %p, pos %p, size: %z " ++ "file: %O, size: %z", ++ cl->buf->temporary, cl->buf->in_file, ++ cl->buf->start, cl->buf->pos, ++ cl->buf->last - cl->buf->pos, ++ cl->buf->file_pos, ++ cl->buf->file_last - cl->buf->file_pos); ++ } ++ ++ for (cl = in; cl; cl = cl->next) { ++ ngx_log_debug7(NGX_LOG_DEBUG_EVENT, r->connection->log, 0, ++ "http body new buf t:%d f:%d %p, pos %p, size: %z " ++ "file: %O, size: %z", ++ cl->buf->temporary, cl->buf->in_file, ++ cl->buf->start, cl->buf->pos, ++ cl->buf->last - cl->buf->pos, ++ cl->buf->file_pos, ++ cl->buf->file_last - cl->buf->file_pos); ++ } ++ ++#endif ++ ++ /* TODO: coalesce neighbouring buffers */ ++ ++ if (ngx_chain_add_copy(r->pool, &rb->bufs, in) != NGX_OK) { ++ return NGX_HTTP_INTERNAL_SERVER_ERROR; ++ } ++ ++ return NGX_OK; ++} ++ ++ ++static ngx_int_t ++ngx_http_request_body_length_filter(ngx_http_request_t *r, ngx_chain_t *in) ++{ ++ size_t size; ++ ngx_int_t rc; ++ ngx_buf_t *b; ++ ngx_chain_t *cl, *tl, *out, **ll; ++ ngx_http_request_body_t *rb; ++ ++ rb = r->request_body; ++ ++ if (rb->rest == -1) { ++ ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, ++ "http request body content length filter"); ++ ++ rb->rest = r->headers_in.content_length_n; ++ } ++ ++ out = NULL; ++ ll = &out; ++ ++ for (cl = in; cl; cl = cl->next) { ++ ++ tl = ngx_chain_get_free_buf(r->pool, &rb->free); ++ if (tl == NULL) { ++ return NGX_HTTP_INTERNAL_SERVER_ERROR; ++ } ++ ++ b = tl->buf; ++ ++ ngx_memzero(b, sizeof(ngx_buf_t)); ++ ++ b->temporary = 1; ++ b->tag = (ngx_buf_tag_t) &ngx_http_read_client_request_body; ++ b->start = cl->buf->start; ++ b->pos = cl->buf->pos; ++ b->last = cl->buf->last; ++ b->end = cl->buf->end; ++ ++ size = cl->buf->last - cl->buf->pos; ++ ++ if ((off_t) size < rb->rest) { ++ cl->buf->pos = cl->buf->last; ++ rb->rest -= size; ++ ++ } else { ++ cl->buf->pos += rb->rest; ++ rb->rest = 0; ++ b->last = cl->buf->pos; ++ b->last_buf = 1; ++ } ++ ++ *ll = tl; ++ ll = &tl->next; ++ } ++ ++ rc = ngx_http_request_body_save_filter(r, out); ++ ++ ngx_chain_update_chains(r->pool, &rb->free, &rb->busy, &out, ++ (ngx_buf_tag_t) &ngx_http_read_client_request_body); ++ ++ return rc; ++} ++ ++static ngx_int_t ++ngx_http_request_body_chunked_filter(ngx_http_request_t *r, ngx_chain_t *in) ++{ ++ size_t size; ++ ngx_int_t rc; ++ ngx_buf_t *b; ++ ngx_chain_t *cl, *out, *tl, **ll; ++ ngx_http_request_body_t *rb; ++ ngx_http_core_loc_conf_t *clcf; ++ ++ rb = r->request_body; ++ ++ if (rb->rest == -1) { ++ ++ ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, ++ "http request body chunked filter"); ++ ++ rb->chunked = ngx_pcalloc(r->pool, sizeof(ngx_http_chunked_t)); ++ if (rb->chunked == NULL) { ++ return NGX_HTTP_INTERNAL_SERVER_ERROR; ++ } ++ ++ r->headers_in.content_length_n = 0; ++ rb->rest = 3; ++ } ++ ++ out = NULL; ++ ll = &out; ++ ++ for (cl = in; cl; cl = cl->next) { ++ ++ for ( ;; ) { ++ ++ ngx_log_debug7(NGX_LOG_DEBUG_EVENT, r->connection->log, 0, ++ "http body chunked buf " ++ "t:%d f:%d %p, pos %p, size: %z file: %O, size: %z", ++ cl->buf->temporary, cl->buf->in_file, ++ cl->buf->start, cl->buf->pos, ++ cl->buf->last - cl->buf->pos, ++ cl->buf->file_pos, ++ cl->buf->file_last - cl->buf->file_pos); ++ ++ rc = ngx_http_parse_chunked(r, cl->buf, rb->chunked); ++ ++ if (rc == NGX_OK) { ++ ++ /* a chunk has been parsed successfully */ ++ ++ clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); ++ ++ if (clcf->client_max_body_size ++ && clcf->client_max_body_size ++ < r->headers_in.content_length_n + rb->chunked->size) ++ { ++ ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, ++ "client intended to send too large chunked " ++ "body: %O bytes", ++ r->headers_in.content_length_n ++ + rb->chunked->size); ++ ++ r->lingering_close = 1; ++ ++ return NGX_HTTP_REQUEST_ENTITY_TOO_LARGE; ++ } ++ ++ tl = ngx_chain_get_free_buf(r->pool, &rb->free); ++ if (tl == NULL) { ++ return NGX_HTTP_INTERNAL_SERVER_ERROR; ++ } ++ ++ b = tl->buf; ++ ++ ngx_memzero(b, sizeof(ngx_buf_t)); ++ ++ b->temporary = 1; ++ b->tag = (ngx_buf_tag_t) &ngx_http_read_client_request_body; ++ b->start = cl->buf->start; ++ b->pos = cl->buf->pos; ++ b->last = cl->buf->last; ++ b->end = cl->buf->end; ++ ++ *ll = tl; ++ ll = &tl->next; ++ ++ size = cl->buf->last - cl->buf->pos; ++ ++ if ((off_t) size > rb->chunked->size) { ++ cl->buf->pos += rb->chunked->size; ++ r->headers_in.content_length_n += rb->chunked->size; ++ rb->chunked->size = 0; ++ ++ } else { ++ rb->chunked->size -= size; ++ r->headers_in.content_length_n += size; ++ cl->buf->pos = cl->buf->last; ++ } ++ ++ b->last = cl->buf->pos; ++ ++ continue; ++ } ++ ++ if (rc == NGX_DONE) { ++ ++ /* a whole response has been parsed successfully */ ++ ++ rb->rest = 0; ++ ++ tl = ngx_chain_get_free_buf(r->pool, &rb->free); ++ if (tl == NULL) { ++ return NGX_HTTP_INTERNAL_SERVER_ERROR; ++ } ++ ++ b = tl->buf; ++ ++ ngx_memzero(b, sizeof(ngx_buf_t)); ++ ++ b->last_buf = 1; ++ ++ *ll = tl; ++ ll = &tl->next; ++ ++ break; ++ } ++ ++ if (rc == NGX_AGAIN) { ++ ++ /* set rb->rest, amount of data we want to see next time */ ++ ++ rb->rest = rb->chunked->length; ++ ++ break; ++ } ++ ++ /* invalid */ ++ ++ ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, ++ "client sent invalid chunked body"); ++ ++ return NGX_HTTP_BAD_REQUEST; ++ } ++ } ++ ++ rc = ngx_http_request_body_save_filter(r, out); ++ ++ ngx_chain_update_chains(r->pool, &rb->free, &rb->busy, &out, ++ (ngx_buf_tag_t) &ngx_http_read_client_request_body); ++ ++ return rc; ++} ++ ++static ngx_int_t ++ngx_http_do_read_client_request_body(ngx_http_request_t *r) ++{ ++ off_t rest; ++ size_t size; ++ ssize_t n; ++ ngx_int_t rc; ++ ngx_buf_t *b; ++ ngx_chain_t *cl, out; ++ ngx_connection_t *c; ++ ngx_http_request_body_t *rb; ++ ngx_http_core_loc_conf_t *clcf; ++ ++ c = r->connection; ++ rb = r->request_body; ++ ++ ngx_log_debug0(NGX_LOG_DEBUG_HTTP, c->log, 0, ++ "http read client request body"); ++ ++ for ( ;; ) { ++ for ( ;; ) { ++ if (rb->buf->last == rb->buf->end) { ++ ++ /* pass buffer to request body filter chain */ ++ ++ out.buf = rb->buf; ++ out.next = NULL; ++ ++ rc = ngx_http_request_body_filter(r, &out); ++ ++ if (rc != NGX_OK) { ++ return rc; ++ } ++ ++ /* write to file */ ++ ++ if (ngx_http_write_request_body(r) != NGX_OK) { ++ return NGX_HTTP_INTERNAL_SERVER_ERROR; ++ } ++ ++ /* update chains */ ++ ++ rc = ngx_http_request_body_filter(r, NULL); ++ ++ if (rc != NGX_OK) { ++ return rc; ++ } ++ ++ if (rb->busy != NULL) { ++ return NGX_HTTP_INTERNAL_SERVER_ERROR; ++ } ++ ++ rb->buf->pos = rb->buf->start; ++ rb->buf->last = rb->buf->start; ++ } ++ size = rb->buf->end - rb->buf->last; ++ rest = rb->rest - (rb->buf->last - rb->buf->pos); ++ ++ if ((off_t) size > rest) { ++ size = (size_t) rest; ++ } ++ ++ n = c->recv(c, rb->buf->last, size); ++ ++ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0, ++ "http client request body recv %z", n); ++ ++ if (n == NGX_AGAIN) { ++ break; ++ } ++ ++ if (n == 0) { ++ ngx_log_error(NGX_LOG_INFO, c->log, 0, ++ "client prematurely closed connection"); ++ } ++ ++ if (n == 0 || n == NGX_ERROR) { ++ c->error = 1; ++ return NGX_HTTP_BAD_REQUEST; ++ } ++ ++ rb->buf->last += n; ++ r->request_length += n; ++ ++ if (n == rest) { ++ /* pass buffer to request body filter chain */ ++ ++ out.buf = rb->buf; ++ out.next = NULL; ++ ++ rc = ngx_http_request_body_filter(r, &out); ++ ++ if (rc != NGX_OK) { ++ return rc; ++ } ++ } ++ ++ if (rb->rest == 0) { ++ break; ++ } ++ ++ if (rb->buf->last < rb->buf->end) { ++ break; ++ } ++ } ++ ++ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0, ++ "http client request body rest %O", rb->rest); ++ if (rb->rest == 0) { ++ break; ++ } ++ ++ if (!c->read->ready) { ++ clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); ++ ngx_add_timer(c->read, clcf->client_body_timeout); ++ ++ if (ngx_handle_read_event(c->read, 0) != NGX_OK) { ++ return NGX_HTTP_INTERNAL_SERVER_ERROR; ++ } ++ ++ return NGX_AGAIN; ++ } ++ } ++ ++ if (c->read->timer_set) { ++ ngx_del_timer(c->read); ++ } ++ ++ if (rb->temp_file || r->request_body_in_file_only) { ++ ++ /* save the last part */ ++ ++ if (ngx_http_write_request_body(r) != NGX_OK) { ++ return NGX_HTTP_INTERNAL_SERVER_ERROR; ++ } ++ ++ cl = ngx_chain_get_free_buf(r->pool, &rb->free); ++ if (cl == NULL) { ++ return NGX_HTTP_INTERNAL_SERVER_ERROR; ++ } ++ ++ b = cl->buf; ++ ++ ngx_memzero(b, sizeof(ngx_buf_t)); ++ ++ b->in_file = 1; ++ b->file_last = rb->temp_file->file.offset; ++ b->file = &rb->temp_file->file; ++ ++ rb->bufs = cl; ++ } ++ ++ r->read_event_handler = ngx_http_block_reading; ++ ++ rb->post_handler(r); ++ ++ return NGX_OK; ++} ++ ++ ++static void ++ngx_http_read_client_request_body_handler(ngx_http_request_t *r) ++{ ++ ngx_int_t rc; ++ ++ if (r->connection->read->timedout) { ++ r->connection->timedout = 1; ++ ngx_http_finalize_request(r, NGX_HTTP_REQUEST_TIME_OUT); ++ return; ++ } ++ ++ rc = ngx_http_do_read_client_request_body(r); ++ ++ if (rc >= NGX_HTTP_SPECIAL_RESPONSE) { ++ ngx_http_finalize_request(r, rc); ++ } ++} ++ ++ ++ + ngx_int_t /* {{{ ngx_http_read_upload_client_request_body */ + ngx_http_read_upload_client_request_body(ngx_http_request_t *r) { + ssize_t size, preread; +@@ -2625,9 +3164,9 @@ + + /* the whole request body may be placed in r->header_in */ + +- rb->to_write = rb->bufs; +- +- r->read_event_handler = ngx_http_read_upload_client_request_body_handler; ++ rb->buf = r->header_in; ++ r->read_event_handler = ngx_http_read_client_request_body_handler; ++ r->write_event_handler = ngx_http_request_empty_handler; + + return ngx_http_do_read_upload_client_request_body(r); + } +@@ -2684,7 +3223,7 @@ + + *next = cl; + +- rb->to_write = rb->bufs; ++ /* rb->to_write = rb->bufs; */ + + r->read_event_handler = ngx_http_read_upload_client_request_body_handler; + +@@ -2766,7 +3305,7 @@ + for ( ;; ) { + if (rb->buf->last == rb->buf->end) { + +- rc = ngx_http_process_request_body(r, rb->to_write); ++ rc = ngx_http_process_request_body(r, rb->bufs); + + switch(rc) { + case NGX_OK: +@@ -2782,7 +3321,7 @@ + return NGX_HTTP_INTERNAL_SERVER_ERROR; + } + +- rb->to_write = rb->bufs->next ? rb->bufs->next : rb->bufs; ++ /* rb->to_write = rb->bufs->next ? rb->bufs->next : rb->bufs; */ + rb->buf->last = rb->buf->start; + } + +@@ -2874,7 +3413,7 @@ + ngx_del_timer(c->read); + } + +- rc = ngx_http_process_request_body(r, rb->to_write); ++ rc = ngx_http_process_request_body(r, rb->bufs); + + switch(rc) { + case NGX_OK: Index: www/nginx/files/extra-patch-syslog_support =================================================================== --- www/nginx/files/extra-patch-syslog_support (revision 317056) +++ www/nginx/files/extra-patch-syslog_support (working copy) @@ -578,20 +578,20 @@ index aa6a3fc..deceb38 100644 if (cf->args->nelts >= 3) { name = value[2]; diff --git src/http/ngx_http_core_module.c src/http/ngx_http_core_module.c -index 61439a1..8e1a296 100644 +index c491499..4f039eb 100644 --- src/http/ngx_http_core_module.c +++ src/http/ngx_http_core_module.c -@@ -1451,6 +1451,9 @@ ngx_http_update_location_config(ngx_http_request_t *r) +@@ -1462,6 +1462,9 @@ ngx_http_update_location_config(ngx_http_request_t *r) if (r == r->main) { - r->connection->log->file = clcf->error_log->file; + ngx_http_set_connection_log(r->connection, clcf->error_log); +#if (NGX_ENABLE_SYSLOG) + r->connection->log->priority = clcf->error_log->priority; +#endif + } - if (!(r->connection->log->log_level & NGX_LOG_DEBUG_CONNECTION)) { - r->connection->log->log_level = clcf->error_log->log_level; -@@ -4764,6 +4767,15 @@ ngx_http_core_error_log(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) + if ((ngx_io.flags & NGX_IO_SENDFILE) && clcf->sendfile) { +@@ -4867,6 +4870,15 @@ ngx_http_core_error_log(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) ngx_str_t *value, name; @@ -607,7 +607,7 @@ diff --git src/http/ngx_http_core_module.c src/htt if (clcf->error_log) { return "is duplicate"; } -@@ -4773,6 +4785,36 @@ ngx_http_core_error_log(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) +@@ -4876,6 +4888,36 @@ ngx_http_core_error_log(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) if (ngx_strcmp(value[1].data, "stderr") == 0) { ngx_str_null(&name); @@ -644,7 +644,7 @@ diff --git src/http/ngx_http_core_module.c src/htt } else { name = value[1]; } -@@ -4782,6 +4824,17 @@ ngx_http_core_error_log(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) +@@ -4885,6 +4927,17 @@ ngx_http_core_error_log(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) return NGX_CONF_ERROR; } @@ -663,30 +663,39 @@ diff --git src/http/ngx_http_core_module.c src/htt clcf->error_log->log_level = NGX_LOG_ERR; return NGX_CONF_OK; diff --git src/http/ngx_http_request.c src/http/ngx_http_request.c -index ee00fd3..e15e157 100644 +index 54e1c26..2b05157 100644 --- src/http/ngx_http_request.c +++ src/http/ngx_http_request.c -@@ -433,6 +433,9 @@ ngx_http_init_request(ngx_event_t *rev) +@@ -424,6 +424,9 @@ ngx_http_init_request(ngx_event_t *rev) + clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); - clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); - c->log->file = clcf->error_log->file; + ngx_http_set_connection_log(r->connection, clcf->error_log); +#if (NGX_ENABLE_SYSLOG) + c->log->priority = clcf->error_log->priority; +#endif - if (!(c->log->log_level & NGX_LOG_DEBUG_CONNECTION)) { - c->log->log_level = clcf->error_log->log_level; - } -@@ -1834,6 +1837,9 @@ found: + if (c->buffer == NULL) { + c->buffer = ngx_create_temp_buf(c->pool, +@@ -694,6 +697,9 @@ ngx_http_ssl_servername(ngx_ssl_conn_t *ssl_conn, int *ad, void *arg) + clcf = ngx_http_get_module_loc_conf(hc->conf_ctx, ngx_http_core_module); + + ngx_http_set_connection_log(c, clcf->error_log); ++#if (NGX_ENABLE_SYSLOG) ++ c->log->priority = clcf->error_log->priority; ++#endif + + sscf = ngx_http_get_module_srv_conf(hc->conf_ctx, ngx_http_ssl_module); + +@@ -1891,6 +1897,9 @@ ngx_http_set_virtual_server(ngx_http_request_t *r, ngx_str_t *host) clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); - r->connection->log->file = clcf->error_log->file; + + ngx_http_set_connection_log(r->connection, clcf->error_log); +#if (NGX_ENABLE_SYSLOG) + r->connection->log->priority = clcf->error_log->priority; +#endif - if (!(r->connection->log->log_level & NGX_LOG_DEBUG_CONNECTION)) { - r->connection->log->log_level = clcf->error_log->log_level; - + return NGX_OK; + } --- auto/summary.orig 2010-07-08 19:57:36.000000000 +0400 +++ auto/summary 2010-12-08 12:25:16.000000000 +0300 @@ -73,6 +73,11 @@ @@ -717,9 +726,9 @@ diff --git src/http/ngx_http_request.c src/http/ng cat << END > $NGX_MAKEFILE ---- auto/options.orig 2011-12-15 21:25:00.000000000 +0400 -+++ auto/options 2011-12-15 21:28:01.000000000 +0400 -@@ -119,6 +119,8 @@ +--- auto/options.orig 2011-11-01 09:01:14.000000000 +0400 ++++ auto/options 2011-11-01 09:02:42.000000000 +0400 +@@ -120,6 +120,8 @@ MD5_OPT= MD5_ASM=NO @@ -728,23 +737,24 @@ diff --git src/http/ngx_http_request.c src/http/ng USE_SHA1=NO SHA1=NONE SHA1_OPT= -@@ -272,6 +274,9 @@ +@@ -274,6 +276,9 @@ --with-md5-opt=*) MD5_OPT="$value" ;; --with-md5-asm) MD5_ASM=YES ;; -+ --with-syslog) USE_SYSLOG="YES" ;; ++ --with-syslog) USE_SYSLOG=YES ;; + --with-syslog-facility=*) SYSLOG_FACILITY="$value" ;; + --with-sha1=*) SHA1="$value" ;; --with-sha1-opt=*) SHA1_OPT="$value" ;; --with-sha1-asm) SHA1_ASM=YES ;; -@@ -416,6 +421,9 @@ - --with-md5-opt=OPTIONS set additional build options for md5 +@@ -418,6 +423,9 @@ + --with-md5-opt=OPTIONS set additional options for md5 building --with-md5-asm use md5 assembler sources + --with-syslog use syslog instead of files to log messages + --with-syslog-facility=FACILITY set syslog facility + --with-sha1=DIR set path to sha1 library sources - --with-sha1-opt=OPTIONS set additional build options for sha1 + --with-sha1-opt=OPTIONS set additional options for sha1 building --with-sha1-asm use sha1 assembler sources + --- nginx-1.4.0.diff ends here --- >Release-Note: >Audit-Trail: >Unformatted: