You are viewing a plain text version of this content. The canonical link for it is here.
Posted to apreq-cvs@httpd.apache.org by jo...@apache.org on 2004/11/30 08:06:37 UTC
svn commit: r106989 - in httpd/apreq/trunk: . env glue/perl/xsbuilder/Apache/Upload src t
Author: joes
Date: Mon Nov 29 23:06:36 2004
New Revision: 106989
URL: http://svn.apache.org/viewcvs?view=rev&rev=106989
Log:
Add apreq_env_bucket_alloc() to get an allocator directly from the
environment instead of creating them from a pool. This is an
ABI change, starting with libapreq2-2.0.23.
Modified:
httpd/apreq/trunk/CHANGES
httpd/apreq/trunk/STATUS
httpd/apreq/trunk/env/mod_apreq.c
httpd/apreq/trunk/glue/perl/xsbuilder/Apache/Upload/Apache__Upload.h
httpd/apreq/trunk/src/apreq_env.c
httpd/apreq/trunk/src/apreq_env.h
httpd/apreq/trunk/src/apreq_parsers.c
httpd/apreq/trunk/src/apreq_version.h
httpd/apreq/trunk/t/parsers.c
httpd/apreq/trunk/t/testall.c
Modified: httpd/apreq/trunk/CHANGES
Url: http://svn.apache.org/viewcvs/httpd/apreq/trunk/CHANGES?view=diff&rev=106989&p1=httpd/apreq/trunk/CHANGES&r1=106988&p2=httpd/apreq/trunk/CHANGES&r2=106989
==============================================================================
--- httpd/apreq/trunk/CHANGES (original)
+++ httpd/apreq/trunk/CHANGES Mon Nov 29 23:06:36 2004
@@ -5,6 +5,11 @@
@section v2_05 Changes with libapreq2-2.05
+- C API [joes]
+ Add apreq_env_bucket_alloc() to get an allocator directly from the
+ environment instead of creating them from a pool. This is an
+ ABI change, starting with libapreq2.so.2.0.23.
+
- Build system [joes]
Add --with-apache2-httpd option so users can override apxs's
notion of where the httpd executable is. XSBuilder's header
Modified: httpd/apreq/trunk/STATUS
Url: http://svn.apache.org/viewcvs/httpd/apreq/trunk/STATUS?view=diff&rev=106989&p1=httpd/apreq/trunk/STATUS&r1=106988&p2=httpd/apreq/trunk/STATUS&r2=106989
==============================================================================
--- httpd/apreq/trunk/STATUS (original)
+++ httpd/apreq/trunk/STATUS Mon Nov 29 23:06:36 2004
@@ -49,9 +49,6 @@
- There are too many calls to apreq_env_pool()- lots of these
can be eliminated by caching the pool in the parser's context.
- - Add apreq_env_bucket_alloc(env) function to get a per-request
- bucket allocator, which will help the parsers to conserve memory.
-
- in glue/perl/t/apreq/cgi.t on Win32, printing to the error log
hangs if the strings involved are about 10000 in size.
This doesn't occur in the env/cgi tests - why?
Modified: httpd/apreq/trunk/env/mod_apreq.c
Url: http://svn.apache.org/viewcvs/httpd/apreq/trunk/env/mod_apreq.c?view=diff&rev=106989&p1=httpd/apreq/trunk/env/mod_apreq.c&r1=106988&p2=httpd/apreq/trunk/env/mod_apreq.c&r2=106989
==============================================================================
--- httpd/apreq/trunk/env/mod_apreq.c (original)
+++ httpd/apreq/trunk/env/mod_apreq.c Mon Nov 29 23:06:36 2004
@@ -169,7 +169,7 @@
#define APREQ_MODULE_NAME "APACHE2"
-#define APREQ_MODULE_MAGIC_NUMBER 20041119
+#define APREQ_MODULE_MAGIC_NUMBER 20041130
static void apache2_log(const char *file, int line, int level,
apr_status_t status, void *env, const char *fmt,
@@ -193,6 +193,12 @@
return r->pool;
}
+static apr_bucket_alloc_t *apache2_bucket_alloc(void *env)
+{
+ dR;
+ return r->connection->bucket_alloc;
+}
+
static const char *apache2_header_in(void *env, const char *name)
{
dR;
@@ -364,7 +370,7 @@
}
}
- alloc = apr_bucket_alloc_create(r->pool);
+ alloc = r->connection->bucket_alloc;
ctx = apr_palloc(r->pool, sizeof *ctx);
f->ctx = ctx;
Modified: httpd/apreq/trunk/glue/perl/xsbuilder/Apache/Upload/Apache__Upload.h
Url: http://svn.apache.org/viewcvs/httpd/apreq/trunk/glue/perl/xsbuilder/Apache/Upload/Apache__Upload.h?view=diff&rev=106989&p1=httpd/apreq/trunk/glue/perl/xsbuilder/Apache/Upload/Apache__Upload.h&r1=106988&p2=httpd/apreq/trunk/glue/perl/xsbuilder/Apache/Upload/Apache__Upload.h&r2=106989
==============================================================================
--- httpd/apreq/trunk/glue/perl/xsbuilder/Apache/Upload/Apache__Upload.h (original)
+++ httpd/apreq/trunk/glue/perl/xsbuilder/Apache/Upload/Apache__Upload.h Mon Nov 29 23:06:36 2004
@@ -150,7 +150,7 @@
upload = apreq_make_param(p, name, nlen, value, vlen);
- upload->bb = apr_brigade_create(p, apr_bucket_alloc_create(p));
+ upload->bb = apr_brigade_create(p, apreq_env_bucket_alloc(env));
b = apr_bucket_file_create(f, 0, finfo.size, p, upload->bb->bucket_alloc);
APR_BRIGADE_INSERT_TAIL(upload->bb, b);
b = apr_bucket_immortal_create("", 0, upload->bb->bucket_alloc);
Modified: httpd/apreq/trunk/src/apreq_env.c
Url: http://svn.apache.org/viewcvs/httpd/apreq/trunk/src/apreq_env.c?view=diff&rev=106989&p1=httpd/apreq/trunk/src/apreq_env.c&r1=106988&p2=httpd/apreq/trunk/src/apreq_env.c&r2=106989
==============================================================================
--- httpd/apreq/trunk/src/apreq_env.c (original)
+++ httpd/apreq/trunk/src/apreq_env.c Mon Nov 29 23:06:36 2004
@@ -53,6 +53,11 @@
return apreq_env->pool(env);
}
+APREQ_DECLARE(apr_bucket_alloc_t *) apreq_env_bucket_alloc(void *env)
+{
+ return apreq_env->bucket_alloc(env);
+}
+
APREQ_DECLARE(apreq_jar_t *) apreq_env_jar(void *env, apreq_jar_t *jar)
{
return apreq_env->jar(env,jar);
@@ -145,11 +150,16 @@
#define APREQ_MODULE_NAME "CGI"
-#define APREQ_MODULE_MAGIC_NUMBER 20040913
+#define APREQ_MODULE_MAGIC_NUMBER 20041130
static apr_pool_t *cgi_pool(void *env)
{
return (apr_pool_t *)env;
+}
+
+static apr_bucket_alloc_t *cgi_bucket_alloc(void *env)
+{
+ return apr_bucket_alloc_create((apr_pool_t *)env);
}
static const char *cgi_query_string(void *env)
Modified: httpd/apreq/trunk/src/apreq_env.h
Url: http://svn.apache.org/viewcvs/httpd/apreq/trunk/src/apreq_env.h?view=diff&rev=106989&p1=httpd/apreq/trunk/src/apreq_env.h&r1=106988&p2=httpd/apreq/trunk/src/apreq_env.h&r2=106989
==============================================================================
--- httpd/apreq/trunk/src/apreq_env.h (original)
+++ httpd/apreq/trunk/src/apreq_env.h Mon Nov 29 23:06:36 2004
@@ -93,6 +93,14 @@
APREQ_DECLARE(apr_pool_t *) apreq_env_pool(void *env);
/**
+ * Bucket allocator associated with the environment.
+ * @param env The current environment
+ * @return The associated bucket allocator.
+ */
+
+APREQ_DECLARE(apr_bucket_alloc_t *) apreq_env_bucket_alloc(void *env);
+
+/**
* Get/set the jar currently associated to the environment.
* @param env The current environment.
* @param jar New Jar to associate.
@@ -238,6 +246,7 @@
apr_uint32_t magic_number;
void (*log)(const char *,int,int,apr_status_t,void *,const char *,va_list);
apr_pool_t *(*pool)(void *);
+ apr_bucket_alloc_t *(*bucket_alloc)(void *);
apreq_jar_t *(*jar)(void *,apreq_jar_t *);
apreq_request_t *(*request)(void *,apreq_request_t *);
const char *(*query_string)(void *);
@@ -259,9 +268,9 @@
* @param mmn Magic number (i.e. version number) of this environment.
*/
#define APREQ_ENV_MODULE(pre, name, mmn) const apreq_env_t pre##_module = { \
- name, mmn, pre##_log, pre##_pool, pre##_jar, pre##_request, \
- pre##_query_string, pre##_header_in, pre##_header_out, pre##_read, \
- pre##_temp_dir, pre##_max_body, pre##_max_brigade }
+ name, mmn, pre##_log, pre##_pool, pre##_bucket_alloc, pre##_jar, \
+ pre##_request, pre##_query_string, pre##_header_in, pre##_header_out, \
+ pre##_read, pre##_temp_dir, pre##_max_body, pre##_max_brigade }
/**
Modified: httpd/apreq/trunk/src/apreq_parsers.c
Url: http://svn.apache.org/viewcvs/httpd/apreq/trunk/src/apreq_parsers.c?view=diff&rev=106989&p1=httpd/apreq/trunk/src/apreq_parsers.c&r1=106988&p2=httpd/apreq/trunk/src/apreq_parsers.c&r2=106989
==============================================================================
--- httpd/apreq/trunk/src/apreq_parsers.c (original)
+++ httpd/apreq/trunk/src/apreq_parsers.c Mon Nov 29 23:06:36 2004
@@ -244,7 +244,7 @@
struct url_ctx *ctx;
if (parser->ctx == NULL) {
- apr_bucket_alloc_t *bb_alloc = apr_bucket_alloc_create(pool);
+ apr_bucket_alloc_t *bb_alloc = apreq_env_bucket_alloc(env);
ctx = apr_palloc(pool, sizeof *ctx);
ctx->bb = apr_brigade_create(pool, bb_alloc);
parser->ctx = ctx;
@@ -439,7 +439,7 @@
struct hdr_ctx *ctx;
if (parser->ctx == NULL) {
- apr_bucket_alloc_t *bb_alloc = apr_bucket_alloc_create(pool);
+ apr_bucket_alloc_t *bb_alloc = apreq_env_bucket_alloc(env);
ctx = apr_pcalloc(pool, sizeof *ctx);
ctx->bb = apr_brigade_create(pool, bb_alloc);
parser->ctx = ctx;
@@ -850,7 +850,7 @@
char *ct;
apr_size_t blen;
apr_pool_t *pool = apreq_env_pool(env);
- apr_bucket_alloc_t *bucket_alloc = apr_bucket_alloc_create(pool);
+ apr_bucket_alloc_t *bucket_alloc = apreq_env_bucket_alloc(env);
struct mfd_ctx *ctx = apr_palloc(pool, sizeof *ctx);
ctx->status = MFD_INIT;
@@ -1282,8 +1282,7 @@
ctx->status = GEN_INCOMPLETE;
ctx->param = apreq_make_param(pool,
"_dummy_", strlen("_dummy_"), "", 0);
- ctx->param->bb = apr_brigade_create(pool,
- apr_bucket_alloc_create(pool));
+ ctx->param->bb = apr_brigade_create(pool, apreq_env_bucket_alloc(env));
ctx->param->info = apr_table_make(pool, APREQ_NELTS);
}
Modified: httpd/apreq/trunk/src/apreq_version.h
Url: http://svn.apache.org/viewcvs/httpd/apreq/trunk/src/apreq_version.h?view=diff&rev=106989&p1=httpd/apreq/trunk/src/apreq_version.h&r1=106988&p2=httpd/apreq/trunk/src/apreq_version.h&r2=106989
==============================================================================
--- httpd/apreq/trunk/src/apreq_version.h (original)
+++ httpd/apreq/trunk/src/apreq_version.h Mon Nov 29 23:06:36 2004
@@ -61,7 +61,7 @@
#define APREQ_MINOR_VERSION 0
/** patch level */
-#define APREQ_PATCH_VERSION 22
+#define APREQ_PATCH_VERSION 23
/**
* This symbol is defined for internal, "development" copies of libapreq.
Modified: httpd/apreq/trunk/t/parsers.c
Url: http://svn.apache.org/viewcvs/httpd/apreq/trunk/t/parsers.c?view=diff&rev=106989&p1=httpd/apreq/trunk/t/parsers.c&r1=106988&p2=httpd/apreq/trunk/t/parsers.c&r2=106989
==============================================================================
--- httpd/apreq/trunk/t/parsers.c (original)
+++ httpd/apreq/trunk/t/parsers.c Mon Nov 29 23:06:36 2004
@@ -318,7 +318,7 @@
apr_status_t rv;
apreq_param_t *dummy;
apreq_request_t *req = apreq_request(APREQ_XML_ENCTYPE, "");
- apr_bucket_brigade *bb = apr_brigade_create(p,
+ apr_bucket_brigade *bb = apr_brigade_create(p,
apr_bucket_alloc_create(p));
apr_bucket *e = apr_bucket_immortal_create(xml_data,
strlen(xml_data),
Modified: httpd/apreq/trunk/t/testall.c
Url: http://svn.apache.org/viewcvs/httpd/apreq/trunk/t/testall.c?view=diff&rev=106989&p1=httpd/apreq/trunk/t/testall.c&r1=106988&p2=httpd/apreq/trunk/t/testall.c&r2=106989
==============================================================================
--- httpd/apreq/trunk/t/testall.c (original)
+++ httpd/apreq/trunk/t/testall.c Mon Nov 29 23:06:36 2004
@@ -66,6 +66,11 @@
return p;
}
+static apr_bucket_alloc_t *test_bucket_alloc(void *env)
+{
+ return apr_bucket_alloc_create(p);
+}
+
static const char *test_header_in(void *env, const char *name)
{
return env;