diff options
author | André Malo <nd@apache.org> | 2005-07-19 11:57:30 +0000 |
---|---|---|
committer | André Malo <nd@apache.org> | 2005-07-19 11:57:30 +0000 |
commit | bab0071e4e0dc8a56e68c34b2b54cf77df024dac (patch) | |
tree | e75ecdb087eaaa9c8520903f746dd465ab832eb7 | |
parent | 9022af073a76c40c6b1b920e0e8d1a4797dfef4c (diff) | |
download | httpd-bab0071e4e0dc8a56e68c34b2b54cf77df024dac.tar.gz |
mod_version_for_2.0.x branch:
* Merge 191323 to 219658 from branches/2.0.x
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/mod_version_for_2.0.x@219659 13f79535-47bb-0310-9956-ffa450edef68
40 files changed, 675 insertions, 516 deletions
@@ -7,6 +7,19 @@ Changes with Apache 2.0.55 accompanying ap_version_t structure (minor MMN bump). [André Malo] + *) SECURITY: CAN-2005-2088 + core: If a request contains both Transfer-Encoding and Content-Length + headers, remove the Content-Length, mitigating some HTTP Request + Splitting/Spoofing attacks. [Paul Querna, Joe Orton] + + *) proxy HTTP: If a response contains both Transfer-Encoding and a + Content-Length, remove the Content-Length and don't reuse the + connection, mitigating some HTTP Response Splitting attacks. + [Jeff Trawick] + + *) Prevent hangs of child processes when writing to piped loggers at + the time of graceful restart. PR 26467. [Jeff Trawick] + *) SECURITY: CAN-2005-1268 (cve.mitre.org) mod_ssl: Fix off-by-one overflow whilst printing CRL information at "LogLevel debug" which could be triggered if configured @@ -2,7 +2,24 @@ APACHE 2.0 STATUS: -*-text-*- Last modified at [$Date$] The current version of this file can be found at: -http://svn.apache.org/repos/asf/httpd/httpd/branches/2.0.x/STATUS + + * http://svn.apache.org/repos/asf/httpd/httpd/branches/2.0.x/STATUS + +Documentation status is maintained seperately and can be found at: + + * docs/STATUS in this source tree, or + * http://svn.apache.org/repos/asf/httpd/httpd/branches/2.0.x/docs/STATUS + +Consult the following STATUS files for information on related projects: + + * http://svn.apache.org/repos/asf/apr/apr/branches/0.9.x/STATUS + * http://svn.apache.org/repos/asf/apr/apr-util/branches/0.9.x/STATUS + +Consult the trunk/ for all new development and documentation efforts: + + * http://svn.apache.org/repos/asf/httpd/httpd/trunk/STATUS + * http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/STATUS + Release history: @@ -58,11 +75,6 @@ Release history: 2.0a2 : released March 31, 2000 2.0a1 : released March 10, 2000 -Please consult the following STATUS files for information on related projects: - - * http://svn.apache.org/repos/asf/apr/apr/branches/0.9.x/STATUS - * http://svn.apache.org/repos/asf/apr/apr-util/branches/0.9.x/STATUS - * http://svn.apache.org/repos/asf/httpd/httpd/branches/2.0.x/docs/STATUS Contributors looking for a mission: @@ -78,6 +90,7 @@ Contributors looking for a mission: * Open bugs in the bug database. + CURRENT RELEASE NOTES: * Forward binary compatibility is expected of Apache 2.0.x releases, such @@ -88,11 +101,74 @@ CURRENT RELEASE NOTES: as well, if they apply. Logical progression is commit to trunk, get feedback and votes in STATUS, and then merge into branches/2.0.x. + RELEASE SHOWSTOPPERS: -PATCHES TO BACKPORT FROM TRUNK: - [ please place SVN revisions from trunk here, so it is easy to - identify exactly what the proposed changes are! ] + * Various fixes to T-E and C-L processing from trunk + + Refactor mod_proxy_http.c's Transfer-Encoding/Content-Length elections + since they didn't follow RFC 2616, in fact didn't seem to make much + sense at all. Patch to migrate request-body-handling from trunk/ based + on 2.1-dev request body handling behavior (although just a bit more + conservative on the side of C-L spooling)... + http://people.apache.org/~wrowe/httpd-2.0-proxy-request-3.patch + Revert r219061 to properly test this patch, as r219061 masks the + underlying bug (although it is a -good- patch in and of itself). + + +1: wrowe, jim + -1: jorton: this is a massive patch and extremely hard to review + for actual interesting content; it is mixed in with all sorts + of unrelated stuff. It needs to at least be split up or + the unrelated stuff removed. + + unrelated change: s/apr_strnatcasecmp/strcasecmp/ + unrelated change: s/b/bb/ on variable+parameter names a few times + unrelated change: whitespaces changes all over the shop + spurious change:? send_request_body() appears to have been inlined + unrelated change: Via header handling + + trawick noted on list: we elected C-L not for efficiency, but because + it's the most widely supported [paraphrasing] + wrowe notes: I agree - this new patch always chooses C-L for any + C-L body received. If the origin kicks out LENGTH_REQUIRED + for a T-E body it's always up to the client to react. + Note proxy-sendchunks can override this behavior. + roy Notes on list: we must always prefer C-L if it's going to fit + in our brigade. + wrowe good point; the revised patch prereads MAX_MEM_SPOOL and will + try reading that before choosing C-L or T-E. + wrowe adds; After testing, I've determined one brigade isn't enough, + so I've extended this to a loop up to MAX_MEM_SPOOL, we will + fetch up enough body to fill MAX_MEM_SPOOL and hopefully + hit the C-L code path most of the time. + + trawick We are counting bytes in stream_reqbody_cl but filters can + change the size? [p] + wrowe Yes - which is why the patch prefers spool_reqbody_cl unless + the filter stack is unchanged from proto_input_filters. The + protocol filters shouldn't be changing content size. And when + it happens, we have to barf or we have a split request. + The old behavior was worse; we would stream the request body + in additional cases without looking to see if the byte count + matched Content-Length. Easy opportunity for split requests. + + trawick What specifically was done for conformance to RFC 2616? [p] + wrowe Elect the appropriate body handling, and ensure that body + request contains the required *single* T-E or C-L header, + and there are far few code paths to stream_reqbody_cl which + was most likely to create split requests by reporting the + wrong C-L. + + trawick Please split philosophy from rfc violations from security + fixes in the CHANGES log? [p] + wrowe The others are all a bit to intertwined, the Watchfire report + spelled out that it's different behavior and RFC 2616 deviations + that cause the vulnerability, so I don't see how we can divide + the issues of correctly sending the body and choosing the + transport flavor. + + +PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ please append new backports at the end of this list not the top. ] *) ap_proxy_canonenc() is over-eager in handling '%' for reverse @@ -101,16 +177,7 @@ PATCHES TO BACKPORT FROM TRUNK: - if (isenc && ch == '%') { + if (isenc && (isenc != PROXYREQ_REVERSE) && ch == '%') { - +1: jim, pquerna - - *) Prevent hang writing to piped logger at graceful restart time. - PR: 26467 - http://svn.apache.org/viewcvs?rev=170281&view=rev - http://svn.apache.org/viewcvs.cgi?rev=171093&view=rev - +1: trawick, jorton - -0: pquerna: This adds a new public function. It should be either a - minor MMN bump, or be put under CORE_PRIVATE. - trawick: I resolved this via second commit above. Thanks! + +1: jim, pquerna, wrowe *) Fix fd leak in piped logging code, fix error handling, and remove dead errno handling. @@ -119,7 +186,7 @@ PATCHES TO BACKPORT FROM TRUNK: http://svn.apache.org/viewcvs?rev=170719&view=rev all-in-one patch incremental to the PR 26467 fix: http://people.apache.org/~jorton/ap_pipedlog2.diff - +1: jorton, trawick + +1: jorton, trawick, wrowe [yes, I will write a CHANGES entry too] *) several changes to improve logging of connection-oriented errors, including @@ -127,24 +194,10 @@ PATCHES TO BACKPORT FROM TRUNK: http://cvs.apache.org/viewcvs.cgi/httpd-2.0/server/core.c?r1=1.289&r2=1.291 http://cvs.apache.org/viewcvs.cgi/httpd-2.0/server/log.c?r1=1.150&r2=1.151 http://cvs.apache.org/viewcvs.cgi/httpd-2.0/include/http_log.h?r1=1.46&r2=1.48 - +1: trawick, stoddard - -0: wrowe; seems this (valid) improvement would encourage non-compatible mods. - - *) mod_headers: Support {...}s tag for SSL variable lookup. - http://www.apache.org/~jorton/mod_headers-2.0-ssl.diff - +1: jorton, trawick - nd: two comments: - (1) is the use of APR_ASCII_* ebcdic-safe? I.e. shouldn't we use the - native chars here and it will be converted later? (I'm not sure) - jorton: I have no idea, let an EBCDIC-er complain if it breaks? - trawick: seems that '\r' and '\n' are the better chars to check - for; this is not raw data read from the network (or directly - from SSL) but instead it is either protocol data that has - already been converted to the native charset or it is other - data which was created inside the server in the native charset - (2) I'd put out (null) only if val is NULL, not if it's empty. - jorton: ssl_var_lookup() returns "" in place of NULL, that was really - a deliberate choice... but maybe you're right. + +1: trawick, stoddard, wrowe + [wrowe notes that his previous objection is moot, based on security fixes + applied between .44 and .54 - but -please- doxygen the version of Apache + required in the API header note, for users who adopt this alternative.] *) mod_cgi: Added API call and overload of detached field in cgi_exec_info_t structure to support loading in current or new address @@ -163,6 +216,9 @@ PATCHES TO BACKPORT FROM TRUNK: the changes in the httpd-2.0.x to be done in order for NetWare to work as expected when calling apr_proc_create. Should I do both, APR and Http, at the same time? + wrowe: commit to APR. Use an APR version test *in httpd* to determine + if the old or new behavior should be used in httpd. In future versions + you could remove the test altogether. *) mod_actions: Regression from 1.3: the file referred to must exist. Solve this by introducing the "virtual" modifier to the Action @@ -174,17 +230,6 @@ PATCHES TO BACKPORT FROM TRUNK: nd: I'm going to reverse the default jerenkrantz, striker: I'm confused as to the status of this backport. - *) mod_log_config: Cleanup log_header_out function to allow multiple headers - like Set-Cookie to be logged properly. PR 27787 (2.0 + 1.3) - modules/loggers/mod_log_config.c: r1.116 - jerenkrantz asks: Isn't this what apr_table_merge is for? - nd replies: yep. But cookies won't be merged, because browsers don't - support it. - jerenkrantz: Couldn't we copy the table and merge the values somehow? - This just seems like a lot of code to duplicate what we - have already. *shrug* Regardless, patch looks okay... - +1: nd, jerenkrantz - * support/check_forensic: Fix tempfile usage svn rev 125495, 126224 jerenkrantz says: r126224 fixes brokenness with r125495 on Solaris. @@ -208,6 +253,46 @@ PATCHES TO BACKPORT FROM TRUNK: Votes from before the integration branch: +1: jerenkrantz, wrowe (trivial, would even be cool in 1.3) + +PATCHES PROPOSED TO BACKPORT FROM TRUNK: + [ please place SVN revisions from trunk here, so it is easy to + identify exactly what the proposed changes are! ] + + *) Correct RFC 2616 non-compliance by refusing to proxy a request body + in a TRACE request, unless TraceEnable extended is configured. + Introduces TraceEnable [on|off|extended] to give the administrator + full control of TRACE request handling. RFC 2616 does NOT require + TRACE (although to disable remains silly). Current patch at; + http://people.apache.org/~wrowe/httpd-2.0-trace.patch + +1 wrowe, jimjag + + *) mod_headers: Support {...}s tag for SSL variable lookup. + http://www.apache.org/~jorton/mod_headers-2.0-ssl.diff + +1: jorton, trawick + nd: two comments: + (1) is the use of APR_ASCII_* ebcdic-safe? I.e. shouldn't we use the + native chars here and it will be converted later? (I'm not sure) + jorton: I have no idea, let an EBCDIC-er complain if it breaks? + trawick: seems that '\r' and '\n' are the better chars to check + for; this is not raw data read from the network (or directly + from SSL) but instead it is either protocol data that has + already been converted to the native charset or it is other + data which was created inside the server in the native charset + (2) I'd put out (null) only if val is NULL, not if it's empty. + jorton: ssl_var_lookup() returns "" in place of NULL, that was really + a deliberate choice... but maybe you're right. + + *) mod_log_config: Cleanup log_header_out function to allow multiple headers + like Set-Cookie to be logged properly. PR 27787 (2.0 + 1.3) + modules/loggers/mod_log_config.c: r1.116 + jerenkrantz asks: Isn't this what apr_table_merge is for? + nd replies: yep. But cookies won't be merged, because browsers don't + support it. + jerenkrantz: Couldn't we copy the table and merge the values somehow? + This just seems like a lot of code to duplicate what we + have already. *shrug* Regardless, patch looks okay... + +1: nd, jerenkrantz + *) Provide TLS/SSL upgrade functionality in mod_ssl allowing an unsecure connection to be upgraded to a secure connection upon request by the client. The full patch file is available at http://www.apache.org/~bnicholes/ @@ -235,10 +320,6 @@ PATCHES TO BACKPORT FROM TRUNK: PR: 34452 +1: jorton - *) fix z/OS annoyance with pathname on debug messages in error log - http://svn.apache.org/viewcvs?rev=178299&view=rev - +1: trawick - *) EBCDIC: Handle chunked input from client or, with proxy, origin server. http://svn.apache.org/viewcvs?rev=178262&view=rev @@ -251,12 +332,6 @@ PATCHES TO BACKPORT FROM TRUNK: http://svn.apache.org/viewcvs?rev=170354&view=rev +1: trawick, jorton - *) Downgrade the log level of a worker MPM apr_proc_mutex_foo error - message when it occurs during restart (as we already do for a couple - of other calls). - http://svn.apache.org/viewcvs?rev=179317&view=rev - +1: trawick, jorton - *) proxy FTP: Fix confusion about globbing characters which could lead to getting a directory listing when a file was requested. PR 34512. 2.1 patch was http://svn.apache.org/viewcvs?rev=179704&view=rev @@ -278,6 +353,21 @@ PATCHES TO BACKPORT FROM TRUNK: PR: 35279 +1: jorton + *) mod_include: Fix possible variable corruption with nested + includes. + http://svn.apache.org/viewcvs?rev=179763&view=rev + 2.0.x patch: http://people.apache.org/~jorton/ap_pr12655.patch + PR: 12655 + +1: jorton + + *) mod_auth_digest: Fix hostinfo validation for CONNECT requests. + http://svn.apache.org/viewcvs.cgi?rev=193127&view=rev + +1: jorton + + *) Add httxt2dbm for creating RewriteMap DBM Files. + http://svn.apache.org/viewcvs.cgi?rev=209539&view=rev + +1: pquerna + PATCHES TO BACKPORT THAT ARE ON HOLD OR NOT GOING ANYWHERE SOON: *) Remove LDAP toolkit specific code from util_ldap and mod_auth_ldap. @@ -424,6 +514,7 @@ PATCHES TO BACKPORT THAT ARE ON HOLD OR NOT GOING ANYWHERE SOON: inspect headers will in fact work better because the headers will reflect reality. + CURRENT VOTES: * Reverse proxy cookie patch from PR#10722 (c.f. comment 16) @@ -491,6 +582,7 @@ CURRENT VOTES: -0: Lars, wrowe (let's make this defacto for the 2.2 release.), nd (for 2.0) + RELEASE NON-SHOWSTOPPERS BUT WOULD BE REAL NICE TO WRAP THESE UP: * There is a bug in how we sort some hooks, at least the pre-config @@ -743,49 +835,12 @@ RELEASE NON-SHOWSTOPPERS BUT WOULD BE REAL NICE TO WRAP THESE UP: Message-ID: <Pine.LNX.4.44.0203011354090.16457-200000@deepthought .cs.virginia.edu> -TODO ISSUES REMAINING IN MOD_SSL: - - * In order to use a DSO version of mod_ssl we have to link with - -lssl and -lcrypto. A workaround is in place right now where the - entire EXTRA_LIBS macro is being appended to the objects list, but - this is a hack. We should either revamp the APACHE_CHECK_SSL_TOOLKIT - autoconf function or come up with some other autoconf checks to - search for libssl and libcrypto and properly add them to mod_ssl's - link flags. - - * SSL renegotiations in combination with POST request - - * Port or dispose all code inside #if 0...#endif blocks that remain - from the porting effort. - - * Do we need SSL_set_read_ahead()? - - * the ssl_expr api is NOT THREAD SAFE. race conditions exist: - -in ssl_expr_comp() if SSLRequire is used in .htaccess - (ssl_expr_info is global) - -is ssl_expr_eval() if there is an error - (ssl_expr_error is global) - - * SSLRequire directive (parsing of) leaks memory - - * Diffie-Hellman-Parameters for temporary keys are hardcoded in - ssl_engine_dh.c, while the comment in ssl_engine_kernel.c says: - "it is suggested that keys be changed daily or every 500 - transactions, and more often if possible." - - * ssl_var_lookup could be rewritten to be MUCH faster - - * CRL callback should be pluggable - - * session cache store should be pluggable - - * init functions should return status code rather than ssl_die() - - * ssl_engine_pphrase.c needs to be reworked so it is generic enough - to also decrypt proxy keys + * ap_discard_request should be converted to use the bucket API + directly rather than waste cycles copying buffers with the old API. - * the shmcb code should just align its memory segment rather than - jumping through all the "safe" memcpy and memset hoops + * SIGSEGV on Linux (glibc 2.1.2) isn't caught properly by a + sigwaiting thread. We need to work around this, perhaps unless + there is hope soon for a fixed glibc. EXPERIMENTAL MODULES: @@ -795,383 +850,3 @@ EXPERIMENTAL MODULES: * Fix the shared memory cache -PRs that have been suspended forever waiting for someone to -put them into 'the next release': - - * documentation and Q&A - - PR#2221: Make online documentation search link back to my installation - Status: - - PR#2906: Propose that Apache recommend $UNIQUE_ID for all "session id" - algorithms - Status: - - PR#2793: When will Apache support P3P? Any Plans? - Status: - - * build - - PR#2113: HTTP Server Rebuild Line Needs Changing for the better - Status: - - PR#2421: problem specifying ndbm library for build ?with autoconfigure - Status: - - * config - - PR#76: missing call to "setlocale();" - Status: - - PR#628: Request of "Options SymLinksIfGroupMatch" - Status: - - PR#793: RLimitCPU and RLimitMEM don't apply to all children like they should - Status: - - PR#922: it is useful to allow specifiction that root-owned symlinks - should always be followed - Status: - - PR#1028: DoS attacks involving memory consumption - Status: - - PR#1191: setlogin() is not called, causing problems with e.g. identd - Status: - - PR#1204: regerror() exists, use it - Status: - - PR#2284: Can not POST to ErrorDocument - Apache/1.3b6 - Status: - - PR#2396: Proposal for TimeZone directive - Status: - - PR#2446: AllowOverride FileInfo is too coarse - Status: - - PR#2760: [PATCH] User/Group for <Directory> and <Location> i.e. not only - in global and <Virtual>. - Status: - - PR#2907: suggestion: power up your Include directive :) - Status: - - PR#3018: cannot limit some HTTP methods - Status: - - PR#3677: New ErrorDocumentMatch directive - Status: - - PR#4244: "Files" and "FilesMatch" regexp does not recognize bang as - negation operator - Status: - - PR#5993: AllowOverride should have a 'CheckNone' and 'AllowNone' argument - instead of only 'None' - Status: - - * mod_access - - PR#537: mod_access syntax allows hosts that should be restricted - Status: - - PR#1287: add allow,deny/deny,allow warning to mod_access - Status: - - PR#2512: <IfDenied> directive wanted - Status: - - * mod_auth-any - - PR#557: ~UserHome directories are not honored in absolute pathname - requests (.htaccess) - Status: - - PR#1117: Using NIS passwd.byname dbm files with AuthDBMUserFile - Status: - - PR#1809: Suggestion for improving authentication modules and core source - code, problem with 401 and ErrorDocument - Status: - - * mod_autoindex - - PR#1263: Add frame-safe anchor attribute to mod_autoindex links - Status: - - * mod_cgi (and suexec) - - PR#921: suexec Uses cwd before filling it in, doesn't use syslog - Status: - - PR#1176: Apache cannot handle continuation line in headers - Status: - - PR#1120: suexec does not parse arguments to #exec cmd - Status: - - PR#1268: CGI scripts running as Apache user: security (suexec etc.) - Status: - - PR#1285: Error messages could be easier to spot in cgi.log file for suexec.c - Status: - - PR#1905: suexec - Allow modules to set user:group for execution. - Status: - - PR#2360: suexec for general access of user content? - Status: - - PR#2460: TimeOut applies to output of CGI scripts - Status: - - PR#2573: CGI's for general use still have to be run as another user - with suExec - Status: - - PR#4241: Need to be able to override shebang line to make CGI scripts - more portable. - Status: - - PR#4490: mod_cgi prevents handling of OPTIONS requests - Status: - - * mod_env - - PR#370: Modified PATH environemnt variable is not passed, instead - system's is used - Status: - - * mod_headers - - PR#1383: I make mod_headers to modify request headers as well as - response ones. - Status: - - PR#1677: mod_headers should allow mod_log_config-style formats in - header values - Status: - - * mod_imap - - PR#759: imap should read <MAP><AREA>*</MAP> too! - Status: - - * mod_include - - PR#78: Additional status for XBitHack directive - Status: - - PR#623: A smarter "Last Modified" value for SSI documents (see PR number 600) - Status: - - PR#1145: mod_include - Allow for Last-Modified: without resorting to XBitHack - Status: - - PR#1803: patches to mod_include to allow for file tests - Status: - - PR#4459: Suggestion for better handling of Last-modified headers - Status: - - * mod_info - - PR#2415: /server-info doesn't check for the virtual host to list the info - Status: - - * mod_log-any - - PR#1050: Logging of virtual server to error_log as well - Status: - - PR#1358: Selective url-encode of log fields (or maybe a pseudo - log_rewrite module?) - Status: - - PR#2073: pipelined connections are not logged correctly - Status: - - PR#4448: Please allow CGI env variables (QUERY_STRING, ...) to be logged - with %{}e - Status: - - * mod_negotiation - - PR#3191: no way to set global quality-of-source (qs) coneg values - with multiviews - Status: - - * mod_proxy - - PR#362: Mod_proxy doesn't allow change of error pages - Status: - - PR#440: Proxy doesn't deliver documents if not connected - Status: - - PR#534: proxy converts ~name to %7Ename when name starts with a dot (.) - Status: - - PR#612: Proxy FTP Authentication Fails - Status: - - PR#700: Proxy doesn't do links right for OpenVMS files through ftp: - Status: - - PR#980: Controlling Access to Remote Proxies would be nice... - Status: - - PR#994: Adding authentication "on the fly" through the proxy module - Status: - - PR#1085: ProxyRemote make a dead cycle. - Status: - - PR#1166: ``nph-'' not honored (no buffering) for ProxyRemote mapping - Status: - - PR#1290: Need to know "hit-rate" on proxy cache - Status: - - PR#1532: Proxy transfer logging - Status: - - PR#1547: No HTTP_X_FORWARDED_FOR set... - Status: - - PR#1567: ProxyRemote proxy requests fail authentication by firewall - Status: - - PR#1702: mod_proxy to support persistent conns? - Status: - - PR#1878: listing of proxy cache content - Status: - - PR#2314: patterns in ProxyRemote - Status: - - PR#2648: Cache file names in Proxy module - Status: - - PR#3568: Accessing URL through proxy server corrupts data. - Status: - - PR#3605: Some anonymous FTP URLs ask for authentication - Status: - - * mod_rewrite - - PR#1582: mod_rewrite forms REQUEST_URI different than mod_cgi does - Status: - - PR#2074: mod_rewrite doesn't pass Proxy Throughput on internal subrequests - Status: - - * mod_status - - PR#2138: mod_status always displays 256 possible connection slots - Status: - - PR#2343: Status module averages are for entire uptime - Status: - - * apache-api - - PR#1004: request_config field in request_rec is moderately bogus - Status: - - PR#1158: improvements to child spawning API - Status: - - PR#1233: there is no way to keep per-connection per-module state - Status: - - PR#2024: adding auth_why to conn_rec - Status: - - PR#2873: Feedback/Comment on APACI - Status: - - PR#3143: No module specific data hook for per-connection data - Status: - - * generally odds and ends - - PR#2431: A small addition to rotatelogs.c to improve program functionality. - Status: - - PR#2763: mailto tags and bundling bug report script - Status: - - PR#2785: os-aix Support for System Resource Controller - Status: - - PR#2889: Inclusion of RPM spec file in CVS/distributions - Status: - - PR#5713: os-windows [PATCH] install as win32 service with domain account - Status: Cannot accept password-as-arg, we should prompt the - user when -k install/-k config with a user argument. - - - -Other bugs that need fixing: - - * ap_discard_request should be converted to use the bucket API - directly rather than waste cycles copying buffers with the old API. - - * MaxRequestsPerChild measures connections, not requests. - Until someone has a better way, we'll probably just rename it - "MaxConnectionsPerChild". - - * Regex containers don't work in an intutive way - Status: No one has come up with an efficient way to fix this - behavior. Dean has suggested getting rid of regex containers - completely. - OtherBill suggests: We at least seem to agree on eliminating - the <Container ~ foo> forms, and using only - <ContainerMatch foo> semantics. - - * SIGSEGV on Linux (glibc 2.1.2) isn't caught properly by a - sigwaiting thread. We need to work around this, perhaps unless - there is hope soon for a fixed glibc. - - * orig_ct in the byterange/multipart handling may not be - needed. Apache 1.3 just never stashed "multipart" into - r->content_type. We should probably follow suit since the - byterange stuff doesn't want the rest of the code to see the - multipart content-type; the other code should still think it is - dealing with the <orig_ct> stuff. - Status: Greg volunteers to investigate (esp. since he was most - likely the one to break it :-) - -Binaries (2.0.52): - - Platform Avail. Volunteer - ------------------------------------------------------------------ - AIX 4.3.3 no Bill Stoddard - Mandrake 8.1 no open - FreeBSD 4.1 no open - hppa2.0w-hp-hpux11.00 no Cliff Woolley - i386-pc-solaris2.9 no Aaron Bannert - i386-unknown-freebsd4.5 no - i386-unknown-freebsd4.6 no Cliff Woolley - i386-unknown-freebsd4.10 no Aaron Bannert - i686-pc-linux-gnu-slackware81 no Cliff Woolley - i686-pc-linux-gnu-rh70 no Aaron Bannert - i686-pc-linux-gnu-rh73 no Cliff Woolley - i686-pc-linux-gnu no Graham Leggett - ia64-hp-hpux11.20 no - powerpc-apple-darwin7.4.0 no Aaron Bannert - powerpc-unknown-linux-gnu no Graham Leggett - s390-ibm-linux no Greg Ames - sparc-sun-solaris2.8 no Jim Jagielski - NetWare no Brad Nicholes - OS/2 no Brian Havard - OS/390 no Greg Ames - Win32-x86 yes William Rowe - x86_64-unknown-linux-gnu no Aaron Bannert diff --git a/docs/conf/httpd-std.conf.in b/docs/conf/httpd-std.conf.in index 3d2cb2e7b3..35a13c9ce8 100644 --- a/docs/conf/httpd-std.conf.in +++ b/docs/conf/httpd-std.conf.in @@ -966,6 +966,8 @@ BrowserMatch "MS FrontPage" redirect-carefully BrowserMatch "^WebDrive" redirect-carefully BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully BrowserMatch "^gnome-vfs" redirect-carefully +BrowserMatch "^XML Spy" redirect-carefully +BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully # # Allow server status reports generated by mod_status, diff --git a/docs/conf/httpd-win.conf b/docs/conf/httpd-win.conf index a4405d6549..9ea8a7a2d7 100644 --- a/docs/conf/httpd-win.conf +++ b/docs/conf/httpd-win.conf @@ -885,6 +885,8 @@ BrowserMatch "MS FrontPage" redirect-carefully BrowserMatch "^WebDrive" redirect-carefully BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully BrowserMatch "^gnome-vfs" redirect-carefully +BrowserMatch "^XML Spy" redirect-carefully +BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully # # Allow server status reports generated by mod_status, diff --git a/docs/error/HTTP_BAD_GATEWAY.html.var b/docs/error/HTTP_BAD_GATEWAY.html.var index 6840e96297..ae15f34f33 100644 --- a/docs/error/HTTP_BAD_GATEWAY.html.var +++ b/docs/error/HTTP_BAD_GATEWAY.html.var @@ -215,6 +215,25 @@ Body:----------ro-- <!--#include virtual="include/bottom.html" --> ----------ro-- +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- +<!--#set var="CONTENT_LANGUAGE" value="sr" +--><!--#set var="CHARACTER_ENCODING" value="ISO-8859-5" +--><!--#set var="TITLE" value="»Þè ßàÞÛÐ×!" +--><!--#include virtual="include/top.html" --> + + ¿ÞáàÕÔÝØçÚØ áÕàÒÕà øÕ ßàØÜØÞ ÝÕØáßàÐÒÐÝ + ÞÔÓÞÒÞà ÞÔ áÛÕÔÕûÕÓ áÕàÒÕàÐ ã ÝØ×ã. + + <!--#if expr="$REDIRECT_ERROR_NOTES" --> + <!--#include virtual="include/spacer.html" --> + <!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" --> + <!--#endif --> + +<!--#include virtual="include/bottom.html" --> +----------sr-- + Content-language: sv Content-type: text/html; charset=ISO-8859-1 Body:----------sv-- diff --git a/docs/error/HTTP_BAD_REQUEST.html.var b/docs/error/HTTP_BAD_REQUEST.html.var index 195cdd31dc..ca7768ece4 100644 --- a/docs/error/HTTP_BAD_REQUEST.html.var +++ b/docs/error/HTTP_BAD_REQUEST.html.var @@ -157,6 +157,20 @@ Body:----------ro-- <!--#include virtual="include/bottom.html" --> ----------ro-- +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- +<!--#set var="CONTENT_LANGUAGE" value="sr" +--><!--#set var="CHARACTER_ENCODING" value="ISO-8859-5" +--><!--#set var="TITLE" value="»Þè ×ÐåâÕÒ!" +--><!--#include virtual="include/top.html" --> + + ²Ðè çØâÐç (ØÛØ ßÞáàÕÔÝØçÚØ áÕàÒÕà) ßÞáÛÐÞ øÕ ×ÐåâÕÒ ÚÞøØ + ÞÒÐø áÕàÒÕà ÝØøÕ ÜÞÓÐÞ ÔÐ àÐ×ãÜÕ. + +<!--#include virtual="include/bottom.html" --> +----------sr-- + Content-language: sv Content-type: text/html; charset=ISO-8859-1 Body:----------sv-- diff --git a/docs/error/HTTP_FORBIDDEN.html.var b/docs/error/HTTP_FORBIDDEN.html.var index 9ac4d72e0b..744f8c69f1 100644 --- a/docs/error/HTTP_FORBIDDEN.html.var +++ b/docs/error/HTTP_FORBIDDEN.html.var @@ -277,6 +277,29 @@ Body:----------ro-- <!--#include virtual="include/bottom.html" --> ----------ro-- +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- +<!--#set var="CONTENT_LANGUAGE" value="sr" +--><!--#set var="CHARACTER_ENCODING" value="ISO-8859-5" +--><!--#set var="TITLE" value="·ÐÑàÐúÕÝ ßàØáâãß!" +--><!--#include virtual="include/top.html" --> + + <!--#if expr="$REDIRECT_URL = /\/$/" --> + + ½ÕÜÐâÕ ÔÞ×ÒÞÛã ÔÐ ßàØáâãßØâÕ ×ÐåâÕÒÐÝÞÜ ÔØàÕÚâÞàØøãÜã. + ¼ÞÓãûÕ øÕ ÔÐ ÝÕÜÐ ØÝÔÕÚáÝÞÓ ÔÞÚãÜÕÝâÐ, ØÛØ ÔÐ øÕ ÔØàÕÚâÞàØøãÜ ×ÐèâØûÕÝ ÞÔ çØâÐúÐ. + + <!--#else --> + + ½ÕÜÐâÕ ÔÞ×ÒÞÛã ÔÐ ßàØáâãßØâÕ ×ÐåâÕÒÐÝÞÜ ÞÑøÕÚâã. + ¼ÞÓãûÕ øÕ ÔÐ øÕ ×ÐèâØûÕÝ ÞÔ çØâÐúÐ, ØÛØ ÔÐ ÓÐ áÕàÒÕà ÝÕ ÜÞÖÕ ßàÞçØâÐâØ. + + <!--#endif --> + +<!--#include virtual="include/bottom.html" --> +----------sr-- + Content-language: sv Content-type: text/html; charset=ISO-8859-1 Body:----------sv-- diff --git a/docs/error/HTTP_GONE.html.var b/docs/error/HTTP_GONE.html.var index 6b66e3c4bf..295263e852 100644 --- a/docs/error/HTTP_GONE.html.var +++ b/docs/error/HTTP_GONE.html.var @@ -315,6 +315,33 @@ Body:----------ro-- <!--#include virtual="include/bottom.html" --> ----------ro-- +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- +<!--#set var="CONTENT_LANGUAGE" value="sr" +--><!--#set var="CHARACTER_ENCODING" value="ISO-8859-5" +--><!--#set var="TITLE" value="ÀÕáãàá ÝØøÕ ÒØèÕ ÔÞáâãßÐÝ!" +--><!--#include virtual="include/top.html" --> + + ·ÐåâÕÒÐÝØ ÃÀ» ÝØøÕ ÒØèÕ ÔÞáâãßÐÝ ÝÐ ÞÒÞÜ áÕàÒÕàã Ø ÝÕÜÐ + ÐÔàÕáÕ ÝÐ ÚÞøã ÑØáâÕ ÜÞÓÛØ ÑØâØ ßàÞáÛÕòÕÝØ. + + <!--#if expr="$HTTP_REFERER" --> + + ¼ÞÛØÜÞ ÞÑÐÒÕáâØâÕ ÐãâÞàÐ + <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">ØáåÞÔØèÝÕ + áâàÐÝØæÕ</a> ÔÐ øÕ ÒÕ×Ð ×ÐáâÐàÕÛÐ. + + <!--#else --> + + °ÚÞ áâÕ ßàÐâØÛØ ÒÕ×ã áÐ áßÞùÝÕ áâàÐÝØæÕ, ÜÞÛØÜÞ ÞÑÐÒÕáâØâÕ + ÐãâÞàÐ âÕ áâàÐÝØæÕ. + + <!--#endif --> + +<!--#include virtual="include/bottom.html" --> +----------sr-- + Content-language: sv Content-type: text/html; charset=ISO-8859-1 Body:----------sv-- diff --git a/docs/error/HTTP_INTERNAL_SERVER_ERROR.html.var b/docs/error/HTTP_INTERNAL_SERVER_ERROR.html.var index 195c74d748..ba7e8686e0 100644 --- a/docs/error/HTTP_INTERNAL_SERVER_ERROR.html.var +++ b/docs/error/HTTP_INTERNAL_SERVER_ERROR.html.var @@ -339,6 +339,35 @@ Body:----------ro-- <!--#include virtual="include/bottom.html" --> ----------ro-- +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- +<!--#set var="CONTENT_LANGUAGE" value="sr" +--><!--#set var="CHARACTER_ENCODING" value="ISO-8859-5" +--><!--#set var="TITLE" value="³àÕèÚÐ áÕàÒÕàÐ!" +--><!--#include virtual="include/top.html" --> + + <!--#if expr="$REDIRECT_ERROR_NOTES" --> + + ÁÕàÒÕà øÕ ØÜÐÞ ãÝãâàÐèúã ÓàÕèÚã Ø ÝØøÕ ÑØÞ + ã ÜÞÓãûÝÞáâØ ÔÐ ØáßãÝØ ÒÐè ×ÐåâÕÒ. + + <!--#include virtual="include/spacer.html" --> + + ¿ÞàãÚÐ Þ ÓàÕèæØ: + <br /><!--#echo encoding="none" var="REDIRECT_ERROR_NOTES" --> + + <!--#else --> + + ÁÕàÒÕà øÕ ØÜÐÞ ãÝãâàÐèúã ÓàÕèÚã Ø ÝØøÕ ÑØÞ + ã ÜÞÓãûÝÞáâØ ÔÐ ØáßãÝØ ÒÐè ×ÐåâÕÒ. ¼ÞÓãûÕ øÕ ÔÐ øÕ áÕàÒÕà + ßàÕÞßâÕàÕûÕÝ, ØÛØ ÔÐ áÕ ÔÕáØÛÐ ÓàÕèÚÐ ã CGI áÚàØßâØ. + + <!--#endif --> + +<!--#include virtual="include/bottom.html" --> +----------sr-- + Content-language: sv Content-type: text/html; charset=ISO-8859-1 Body:----------sv-- diff --git a/docs/error/HTTP_LENGTH_REQUIRED.html.var b/docs/error/HTTP_LENGTH_REQUIRED.html.var index 9d6b15667d..642e413674 100644 --- a/docs/error/HTTP_LENGTH_REQUIRED.html.var +++ b/docs/error/HTTP_LENGTH_REQUIRED.html.var @@ -164,6 +164,21 @@ Body:----------ro-- <!--#include virtual="include/bottom.html" --> ----------ro-- +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- +<!--#set var="CONTENT_LANGUAGE" value="sr" +--><!--#set var="CHARACTER_ENCODING" value="ISO-8859-5" +--><!--#set var="TITLE" value="»ÞèÕ Content-Length ×ÐÓÛÐÒùÕ!" +--><!--#include virtual="include/top.html" --> + + ·ÐåâÕÒ áÐ <!--#echo var="REDIRECT_REQUEST_METHOD" --> + ÜÕâÞÔÞÜ ÜÞàÐ ØÜÐâØ ØáßàÐÒÝÞ <code>Content-Length</code> + (ÔãÖØÝÐ áÐÔàÖÐøÐ) ×ÐÓÛÐÒùÕ. + +<!--#include virtual="include/bottom.html" --> +----------sr-- + Content-language: sv Content-type: text/html; charset=ISO-8859-1 Body:----------sv-- diff --git a/docs/error/HTTP_METHOD_NOT_ALLOWED.html.var b/docs/error/HTTP_METHOD_NOT_ALLOWED.html.var index 4316dc1c9d..63d6d21e73 100644 --- a/docs/error/HTTP_METHOD_NOT_ALLOWED.html.var +++ b/docs/error/HTTP_METHOD_NOT_ALLOWED.html.var @@ -158,6 +158,20 @@ Body:----------ro-- <!--#include virtual="include/bottom.html" --> ----------ro-- +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- +<!--#set var="CONTENT_LANGUAGE" value="sr" +--><!--#set var="CHARACTER_ENCODING" value="ISO-8859-5" +--><!--#set var="TITLE" value="¼ÕâÞÔ ÝØøÕ ÔÞ×ÒÞùÕÝ!" +--><!--#include virtual="include/top.html" --> + + <!--#echo var="REDIRECT_REQUEST_METHOD" --> + ÜÕâÞÔ ÝØøÕ ÔÞ×ÒÞùÕÝ ×Ð ×ÐåâÕÒÐÝØ ÃÀ». + +<!--#include virtual="include/bottom.html" --> +----------sr-- + Content-language: sv Content-type: text/html; charset=ISO-8859-1 Body:----------sv-- diff --git a/docs/error/HTTP_NOT_FOUND.html.var b/docs/error/HTTP_NOT_FOUND.html.var index 3b77bee7c8..5102c9377e 100644 --- a/docs/error/HTTP_NOT_FOUND.html.var +++ b/docs/error/HTTP_NOT_FOUND.html.var @@ -325,6 +325,34 @@ Body:----------ro-- <!--#include virtual="include/bottom.html" --> ----------ro-- +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- +<!--#set var="CONTENT_LANGUAGE" value="sr" +--><!--#set var="CHARACTER_ENCODING" value="ISO-8859-5" +--><!--#set var="TITLE" value="¾ÑøÕÚÐâ ÝØøÕ ßàÞÝÐòÕÝ!" +--><!--#include virtual="include/top.html" --> + + ·ÐåâÕÒÐÝØ ÃÀ» ÝØøÕ ßàÞÝÐòÕÝ ÝÐ ÞÒÞÜ áÕàÒÕàã. + + <!--#if expr="$HTTP_REFERER" --> + + ¸×ÓÛÕÔÐ ÔÐ øÕ ÒÕ×Ð ÝÐ + <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">ØáåÞÔØèÝÞø + áâàÐÝØæØ</a> ßÞÓàÕèÝÐ ØÛØ ×ÐáâÐàÕÛÐ. ¼ÞÛØÜÞ ÞÑÐÒÕáâØâÕ ÐãâÞàÐ + <a href="<!--#echo encoding="url" var="HTTP_REFERER" -->">âÕ áâàÐÝØæÕ</a> + Þ ÓàÕèæØ. + + <!--#else --> + + ÃÚÞÛØÚÞ áâÕ ÃÀ» ãÝÕÛØ àãçÝÞ, ÜÞÛØÜÞ ßàÞÒÕàØâÕ ÜÞÓãûÕ + ÓàÕèÚÕ Ø ßàÞÑÐøâÕ ßÞÝÞÒÞ. + + <!--#endif --> + +<!--#include virtual="include/bottom.html" --> +----------sr-- + Content-language: sv Content-type: text/html; charset=ISO-8859-1 Body:----------sv-- diff --git a/docs/error/HTTP_NOT_IMPLEMENTED.html.var b/docs/error/HTTP_NOT_IMPLEMENTED.html.var index 9e980eecba..fa92d01ef3 100644 --- a/docs/error/HTTP_NOT_IMPLEMENTED.html.var +++ b/docs/error/HTTP_NOT_IMPLEMENTED.html.var @@ -149,6 +149,19 @@ Body:----------ro-- <!--#include virtual="include/bottom.html" --> ----------ro-- +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- +<!--#set var="CONTENT_LANGUAGE" value="sr" +--><!--#set var="CHARACTER_ENCODING" value="ISO-8859-5" +--><!--#set var="TITLE" value="½Õ ÜÞÓã ÔÐ ÞÑàÐÔØÜ ×ÐåâÕÒ!" +--><!--#include virtual="include/top.html" --> + + ÁÕàÒÕà ÝÕ ßÞÔàÖÐÒÐ ÐÚæØøã ÚÞøã øÕ çØâÐç ×ÐåâÕÒÐÞ. + +<!--#include virtual="include/bottom.html" --> +----------sr-- + Content-language: sv Content-type: text/html; charset=ISO-8859-1 Body:----------sv-- diff --git a/docs/error/HTTP_PRECONDITION_FAILED.html.var b/docs/error/HTTP_PRECONDITION_FAILED.html.var index 31faf17317..5d1d6e8e07 100644 --- a/docs/error/HTTP_PRECONDITION_FAILED.html.var +++ b/docs/error/HTTP_PRECONDITION_FAILED.html.var @@ -151,6 +151,19 @@ Body:----------ro-- <!--#include virtual="include/bottom.html" --> ----------ro-- +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- +<!--#set var="CONTENT_LANGUAGE" value="sr" +--><!--#set var="CHARACTER_ENCODING" value="ISO-8859-5" +--><!--#set var="TITLE" value="¿àÕÔãáÛÞÒ ÝØøÕ ØáßãúÕÝ!" +--><!--#include virtual="include/top.html" --> + + ¿àÕÔãáÛÞÒ ×Ð ×ÐåâÕÒ ÃÀ»-Ð ÝØøÕ ØáßãúÕÝ. + +<!--#include virtual="include/bottom.html" --> +----------sr-- + Content-language: sv Content-type: text/html; charset=ISO-8859-1 Body:----------sv-- diff --git a/docs/error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var b/docs/error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var index 7215e0c48b..b21a1ccf94 100644 --- a/docs/error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var +++ b/docs/error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var @@ -169,6 +169,21 @@ Body:----------ro-- <!--#include virtual="include/bottom.html" --> ----------ro-- +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- +<!--#set var="CONTENT_LANGUAGE" value="sr" +--><!--#set var="CHARACTER_ENCODING" value="ISO-8859-5" +--><!--#set var="TITLE" value="Request entity too large!" +--><!--#include virtual="include/top.html" --> + + <!--#echo var="REDIRECT_REQUEST_METHOD" --> + ÜÕâÞÔ ÝÕ ÔÞ×ÒÞùÐÒÐ ßàÕÝÞá ÞÒØå ßÞÔÐâÐÚÐ, ØÛØ ÚÞÛØçØÝÐ ßÞÔÐâÐÚÐ + ßàÕÜÐèãøÕ ÞÓàÐÝØçÕúÐ ÜÞÓãûÝÞáâØ. + +<!--#include virtual="include/bottom.html" --> +----------sr-- + Content-language: sv Content-type: text/html; charset=ISO-8859-1 Body:----------sv-- diff --git a/docs/error/HTTP_REQUEST_TIME_OUT.html.var b/docs/error/HTTP_REQUEST_TIME_OUT.html.var index 8acdfca4d2..61311e2c80 100644 --- a/docs/error/HTTP_REQUEST_TIME_OUT.html.var +++ b/docs/error/HTTP_REQUEST_TIME_OUT.html.var @@ -161,6 +161,20 @@ Body:----------ro-- <!--#include virtual="include/bottom.html" --> ----------ro-- +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- +<!--#set var="CONTENT_LANGUAGE" value="sr" +--><!--#set var="CHARACTER_ENCODING" value="ISO-8859-5" +--><!--#set var="TITLE" value="·ÐåâÕÒã øÕ ØáâÕÚÛÞ ÒàÕÜÕ!" +--><!--#include virtual="include/top.html" --> + + ÁÕàÒÕà øÕ ßàÕÚØÝãÞ ÒÕ×ã áÐ ÜàÕÖÞÜ øÕà çØâÐç + ÝØøÕ ×ÐÒàèØÞ ×ÐåâÕÒ ×Ð ÔÞ×ÒÞùÕÝÞ ÒàÕÜÕ. + +<!--#include virtual="include/bottom.html" --> +----------sr-- + Content-language: sv Content-type: text/html; charset=ISO-8859-1 Body:----------sv-- diff --git a/docs/error/HTTP_REQUEST_URI_TOO_LARGE.html.var b/docs/error/HTTP_REQUEST_URI_TOO_LARGE.html.var index 8cac2a9db7..ad45170759 100644 --- a/docs/error/HTTP_REQUEST_URI_TOO_LARGE.html.var +++ b/docs/error/HTTP_REQUEST_URI_TOO_LARGE.html.var @@ -161,6 +161,20 @@ Body:----------ro-- <!--#include virtual="include/bottom.html" --> ----------ro-- +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- +<!--#set var="CONTENT_LANGUAGE" value="sr" +--><!--#set var="CHARACTER_ENCODING" value="ISO-8859-5" +--><!--#set var="TITLE" value="¿ÞáÛÐâØ ÃÀ¸ øÕ ßàÕÒÕÛØÚ!" +--><!--#include virtual="include/top.html" --> + + ´ãÖØÝÐ ×ÐåâÕÒÐÝÞÓ ÃÀ»-Ð ßàÕÜÐèãøÕ ÞÓàÐÝØçÕúÐ ÜÞÓãûÝÞáâØ + ÞÒÞÓ áÕàÒÕàÐ. ·ÐåâÕÒ ÝÕ ÜÞÖÕ ÑØâØ ÞÑàÐòÕÝ. + +<!--#include virtual="include/bottom.html" --> +----------sr-- + Content-language: sv Content-type: text/html; charset=ISO-8859-1 Body:----------sv-- diff --git a/docs/error/HTTP_SERVICE_UNAVAILABLE.html.var b/docs/error/HTTP_SERVICE_UNAVAILABLE.html.var index cffa681caa..f2e4d7ef6b 100644 --- a/docs/error/HTTP_SERVICE_UNAVAILABLE.html.var +++ b/docs/error/HTTP_SERVICE_UNAVAILABLE.html.var @@ -174,6 +174,21 @@ Body:----------ro-- <!--#include virtual="include/bottom.html" --> ----------ro-- +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- +<!--#set var="CONTENT_LANGUAGE" value="sr" +--><!--#set var="CHARACTER_ENCODING" value="ISO-8859-5" +--><!--#set var="TITLE" value="ÃáÛãÓÐ øÕ ÝÕÔÞáâãßÝÐ!" +--><!--#include virtual="include/top.html" --> + + ÁÕàÒÕà âàÕÝãâÝÞ ÝØøÕ ã ÜÞÓãûÝÞáâØ ÔÐ ãáÛãÖØ ÒÐè + ×ÐåâÕÒ ßÞèâÞ øÕ ×ÐâÒÞàÕÝ ×ÑÞÓ ÞÔàÖÐÒÐúÐ ØÛØ ØÜÐ ÝÕÔÞÒÞùÐÝ + ÚÐßÐæØâÕâ. ¼ÞÛØÜÞ ßÞÚãèÐøâÕ ßÞÝÞÒÞ ÚÐáÝØøÕ. + +<!--#include virtual="include/bottom.html" --> +----------sr-- + Content-language: sv Content-type: text/html; charset=ISO-8859-1 Body:----------sv-- diff --git a/docs/error/HTTP_UNAUTHORIZED.html.var b/docs/error/HTTP_UNAUTHORIZED.html.var index b5fb0e4dc9..57fd572eae 100644 --- a/docs/error/HTTP_UNAUTHORIZED.html.var +++ b/docs/error/HTTP_UNAUTHORIZED.html.var @@ -251,6 +251,27 @@ Body:----------ro-- <!--#include virtual="include/bottom.html" --> ----------ro-- +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- +<!--#set var="CONTENT_LANGUAGE" value="sr" +--><!--#set var="CHARACTER_ENCODING" value="ISO-8859-5" +--><!--#set var="TITLE" value="¾ÑÐÒÕ×ÝÐ ÐãâÕÝâØäØÚÐæØøÐ!" +--><!--#include virtual="include/top.html" --> + + ¾ÒÐø áÕàÒÕà ÝØøÕ ÜÞÓÐÞ ÔÐ ßÞâÒàÔØ ÔÐ áâÕ ÞÒÛÐèûÕÝØ ÔÐ ßàØáâãßØâÕ + ÃÀ»-ã "<!--#echo encoding="url" var="REDIRECT_URL" -->". + ¼ÞÓãûÕ øÕ ØÛØ ÔÐ áâÕ ÝÐÒÕÛØ ßÞÓàÕèÝÕ ÛØçÝÕ ßÞÔÐâÚÕ (Ýßà. ÝÕâÐçÝã ÛÞ×ØÝÚã), ØÛØ ÔÐ + ÒÐè çØâÐç ÝÕ àÐ×ãÜÕ ÚÐÚÞ ÔÐ ßÞèÐùÕ ×ÐåâÕÒÐÝÕ ÛØçÝÕ ßÞÔÐâÚÕ. + + <!--#include virtual="include/spacer.html" --> + + ÃÚÞÛØÚÞ ÒÐÜ øÕ ÔÞ×ÒÞùÕÝÞ ÔÐ ßàÕã×ØÜÐâÕ ÔÞÚãÜÕÝâ, ÜÞÛØÜÞ ÔÐ + ßàÞÒÕàØâÕ áÒÞøÕ ÚÞàØáÝØçÚÞ ØÜÕ Ø ÛÞ×ØÝÚã Ø ßàÞÑÐâÕ ßÞÝÞÒÞ. + +<!--#include virtual="include/bottom.html" --> +----------sr-- + Content-language: sv Content-type: text/html; charset=ISO-8859-1 Body:----------sv-- diff --git a/docs/error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var b/docs/error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var index d6e5ac0201..57715769c0 100644 --- a/docs/error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var +++ b/docs/error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var @@ -150,6 +150,19 @@ Body:----------ro-- <!--#include virtual="include/bottom.html" --> ----------ro-- +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- +<!--#set var="CONTENT_LANGUAGE" value="sr" +--><!--#set var="CHARACTER_ENCODING" value="ISO-8859-5" +--><!--#set var="TITLE" value="½ÕßÞÔàÖÐÝÐ ÒàáâÐ ÜÕÔØøÐ!" +--><!--#include virtual="include/top.html" --> + + ÁÕàÒÕà ÝÕ ßÞÔàÖÐÒÐ Òàáâã ÜÕÔØøÐ ßàÕÝÕáÕÝã ã ×ÐåâÕÒã. + +<!--#include virtual="include/bottom.html" --> +----------sr-- + Content-language: sv Content-type: text/html; charset=ISO-8859-1 Body:----------sv-- diff --git a/docs/error/HTTP_VARIANT_ALSO_VARIES.html.var b/docs/error/HTTP_VARIANT_ALSO_VARIES.html.var index df53f3b180..efb7d3e6d3 100644 --- a/docs/error/HTTP_VARIANT_ALSO_VARIES.html.var +++ b/docs/error/HTTP_VARIANT_ALSO_VARIES.html.var @@ -165,6 +165,21 @@ Body:----------ro-- <!--#include virtual="include/bottom.html" --> ----------ro-- +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- +<!--#set var="CONTENT_LANGUAGE" value="sr" +--><!--#set var="CHARACTER_ENCODING" value="ISO-8859-5" +--><!--#set var="TITLE" value="²ÐàØøÐÝâÐ âÐÚÞòÕ ÒÐàØàÐ!" +--><!--#include virtual="include/top.html" --> + + ²ÐàØøÐÝâÐ ×ÐåâÕÒÐÝÞÓ ÕÝâØâÕâÐ + øÕ Ø áÐÜÐ àÕáãàá ÚÞøØ ßÞáâÞøØ ã ÒØèÕ ÒÐàØøÐÝâØ. + ¿àØáâãß ÝØøÕ ÜÞÓãû. + +<!--#include virtual="include/bottom.html" --> +----------sr-- + Content-language: sv Content-type: text/html; charset=ISO-8859-1 Body:----------sv-- diff --git a/docs/error/README b/docs/error/README index c2c1754926..c4f3f791d5 100644 --- a/docs/error/README +++ b/docs/error/README @@ -25,6 +25,7 @@ | Korean (ko) | Jaeho Shin | | Polish (pl) | Tomasz Kepczynski | | Romanian (ro) | Andrei Besleaga | + | Serbian (sr) | Nikola Smolenski | | Spanish (es) | Karla Quintero | | Swedish (sv) | Thomas Sjögren | | Turkish (tr) | Emre Sokullu | @@ -33,4 +34,4 @@ like to contribute the pages in an additional language.) - Copyright (c) 2001-2004 The Apache Software Foundation. All rights reserved. + Copyright (c) 2001-2005 The Apache Software Foundation. All rights reserved. diff --git a/docs/error/contact.html.var b/docs/error/contact.html.var index ee2157e718..4d29ceedcf 100644 --- a/docs/error/contact.html.var +++ b/docs/error/contact.html.var @@ -88,6 +88,13 @@ Va rugam sa il contactati pe in cazul in care credeti ca aceasta este o eroare a serverului. ----------ro-- +Content-language: sr +Content-type: text/html; charset=ISO-8859-5 +Body:----------sr-- +°ÚÞ ÜØáÛØâÕ ÔÐ øÕ ÞÒÞ ÓàÕèÚÐ áÕàÒÕàÐ, ÜÞÛØÜÞ ÞÑÐÒÕáâØâÕ +<a href="mailto:<!--#echo encoding="url" var="SERVER_ADMIN" -->">ÒÕÑÜÐáâÕàÐ</a>. +----------sr-- + Content-language: sv Content-type: text/html; charset=ISO-8859-1 Body:----------sv-- diff --git a/docs/manual/mod/mod_mime.html.en b/docs/manual/mod/mod_mime.html.en index b4d3ff8004..75e4d67cba 100644 --- a/docs/manual/mod/mod_mime.html.en +++ b/docs/manual/mod/mod_mime.html.en @@ -894,7 +894,7 @@ extensions</td></tr> the default list of mappings from filename extensions to content types. Most administrators use the provided <code>mime.types</code> file, which associates common filename extensions with IANA registered - content types. The current list is maintained at <a href="http://www.isi.edu/in-notes/iana/assignments/media-types/media-types">http://www.isi.edu/in-notes/iana/assignments/media-types/media-types</a>. + content types. The current list is maintained at <a href="http://www.iana.org/assignments/media-types/index.html">http://www.iana.org/assignments/media-types/index.html</a>. This simplifies the <code>httpd.conf</code> file by providing the majority of media-type definitions, and may be overridden by <code class="directive"><a href="#addtype">AddType</a></code> directives as diff --git a/docs/manual/mod/mod_mime.xml b/docs/manual/mod/mod_mime.xml index fb517d63ef..195d3f0af4 100644 --- a/docs/manual/mod/mod_mime.xml +++ b/docs/manual/mod/mod_mime.xml @@ -865,8 +865,8 @@ extensions</description> types. Most administrators use the provided <code>mime.types</code> file, which associates common filename extensions with IANA registered content types. The current list is maintained at <a href= - "http://www.isi.edu/in-notes/iana/assignments/media-types/media-types" - >http://www.isi.edu/in-notes/iana/assignments/media-types/media-types</a>. + "http://www.iana.org/assignments/media-types/index.html" + >http://www.iana.org/assignments/media-types/index.html</a>. This simplifies the <code>httpd.conf</code> file by providing the majority of media-type definitions, and may be overridden by <directive module="mod_mime">AddType</directive> directives as diff --git a/docs/manual/mod/mod_mime.xml.ja b/docs/manual/mod/mod_mime.xml.ja index de49b9b88c..0dec94569e 100644 --- a/docs/manual/mod/mod_mime.xml.ja +++ b/docs/manual/mod/mod_mime.xml.ja @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="iso-2022-jp"?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> -<!-- English Revision: 104971:151405 (outdated) --> +<!-- English Revision: 104971:193033 (outdated) --> <!-- Copyright 2002-2004 The Apache Software Foundation diff --git a/docs/manual/mod/mod_rewrite.html.en b/docs/manual/mod/mod_rewrite.html.en index eb27a64d6b..d2dd615265 100644 --- a/docs/manual/mod/mod_rewrite.html.en +++ b/docs/manual/mod/mod_rewrite.html.en @@ -967,6 +967,20 @@ Apache 2.0.41 and later</td></tr> substituted by <em>DefaultValue</em> or by the empty string if no <em>DefaultValue</em> was specified.</p> + <p>For example, you might define a + <code class="directive">RewriteMap</code> as:</p> + + <div class="example"><p><code> + RewriteMap examplemap txt:/path/to/file/map.txt + </code></p></div> + + <p>You would then be able to use this map in a + <code class="directive">RewriteRule</code> as follows:</p> + + <div class="example"><p><code> + RewriteRule ^/ex/(.*) ${examplemap:$1} + </code></p></div> + <p>The following combinations for <em>MapType</em> and <em>MapSource</em> can be used:</p> @@ -1012,12 +1026,14 @@ RewriteMap real-to-user txt:/path/to/file/map.txt ``<code>|</code>'' characters which have the meaning of ``or''. In other words they indicate a set of alternatives from which the actual returned value is - chosen randomly. Although this sounds crazy and useless, - it was actually designed for load balancing in a reverse - proxy situation where the looked up values are server - names. Example:</p> - -<div class="example"><pre> + chosen randomly. For example, you might use the following map + file and directives to provide a random load balancing between + several back-end server, via a reverse-proxy. Images are sent + to one of the servers in the 'static' pool, while everything + else is sent to one of the 'dynamic' pool.</p> + <p>Example:</p> + +<div class="example"><h3>Rewrite map file</h3><pre> ## ## map.txt -- rewriting map ## @@ -1026,8 +1042,12 @@ static www1|www2|www3|www4 dynamic www5|www6 </pre></div> -<div class="example"><p><code> -RewriteMap servers rnd:/path/to/file/map.txt +<div class="example"><h3>Configuration directives</h3><p><code> +RewriteMap servers rnd:/path/to/file/map.txt<br /> +<br /> +RewriteRule ^/(.*\.(png|gif|jpg)) http://${servers:static}/$1 +[NC,P,L]<br /> +RewriteRule ^/(.*) http://${servers:dynamic}/$1 [P,L] </code></p></div> </li> diff --git a/docs/manual/mod/mod_rewrite.xml b/docs/manual/mod/mod_rewrite.xml index ac62aa5181..b8bc81cfba 100644 --- a/docs/manual/mod/mod_rewrite.xml +++ b/docs/manual/mod/mod_rewrite.xml @@ -496,6 +496,20 @@ Apache 2.0.41 and later</compatibility> substituted by <em>DefaultValue</em> or by the empty string if no <em>DefaultValue</em> was specified.</p> + <p>For example, you might define a + <directive>RewriteMap</directive> as:</p> + + <example> + RewriteMap examplemap txt:/path/to/file/map.txt + </example> + + <p>You would then be able to use this map in a + <directive>RewriteRule</directive> as follows:</p> + + <example> + RewriteRule ^/ex/(.*) ${examplemap:$1} + </example> + <p>The following combinations for <em>MapType</em> and <em>MapSource</em> can be used:</p> @@ -543,12 +557,14 @@ RewriteMap real-to-user txt:/path/to/file/map.txt ``<code>|</code>'' characters which have the meaning of ``or''. In other words they indicate a set of alternatives from which the actual returned value is - chosen randomly. Although this sounds crazy and useless, - it was actually designed for load balancing in a reverse - proxy situation where the looked up values are server - names. Example:</p> - -<example> + chosen randomly. For example, you might use the following map + file and directives to provide a random load balancing between + several back-end server, via a reverse-proxy. Images are sent + to one of the servers in the 'static' pool, while everything + else is sent to one of the 'dynamic' pool.</p> + <p>Example:</p> + +<example><title>Rewrite map file</title> <pre> ## ## map.txt -- rewriting map @@ -559,8 +575,12 @@ dynamic www5|www6 </pre> </example> -<example> -RewriteMap servers rnd:/path/to/file/map.txt +<example><title>Configuration directives</title> +RewriteMap servers rnd:/path/to/file/map.txt<br /> +<br /> +RewriteRule ^/(.*\.(png|gif|jpg)) http://${servers:static}/$1 +[NC,P,L]<br /> +RewriteRule ^/(.*) http://${servers:dynamic}/$1 [P,L] </example> </li> diff --git a/include/http_log.h b/include/http_log.h index 9b24f5844f..93895f13c1 100644 --- a/include/http_log.h +++ b/include/http_log.h @@ -116,6 +116,20 @@ AP_DECLARE(apr_status_t) ap_replace_stderr_log(apr_pool_t *p, int ap_open_logs(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s_main); +#ifdef CORE_PRIVATE + +/** + * Perform special processing for piped loggers in MPM child + * processes. + * @param p Not used + * @param s Not used + * @tip ap_logs_child_init is not for use by modules; it is an + * internal core function + */ +void ap_logs_child_init(apr_pool_t *p, server_rec *s); + +#endif /* CORE_PRIVATE */ + /* * The three primary logging functions, ap_log_error, ap_log_rerror, and * ap_log_perror use a printf style format string to build the log message. diff --git a/modules/experimental/mod_disk_cache.c b/modules/experimental/mod_disk_cache.c index 6e8d0c58ba..35466fd4a8 100644 --- a/modules/experimental/mod_disk_cache.c +++ b/modules/experimental/mod_disk_cache.c @@ -266,10 +266,8 @@ static int create_entity(cache_handle_t *h, request_rec *r, { disk_cache_conf *conf = ap_get_module_config(r->server->module_config, &disk_cache_module); - apr_status_t rv; cache_object_t *obj; disk_cache_object_t *dobj; - apr_file_t *tmpfile; if (conf->cache_root == NULL) { return DECLINED; @@ -478,7 +476,6 @@ static apr_status_t read_table(cache_handle_t *handle, request_rec *r, static apr_status_t recall_headers(cache_handle_t *h, request_rec *r) { disk_cache_object_t *dobj = (disk_cache_object_t *) h->cache_obj->vobj; - apr_table_t * tmp; /* This case should not happen... */ if (!dobj->hfd) { diff --git a/modules/proxy/proxy_http.c b/modules/proxy/proxy_http.c index a26e5caca2..57e31d99a2 100644 --- a/modules/proxy/proxy_http.c +++ b/modules/proxy/proxy_http.c @@ -1201,8 +1201,24 @@ apr_status_t ap_proxy_http_process_response(apr_pool_t * p, request_rec *r, return r->status; } else { - /* strip connection listed hop-by-hop headers from response */ const char *buf; + + /* can't have both Content-Length and Transfer-Encoding */ + if (apr_table_get(r->headers_out, "Transfer-Encoding") + && apr_table_get(r->headers_out, "Content-Length")) { + /* 2616 section 4.4, point 3: "if both Transfer-Encoding + * and Content-Length are received, the latter MUST be + * ignored"; so unset it here to prevent any confusion + * later. */ + apr_table_unset(r->headers_out, "Content-Length"); + ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, + r->server, + "proxy: server %s returned Transfer-Encoding and Content-Length", + p_conn->name); + p_conn->close += 1; + } + + /* strip connection listed hop-by-hop headers from response */ p_conn->close += ap_proxy_liststr(apr_table_get(r->headers_out, "Connection"), "close"); diff --git a/modules/ssl/ssl_engine_init.c b/modules/ssl/ssl_engine_init.c index 7da4e96a22..131abf635e 100644 --- a/modules/ssl/ssl_engine_init.c +++ b/modules/ssl/ssl_engine_init.c @@ -705,7 +705,7 @@ static int ssl_server_import_cert(server_rec *s, { SSLModConfigRec *mc = myModConfig(s); ssl_asn1_t *asn1; - unsigned char *ptr; + MODSSL_D2I_X509_CONST unsigned char *ptr; const char *type = ssl_asn1_keystr(idx); X509 *cert; @@ -743,7 +743,7 @@ static int ssl_server_import_key(server_rec *s, { SSLModConfigRec *mc = myModConfig(s); ssl_asn1_t *asn1; - unsigned char *ptr; + MODSSL_D2I_PrivateKey_CONST unsigned char *ptr; const char *type = ssl_asn1_keystr(idx); int pkey_type = (idx == SSL_AIDX_RSA) ? EVP_PKEY_RSA : EVP_PKEY_DSA; EVP_PKEY *pkey; diff --git a/modules/ssl/ssl_scache_dbm.c b/modules/ssl/ssl_scache_dbm.c index 81f555ac99..9e5632e9ea 100644 --- a/modules/ssl/ssl_scache_dbm.c +++ b/modules/ssl/ssl_scache_dbm.c @@ -193,7 +193,7 @@ SSL_SESSION *ssl_scache_dbm_retrieve(server_rec *s, UCHAR *id, int idlen) apr_datum_t dbmkey; apr_datum_t dbmval; SSL_SESSION *sess = NULL; - UCHAR *ucpData; + MODSSL_D2I_SSL_SESSION_CONST unsigned char *ucpData; int nData; time_t expiry; time_t now; @@ -234,13 +234,15 @@ SSL_SESSION *ssl_scache_dbm_retrieve(server_rec *s, UCHAR *id, int idlen) /* parse resulting data */ nData = dbmval.dsize-sizeof(time_t); - ucpData = (UCHAR *)malloc(nData); + ucpData = malloc(nData); if (ucpData == NULL) { apr_dbm_close(dbm); ssl_mutex_off(s); return NULL; } - memcpy(ucpData, (char *)dbmval.dptr+sizeof(time_t), nData); + /* Cast needed, ucpData may be const */ + memcpy((unsigned char *)ucpData, + (char *)dbmval.dptr + sizeof(time_t), nData); memcpy(&expiry, dbmval.dptr, sizeof(time_t)); apr_dbm_close(dbm); diff --git a/modules/ssl/ssl_scache_shmcb.c b/modules/ssl/ssl_scache_shmcb.c index 377821c7e4..946cb9df9a 100644 --- a/modules/ssl/ssl_scache_shmcb.c +++ b/modules/ssl/ssl_scache_shmcb.c @@ -1203,7 +1203,7 @@ static SSL_SESSION *shmcb_lookup_session_id( SHMCBHeader *header; SSL_SESSION *pSession = NULL; unsigned int curr_pos, loop, count; - unsigned char *ptr; + MODSSL_D2I_SSL_SESSION_CONST unsigned char *ptr; time_t now; ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, s, @@ -1281,7 +1281,7 @@ static BOOL shmcb_remove_session_id( SHMCBIndex *idx; SHMCBHeader *header; unsigned int curr_pos, loop, count; - unsigned char *ptr; + MODSSL_D2I_SSL_SESSION_CONST unsigned char *ptr; BOOL to_return = FALSE; ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, s, diff --git a/modules/ssl/ssl_toolkit_compat.h b/modules/ssl/ssl_toolkit_compat.h index fc41341a44..d20f331539 100644 --- a/modules/ssl/ssl_toolkit_compat.h +++ b/modules/ssl/ssl_toolkit_compat.h @@ -69,6 +69,21 @@ #define MODSSL_CLIENT_CERT_CB_ARG_TYPE X509 #define MODSSL_PCHAR_CAST +/* ...shifting sands of openssl... */ +#if (OPENSSL_VERSION_NUMBER >= 0x0090707f) +# define MODSSL_D2I_SSL_SESSION_CONST const +#else +# define MODSSL_D2I_SSL_SESSION_CONST +#endif + +#if (OPENSSL_VERSION_NUMBER >= 0x00908000) +# define MODSSL_D2I_PrivateKey_CONST const +# define MODSSL_D2I_X509_CONST const +#else +# define MODSSL_D2I_PrivateKey_CONST +# define MODSSL_D2I_X509_CONST +#endif + #define modssl_X509_verify_cert X509_verify_cert typedef int (modssl_read_bio_cb_fn)(char*,int,int,void*); @@ -99,6 +114,13 @@ typedef int (modssl_read_bio_cb_fn)(char*,int,int,void*); #define HAVE_SSL_X509V3_EXT_d2i #endif +#ifndef PEM_F_DEF_CALLBACK +#ifdef PEM_F_PEM_DEF_CALLBACK +/* In OpenSSL 0.9.8 PEM_F_DEF_CALLBACK was renamed */ +#define PEM_F_DEF_CALLBACK PEM_F_PEM_DEF_CALLBACK +#endif +#endif + #elif defined (SSLC_VERSION_NUMBER) /* RSA */ /* sslc does not support this function, OpenSSL has since 9.5.1 */ @@ -116,6 +138,9 @@ typedef int (modssl_read_bio_cb_fn)(char*,int,int,void*); #define MODSSL_INFO_CB_ARG_TYPE SSL* #define MODSSL_CLIENT_CERT_CB_ARG_TYPE void #define MODSSL_PCHAR_CAST (char *) +#define MODSSL_D2I_SSL_SESSION_CONST +#define MODSSL_D2I_PrivateKey_CONST +#define MODSSL_D2I_X509_CONST typedef int (modssl_read_bio_cb_fn)(char*,int,int); diff --git a/server/core.c b/server/core.c index 563e07d6c0..e9a868f5b3 100644 --- a/server/core.c +++ b/server/core.c @@ -4499,6 +4499,7 @@ static void register_hooks(apr_pool_t *p) ap_hook_translate_name(ap_core_translate,NULL,NULL,APR_HOOK_REALLY_LAST); ap_hook_map_to_storage(core_map_to_storage,NULL,NULL,APR_HOOK_REALLY_LAST); ap_hook_open_logs(ap_open_logs,NULL,NULL,APR_HOOK_REALLY_FIRST); + ap_hook_child_init(ap_logs_child_init,NULL,NULL,APR_HOOK_MIDDLE); ap_hook_handler(default_handler,NULL,NULL,APR_HOOK_REALLY_LAST); /* FIXME: I suspect we can eliminate the need for these do_nothings - Ben */ ap_hook_type_checker(do_nothing,NULL,NULL,APR_HOOK_REALLY_LAST); diff --git a/server/log.c b/server/log.c index 2b4a0c0429..bfec7a3003 100644 --- a/server/log.c +++ b/server/log.c @@ -145,6 +145,45 @@ static const TRANS priorities[] = { static apr_file_t *stderr_log = NULL; +/* track pipe handles to close in child process */ +typedef struct read_handle_t { + struct read_handle_t *next; + apr_file_t *handle; +} read_handle_t; + +static read_handle_t *read_handles; + +/* clear_handle_list() is called when plog is cleared; at that + * point we need to forget about our old list of pipe read + * handles + */ +static apr_status_t clear_handle_list(void *v) +{ + read_handles = NULL; + return APR_SUCCESS; +} + +/* remember to close this handle in the child process */ +static void close_handle_in_child(apr_pool_t *p, apr_file_t *f) +{ + read_handle_t *new_handle; + + new_handle = apr_pcalloc(p, sizeof(read_handle_t)); + new_handle->next = read_handles; + new_handle->handle = f; + read_handles = new_handle; +} + +void ap_logs_child_init(apr_pool_t *p, server_rec *s) +{ + read_handle_t *cur = read_handles; + + while (cur) { + apr_file_close(cur->handle); + cur = cur->next; + } +} + AP_DECLARE(void) ap_open_stderr_log(apr_pool_t *p) { apr_file_open_stderr(&stderr_log, p); @@ -220,6 +259,9 @@ static int log_child(apr_pool_t *p, const char *progname, if (rc == APR_SUCCESS) { apr_pool_note_subprocess(p, procnew, APR_KILL_AFTER_TIMEOUT); (*fpin) = procnew->in; + /* read handle to pipe not kept open, so no need to call + * close_handle_in_child() + */ } } @@ -296,6 +338,8 @@ int ap_open_logs(apr_pool_t *pconf, apr_pool_t *p /* plog */, int replace_stderr; apr_file_t *errfile = NULL; + apr_pool_cleanup_register(p, NULL, clear_handle_list, + apr_pool_cleanup_null); if (open_error_log(s_main, p) != OK) { return DONE; } @@ -439,7 +483,7 @@ static void log_error_core(const char *file, int line, int level, #ifndef TPF if (file && level_and_mask == APLOG_DEBUG) { -#if defined(_OSD_POSIX) || defined(WIN32) +#if defined(_OSD_POSIX) || defined(WIN32) || defined(__MVS__) char tmp[256]; char *e = strrchr(file, '/'); #ifdef WIN32 @@ -756,6 +800,7 @@ static int piped_log_spawn(piped_log *pl) ap_piped_log_write_fd(pl) = procnew->in; apr_proc_other_child_register(procnew, piped_log_maintenance, pl, ap_piped_log_write_fd(pl), pl->p); + close_handle_in_child(pl->p, ap_piped_log_read_fd(pl)); } else { char buf[120]; diff --git a/server/mpm/worker/worker.c b/server/mpm/worker/worker.c index fe078ece5d..8f1ba12c44 100644 --- a/server/mpm/worker/worker.c +++ b/server/mpm/worker/worker.c @@ -738,7 +738,13 @@ static void *listener_thread(apr_thread_t *thd, void * dummy) else { if ((rv = SAFE_ACCEPT(apr_proc_mutex_unlock(accept_mutex))) != APR_SUCCESS) { - ap_log_error(APLOG_MARK, APLOG_EMERG, rv, ap_server_conf, + int level = APLOG_EMERG; + + if (ap_scoreboard_image->parent[process_slot].generation != + ap_scoreboard_image->global->running_generation) { + level = APLOG_DEBUG; /* common to get these at restart time */ + } + ap_log_error(APLOG_MARK, level, rv, ap_server_conf, "apr_proc_mutex_unlock failed. Attempting to " "shutdown process gracefully."); signal_threads(ST_GRACEFUL); diff --git a/server/protocol.c b/server/protocol.c index 59aff7fc71..a10610e01e 100644 --- a/server/protocol.c +++ b/server/protocol.c @@ -885,6 +885,15 @@ request_rec *ap_read_request(conn_rec *conn) apr_brigade_destroy(tmp_bb); return r; } + + if (apr_table_get(r->headers_in, "Transfer-Encoding") + && apr_table_get(r->headers_in, "Content-Length")) { + /* 2616 section 4.4, point 3: "if both Transfer-Encoding + * and Content-Length are received, the latter MUST be + * ignored"; so unset it here to prevent any confusion + * later. */ + apr_table_unset(r->headers_in, "Content-Length"); + } } else { if (r->header_only) { diff --git a/support/win32/ApacheMonitor.c b/support/win32/ApacheMonitor.c index 8241ce23f9..6392a1ff34 100644 --- a/support/win32/ApacheMonitor.c +++ b/support/win32/ApacheMonitor.c @@ -998,7 +998,9 @@ BOOL GetApacheServicesStatus() lstrcpy(szBuf, szImagePath); CharLower(szBuf); /* the service name could be Apache*.exe */ - if ((strstr(szBuf, "\\apache") != NULL) + /* the service name could be httpd*.exe or Apache*.exe */ + if (((strstr(szBuf, "\\apache") != NULL) + || (strstr(szBuf, "\\httpd") != NULL)) && strstr(szBuf, ".exe") && (strstr(szBuf, "--ntservice") != NULL || strstr(szBuf, "-k ") != NULL)) |