summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndré Malo <nd@apache.org>2005-07-19 11:57:30 +0000
committerAndré Malo <nd@apache.org>2005-07-19 11:57:30 +0000
commitbab0071e4e0dc8a56e68c34b2b54cf77df024dac (patch)
treee75ecdb087eaaa9c8520903f746dd465ab832eb7
parent9022af073a76c40c6b1b920e0e8d1a4797dfef4c (diff)
downloadhttpd-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
-rw-r--r--CHANGES13
-rw-r--r--STATUS637
-rw-r--r--docs/conf/httpd-std.conf.in2
-rw-r--r--docs/conf/httpd-win.conf2
-rw-r--r--docs/error/HTTP_BAD_GATEWAY.html.var19
-rw-r--r--docs/error/HTTP_BAD_REQUEST.html.var14
-rw-r--r--docs/error/HTTP_FORBIDDEN.html.var23
-rw-r--r--docs/error/HTTP_GONE.html.var27
-rw-r--r--docs/error/HTTP_INTERNAL_SERVER_ERROR.html.var29
-rw-r--r--docs/error/HTTP_LENGTH_REQUIRED.html.var15
-rw-r--r--docs/error/HTTP_METHOD_NOT_ALLOWED.html.var14
-rw-r--r--docs/error/HTTP_NOT_FOUND.html.var28
-rw-r--r--docs/error/HTTP_NOT_IMPLEMENTED.html.var13
-rw-r--r--docs/error/HTTP_PRECONDITION_FAILED.html.var13
-rw-r--r--docs/error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var15
-rw-r--r--docs/error/HTTP_REQUEST_TIME_OUT.html.var14
-rw-r--r--docs/error/HTTP_REQUEST_URI_TOO_LARGE.html.var14
-rw-r--r--docs/error/HTTP_SERVICE_UNAVAILABLE.html.var15
-rw-r--r--docs/error/HTTP_UNAUTHORIZED.html.var21
-rw-r--r--docs/error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var13
-rw-r--r--docs/error/HTTP_VARIANT_ALSO_VARIES.html.var15
-rw-r--r--docs/error/README3
-rw-r--r--docs/error/contact.html.var7
-rw-r--r--docs/manual/mod/mod_mime.html.en2
-rw-r--r--docs/manual/mod/mod_mime.xml4
-rw-r--r--docs/manual/mod/mod_mime.xml.ja2
-rw-r--r--docs/manual/mod/mod_rewrite.html.en36
-rw-r--r--docs/manual/mod/mod_rewrite.xml36
-rw-r--r--include/http_log.h14
-rw-r--r--modules/experimental/mod_disk_cache.c3
-rw-r--r--modules/proxy/proxy_http.c18
-rw-r--r--modules/ssl/ssl_engine_init.c4
-rw-r--r--modules/ssl/ssl_scache_dbm.c8
-rw-r--r--modules/ssl/ssl_scache_shmcb.c4
-rw-r--r--modules/ssl/ssl_toolkit_compat.h25
-rw-r--r--server/core.c1
-rw-r--r--server/log.c47
-rw-r--r--server/mpm/worker/worker.c8
-rw-r--r--server/protocol.c9
-rw-r--r--support/win32/ApacheMonitor.c4
40 files changed, 675 insertions, 516 deletions
diff --git a/CHANGES b/CHANGES
index 3e51c2b053..4f6025588b 100644
--- a/CHANGES
+++ b/CHANGES
@@ -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
diff --git a/STATUS b/STATUS
index 4b9472883d..32448e1710 100644
--- a/STATUS
+++ b/STATUS
@@ -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))