##
## Annotated patch file: eapi.patch
## Copyright (c) 1998-2001 Ralf S. Engelschall, All Rights Reserved.
-## Created on: 29-Jan-2001
+## Created on: 20-May-2001
##
## This file assembles changes to existing Apache source files
## between the original Apache and the patched variant. It can be
| Patch in implementation of the EAPI rule.
+---------------------------------------------------------------------------
Index: src/Configure
---- src/Configure 2001/01/29 19:36:36 1.1.1.13
-+++ src/Configure 2001/01/29 19:38:39 1.15
-@@ -1808,6 +1808,72 @@
+--- src/Configure 2001/05/20 08:16:15 1.1.1.15
++++ src/Configure 2001/05/20 08:23:01 1.17
+@@ -1829,6 +1829,72 @@
fi
####################################################################
| Add the build support for the ap_hook.c and ap_ctx.c sources (Unix)
+---------------------------------------------------------------------------
Index: src/ap/Makefile.tmpl
---- src/ap/Makefile.tmpl 2000/10/12 08:17:28 1.1.1.6
-+++ src/ap/Makefile.tmpl 2000/10/12 08:31:47 1.6
+--- src/ap/Makefile.tmpl 2001/05/20 08:16:15 1.1.1.7
++++ src/ap/Makefile.tmpl 2001/05/20 08:23:01 1.7
@@ -6,7 +6,8 @@
LIB=libap.a
OBJS=ap_cpystrn.o ap_execve.o ap_fnmatch.o ap_getpass.o ap_md5c.o ap_signal.o \
-- ap_slack.o ap_snprintf.o ap_sha1.o ap_checkpass.o ap_base64.o
-+ ap_slack.o ap_snprintf.o ap_sha1.o ap_checkpass.o ap_base64.o \
+- ap_slack.o ap_snprintf.o ap_sha1.o ap_checkpass.o ap_base64.o ap_ebcdic.o
++ ap_slack.o ap_snprintf.o ap_sha1.o ap_checkpass.o ap_base64.o ap_ebcdic.o \
+ ap_hook.o ap_ctx.o ap_mm.o
.c.o:
| Add the build support for the ap_hook.c and ap_ctx.c sources (Win32)
+---------------------------------------------------------------------------
Index: src/ap/ap.mak
---- src/ap/ap.mak 2001/01/23 11:35:02 1.1.1.7
-+++ src/ap/ap.mak 2001/01/23 11:48:05 1.7
+--- src/ap/ap.mak 2001/05/20 08:16:15 1.1.1.8
++++ src/ap/ap.mak 2001/05/20 08:23:01 1.8
@@ -52,6 +52,9 @@
-@erase "$(INTDIR)\ap_cpystrn.obj"
-@erase "$(INTDIR)\ap_fnmatch.obj"
| shared memory pools.
+---------------------------------------------------------------------------
Index: src/include/ap_alloc.h
---- src/include/ap_alloc.h 2001/01/23 11:35:07 1.1.1.2
-+++ src/include/ap_alloc.h 2001/01/23 11:48:05 1.3
+--- src/include/ap_alloc.h 2001/02/28 19:40:47 1.1.1.3
++++ src/include/ap_alloc.h 2001/02/28 19:44:33 1.4
@@ -95,6 +95,15 @@
pool * ap_init_alloc(void); /* Set up everything */
void ap_cleanup_alloc(void);
| function.
+---------------------------------------------------------------------------
Index: src/include/httpd.h
---- src/include/httpd.h 2001/01/29 19:36:42 1.1.1.13
-+++ src/include/httpd.h 2001/01/29 19:38:39 1.22
+--- src/include/httpd.h 2001/05/20 08:16:17 1.1.1.15
++++ src/include/httpd.h 2001/05/20 08:23:02 1.25
@@ -70,7 +70,19 @@
/* Headers in which EVERYONE has an interest... */
#define DEFAULT_HTTPS_PORT 443
#define ap_is_default_port(port,r) ((port) == ap_default_port(r))
+#ifdef EAPI
-+#define ap_http_method(r) (ap_ctx_get((r)->ctx, "ap::http::method") != NULL ? ((char *)ap_ctx_get((r)->ctx, "ap::http::method")) : "http")
-+#define ap_default_port(r) (ap_ctx_get((r)->ctx, "ap::default::port") != NULL ? atoi((char *)ap_ctx_get((r)->ctx, "ap::default::port")) : DEFAULT_HTTP_PORT)
++#define ap_http_method(r) (((r)->ctx != NULL && ap_ctx_get((r)->ctx, "ap::http::method") != NULL) ? ((char *)ap_ctx_get((r)->ctx, "ap::http::method")) : "http")
++#define ap_default_port(r) (((r)->ctx != NULL && ap_ctx_get((r)->ctx, "ap::default::port") != NULL) ? atoi((char *)ap_ctx_get((r)->ctx, "ap::default::port")) : DEFAULT_HTTP_PORT)
+#else /* EAPI */
#define ap_http_method(r) "http"
#define ap_default_port(r) DEFAULT_HTTP_PORT
/* --------- Default user name and group name running standalone ---------- */
/* --- These may be specified as numbers by placing a # before a number --- */
-@@ -354,6 +371,19 @@
+@@ -356,6 +373,19 @@
#define SCOREBOARD_MAINTENANCE_INTERVAL 1000000
#endif
/* Number of requests to try to handle in a single process. If <= 0,
* the children don't die off. That's the default here, since I'm still
* interested in finding and stanching leaks.
-@@ -446,6 +476,9 @@
+@@ -448,6 +478,9 @@
API_EXPORT(const char *) ap_get_server_version(void);
API_EXPORT(void) ap_add_version_component(const char *component);
API_EXPORT(const char *) ap_get_server_built(void);
/* Numeric release version identifier: MMNNFFRBB: major minor fix final beta
* Always increases along the same track as the source branch.
-@@ -838,6 +871,10 @@
+@@ -851,6 +884,10 @@
* record to improve 64bit alignment the next time we need to break
* binary compatibility for some other reason.
*/
};
-@@ -886,6 +923,9 @@
+@@ -899,6 +936,9 @@
char *local_host; /* used for ap_get_server_name when
* UseCanonicalName is set to DNS
* (ignores setting of HostnameLookups) */
};
/* Per-vhost config... */
-@@ -958,6 +998,10 @@
+@@ -971,6 +1011,10 @@
int limit_req_line; /* limit on size of the HTTP request line */
int limit_req_fieldsize; /* limit on size of any request header field */
int limit_req_fields; /* limit on number of request header fields */
| is added plus the initialization of one more `ctx' variable.
+---------------------------------------------------------------------------
Index: src/main/http_main.c
---- src/main/http_main.c 2001/01/29 19:36:43 1.1.1.12
-+++ src/main/http_main.c 2001/01/29 19:38:39 1.33
+--- src/main/http_main.c 2001/05/20 08:16:18 1.1.1.14
++++ src/main/http_main.c 2001/05/20 08:23:02 1.36
@@ -260,6 +260,9 @@
int ap_listenbacklog;
int ap_dump_settings = 0;
#ifndef NETWARE
static APACHE_TLS int volatile exit_after_unblock = 0;
#endif
-@@ -1206,6 +1233,10 @@
+@@ -1209,6 +1236,10 @@
ap_log_transaction(log_req);
}
ap_bsetflag(save_req->connection->client, B_EOUT, 1);
ap_bclose(save_req->connection->client);
-@@ -1214,6 +1245,9 @@
+@@ -1217,6 +1248,9 @@
ap_longjmp(jmpbuffer, 1);
}
else { /* abort the connection */
ap_bsetflag(current_conn->client, B_EOUT, 1);
ap_bclose(current_conn->client);
current_conn->aborted = 1;
-@@ -1279,7 +1313,11 @@
+@@ -1282,7 +1316,11 @@
}
#endif
{
unsigned int old;
-@@ -1515,10 +1553,16 @@
+@@ -1518,10 +1556,16 @@
/* Send any leftover data to the client, but never try to again */
if (ap_bflush(r->connection->client) == -1) {
ap_bsetflag(r->connection->client, B_EOUT, 1);
/* Close our half of the connection --- send the client a FIN */
-@@ -2229,6 +2273,9 @@
+@@ -2232,6 +2276,9 @@
/* Clear the pool - including any registered cleanups */
ap_destroy_pool(pglobal);
#endif
exit(code);
}
-@@ -3223,6 +3270,24 @@
+@@ -3226,6 +3273,24 @@
conn->remote_addr = *remaddr;
conn->remote_ip = ap_pstrdup(conn->pool,
inet_ntoa(conn->remote_addr.sin_addr));
return conn;
}
-@@ -3545,6 +3610,11 @@
- else {
- ap_note_cleanups_for_socket(p, fd);
- }
-+ if (fd >= 0) {
-+ FD_SET(fd, &listenfds);
-+ if (fd > listenmaxfd)
-+ listenmaxfd = fd;
-+ }
- FD_SET(fd, &listenfds);
- if (fd > listenmaxfd)
- listenmaxfd = fd;
-@@ -3644,6 +3714,15 @@
+@@ -3648,6 +3713,15 @@
printf("Server's Module Magic Number: %u:%u\n",
MODULE_MAGIC_NUMBER_MAJOR, MODULE_MAGIC_NUMBER_MINOR);
printf("Server compiled with....\n");
#ifdef BIG_SECURITY_HOLE
printf(" -D BIG_SECURITY_HOLE\n");
#endif
-@@ -3797,6 +3876,22 @@
+@@ -3801,6 +3875,22 @@
ap_server_pre_read_config = ap_make_array(pcommands, 1, sizeof(char *));
ap_server_post_read_config = ap_make_array(pcommands, 1, sizeof(char *));
ap_server_config_defines = ap_make_array(pcommands, 1, sizeof(char *));
}
#ifndef MULTITHREAD
-@@ -4216,6 +4311,9 @@
+@@ -4220,6 +4310,9 @@
ap_sync_scoreboard_image();
if (ap_scoreboard_image->global.running_generation != ap_my_generation) {
ap_bclose(conn_io);
clean_child_exit(0);
}
-@@ -4244,6 +4342,9 @@
+@@ -4248,6 +4341,9 @@
*/
#ifdef NO_LINGCLOSE
ap_bclose(conn_io); /* just close it */
#else
if (r && r->connection
-@@ -4254,6 +4355,9 @@
+@@ -4258,6 +4354,9 @@
lingering_close(r);
}
else {
ap_bsetflag(conn_io, B_EOUT, 1);
ap_bclose(conn_io);
}
-@@ -4978,16 +5082,31 @@
+@@ -4982,16 +5081,31 @@
usage(argv[0]);
}
}
}
child_timeouts = !ap_standalone || one_process;
-@@ -5121,6 +5240,10 @@
+@@ -5121,6 +5235,10 @@
ap_destroy_pool(r->pool);
}
ap_bclose(cio);
}
exit(0);
-@@ -5467,6 +5590,9 @@
+@@ -5467,6 +5585,9 @@
ap_kill_cleanups_for_socket(ptrans, csd);
#ifdef NO_LINGCLOSE
ap_bclose(conn_io); /* just close it */
#else
if (r && r->connection
-@@ -5477,6 +5603,9 @@
+@@ -5477,6 +5598,9 @@
lingering_close(r);
}
else {
ap_bsetflag(conn_io, B_EOUT, 1);
ap_bclose(conn_io);
}
-@@ -6979,6 +7108,9 @@
- sizeof(ap_server_root));
- }
- }
+@@ -7002,6 +7126,10 @@
+ if (!conf_specified)
+ ap_cpystrn(ap_server_confname, SERVER_CONFIG_FILE, sizeof(ap_server_confname));
+
+#ifdef EAPI
+ ap_init_alloc_shared(TRUE);
+#endif
-
- ap_cpystrn(ap_server_confname,
- ap_server_root_relative(pcommands, ap_server_confname),
-@@ -7020,6 +7152,9 @@
++
+ if (!ap_os_is_path_absolute(ap_server_confname))
+ ap_cpystrn(ap_server_confname,
+ ap_server_root_relative(pcommands, ap_server_confname),
+@@ -7043,6 +7171,9 @@
}
#else /* ndef WIN32 */
server_conf = ap_read_config(pconf, ptrans, ap_server_confname);
| conn_rec structures.
+---------------------------------------------------------------------------
Index: src/main/http_request.c
---- src/main/http_request.c 2001/01/23 11:35:09 1.1.1.10
-+++ src/main/http_request.c 2001/01/23 11:48:07 1.9
-@@ -1387,6 +1387,9 @@
- new->no_local_copy = r->no_local_copy;
- new->read_length = r->read_length; /* We can only read it once */
- new->vlist_validator = r->vlist_validator;
+--- src/main/http_request.c 2001/05/20 08:16:18 1.1.1.12
++++ src/main/http_request.c 2001/05/20 08:23:02 1.12
+@@ -1374,6 +1374,10 @@
+
+ new->method = r->method;
+ new->method_number = r->method_number;
+#ifdef EAPI
++ /* initialize context _BEFORE_ ap_parse_uri() call */
+ new->ctx = r->ctx;
+#endif /* EAPI */
-
- ap_table_setn(new->subprocess_env, "REDIRECT_STATUS",
- ap_psprintf(r->pool, "%d", r->status));
+ ap_parse_uri(new, new_uri);
+ new->request_config = ap_create_request_config(r->pool);
+ new->per_dir_config = r->server->lookup_defaults;
+---------------------------------------------------------------------------
| Just add the initialization of the `ctx' variable for
| request_rec structures.
+---------------------------------------------------------------------------
Index: src/main/http_protocol.c
---- src/main/http_protocol.c 2001/01/23 11:35:09 1.1.1.11
-+++ src/main/http_protocol.c 2001/01/23 11:48:06 1.11
-@@ -1105,6 +1105,10 @@
+--- src/main/http_protocol.c 2001/05/20 08:16:18 1.1.1.13
++++ src/main/http_protocol.c 2001/05/20 08:23:02 1.13
+@@ -1110,6 +1110,10 @@
r->status = HTTP_REQUEST_TIME_OUT; /* Until we get a request */
r->the_request = NULL;
+#endif /* EAPI */
+
#ifdef CHARSET_EBCDIC
- ap_bsetflag(r->connection->client, B_ASCII2EBCDIC|B_EBCDIC2ASCII, 1);
- #endif
-@@ -1252,6 +1256,11 @@
+ ap_bsetflag(r->connection->client, B_ASCII2EBCDIC, r->ebcdic.conv_in = 1);
+ ap_bsetflag(r->connection->client, B_EBCDIC2ASCII, r->ebcdic.conv_out = 1);
+@@ -1258,6 +1262,11 @@
rnew->read_body = REQUEST_NO_BODY;
rnew->main = (request_rec *) r;
| Add support for loading both EAPI and AP13 modules.
+---------------------------------------------------------------------------
Index: src/modules/standard/mod_so.c
---- src/modules/standard/mod_so.c 2001/01/23 11:35:13 1.1.1.6
-+++ src/modules/standard/mod_so.c 2001/01/23 11:48:08 1.7
-@@ -263,11 +263,24 @@
+--- src/modules/standard/mod_so.c 2001/05/20 08:16:21 1.1.1.7
++++ src/modules/standard/mod_so.c 2001/05/20 08:23:02 1.8
+@@ -266,11 +266,24 @@
* Make sure the found module structure is really a module structure
*
*/
| variables from other modules.
+---------------------------------------------------------------------------
Index: src/modules/standard/mod_rewrite.c
---- src/modules/standard/mod_rewrite.c 2001/01/23 11:35:13 1.1.1.9
-+++ src/modules/standard/mod_rewrite.c 2001/01/23 11:48:08 1.7
-@@ -3637,6 +3637,15 @@
+--- src/modules/standard/mod_rewrite.c 2001/05/20 08:16:21 1.1.1.11
++++ src/modules/standard/mod_rewrite.c 2001/05/20 08:23:02 1.9
+@@ -3678,6 +3678,15 @@
}
#endif /* ndef WIN32 && NETWARE*/
| the status HTML page.
+---------------------------------------------------------------------------
Index: src/modules/standard/mod_status.c
---- src/modules/standard/mod_status.c 2001/01/23 11:35:14 1.1.1.11
-+++ src/modules/standard/mod_status.c 2001/01/23 11:48:08 1.8
-@@ -711,6 +748,12 @@
+--- src/modules/standard/mod_status.c 2001/05/20 08:16:21 1.1.1.12
++++ src/modules/standard/mod_status.c 2001/05/20 08:23:02 1.9
+@@ -715,6 +752,12 @@
</table>\n", r);
#endif
}
| to enhance it by intercepting this processing.
+---------------------------------------------------------------------------
Index: src/modules/proxy/proxy_http.c
---- src/modules/proxy/proxy_http.c 2001/01/23 11:35:10 1.1.1.9
-+++ src/modules/proxy/proxy_http.c 2001/01/23 11:48:07 1.17
+--- src/modules/proxy/proxy_http.c 2001/02/28 19:40:51 1.1.1.10
++++ src/modules/proxy/proxy_http.c 2001/02/28 19:44:34 1.18
@@ -190,6 +190,9 @@
const char *urlptr = NULL;
const char *datestr;
strp = strchr(urlptr, '/');
if (strp == NULL) {
desthost = ap_pstrdup(p, urlptr);
-@@ -244,12 +253,18 @@
+@@ -245,12 +254,18 @@
err = ap_proxy_host2addr(proxyhost, &server_hp);
if (err != NULL)
return DECLINED; /* try another */
}
sock = ap_psocket(p, PF_INET, SOCK_STREAM, IPPROTO_TCP);
-@@ -306,13 +321,41 @@
+@@ -307,13 +322,41 @@
f = ap_bcreate(p, B_RDWR | B_SOCKET);
ap_bpushfd(f, sock, sock);
| Add EAPI hooks in module structure for APXS generated samples.
+---------------------------------------------------------------------------
Index: src/support/apxs.pl
---- src/support/apxs.pl 2001/01/23 11:35:14 1.1.1.9
-+++ src/support/apxs.pl 2001/01/23 11:48:09 1.9
-@@ -654,5 +654,11 @@
+--- src/support/apxs.pl 2001/05/20 08:16:25 1.1.1.10
++++ src/support/apxs.pl 2001/05/20 08:23:03 1.10
+@@ -703,5 +703,11 @@
NULL, /* child_init */
NULL, /* child_exit */
NULL /* [#0] post read-request */
| and similar braindead platforms as DSO.
+---------------------------------------------------------------------------
Index: src/support/httpd.exp
---- src/support/httpd.exp 2000/10/12 08:17:39 1.1.1.8
-+++ src/support/httpd.exp 2000/10/12 08:31:48 1.10
-@@ -421,3 +421,59 @@
+--- src/support/httpd.exp 2001/02/28 19:40:56 1.1.1.9
++++ src/support/httpd.exp 2001/02/28 19:44:35 1.11
+@@ -422,3 +422,59 @@
XML_SetUnparsedEntityDeclHandler
XML_SetUserData
XML_UseParserAsHandlerArg
+---------------------------------------------------------------------------
Index: src/ApacheCore.def
--- src/ApacheCore.def 2001/01/23 11:35:01 1.1.1.7
-+++ src/ApacheCore.def 2001/01/23 12:38:37 1.10
-@@ -389,3 +389,70 @@
++++ src/ApacheCore.def 2001/03/03 10:46:41 1.11
+@@ -389,3 +389,69 @@
ap_stripprefix @380
ap_os_dso_load @381
ap_os_dso_error @382
+ ap_set_callback_and_alarm
+ recvwithtimeout
+ sendwithtimeout
-+ ap_aquire_pool
-+ ap_make_shared_pool
++ ap_acquire_pool
+ ap_make_shared_sub_pool
+ ap_release_pool
+ ap_mm_useable