You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by mt...@apache.org on 2004/08/01 15:22:19 UTC
cvs commit: jakarta-tomcat-connectors/ajp/ajplib/test httpd_wrap.h httpd_wrap.c
mturk 2004/08/01 06:22:19
Modified: ajp/ajplib/test httpd_wrap.h httpd_wrap.c
Log:
Added few more compat functions, like ap_create_conn_config, etc...
Revision Changes Path
1.9 +48 -4 jakarta-tomcat-connectors/ajp/ajplib/test/httpd_wrap.h
Index: httpd_wrap.h
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/ajp/ajplib/test/httpd_wrap.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- httpd_wrap.h 30 Jul 2004 10:20:00 -0000 1.8
+++ httpd_wrap.h 1 Aug 2004 13:22:19 -0000 1.9
@@ -31,6 +31,13 @@
#define AP_DECLARE(type) type
#define AP_DECLARE_NONSTD(type) type
#define AP_DECLARE_DATA
+/**
+ * @internal
+ * modules should not used functions marked AP_CORE_DECLARE
+ */
+#ifndef AP_CORE_DECLARE
+# define AP_CORE_DECLARE AP_DECLARE
+#endif
/** The default string lengths */
#define MAX_STRING_LEN HUGE_STRING_LEN
@@ -131,6 +138,10 @@
((x) == HTTP_SERVICE_UNAVAILABLE) || \
((x) == HTTP_NOT_IMPLEMENTED))
+/* Maximum number of dynamically loaded modules */
+#ifndef DYNAMIC_MODULE_LIMIT
+#define DYNAMIC_MODULE_LIMIT 64
+#endif
/* Default administrator's address */
#define DEFAULT_ADMIN "[no address given]"
/* The timeout for waiting for messages */
@@ -238,6 +249,14 @@
* The method mask bit to shift for anding with a bitmask.
*/
#define AP_METHOD_BIT ((apr_int64_t)1)
+
+/*
+ * This is a convenience macro to ease with checking a mask
+ * against a method name.
+ */
+#define AP_METHOD_CHECK_ALLOWED(mask, methname) \
+ ((mask) & (AP_METHOD_BIT << ap_method_number_of((methname))))
+
/** @} */
/** default HTTP Server protocol */
@@ -270,7 +289,8 @@
typedef struct request_rec request_rec;
typedef struct conn_rec conn_rec;
typedef struct server_rec server_rec;
-
+typedef struct ap_conf_vector_t ap_conf_vector_t;
+
/* fake structure definitions */
/** A structure that represents one process */
@@ -382,10 +402,9 @@
/** A struct containing the components of URI */
apr_uri_t parsed_uri;
/** Options set in config files, etc. */
- void *per_dir_config;
+ struct ap_conf_vector_t *per_dir_config;
/** Notes on *this* request */
- void *request_config;
-
+ struct ap_conf_vector_t *request_config;
};
/** Structure to store things which are per connection */
@@ -414,6 +433,8 @@
char *local_host;
/** ID of this connection; unique at any point in time */
long id;
+ /** Notes on *this* connection */
+ struct ap_conf_vector_t *conn_config;
/** send note from one module to another, must remain valid for all
* requests on this conn */
apr_table_t *notes;
@@ -703,6 +724,29 @@
* for the AddOutputFilterByType directive to work correctly.
*/
AP_DECLARE(void) ap_set_content_type(request_rec *r, const char *ct);
+
+/**
+ * Setup the config vector for a request_rec
+ * @param p The pool to allocate the config vector from
+ * @return The config vector
+ */
+AP_CORE_DECLARE(ap_conf_vector_t*) ap_create_request_config(apr_pool_t *p);
+
+/* For http_connection.c... */
+/**
+ * Setup the config vector for a connection_rec
+ * @param p The pool to allocate the config vector from
+ * @return The config vector
+ */
+AP_CORE_DECLARE(ap_conf_vector_t*) ap_create_conn_config(apr_pool_t *p);
+
+/**
+ * Get the method number associated with the given string, assumed to
+ * contain an HTTP method. Returns M_INVALID if not recognized.
+ * @param method A string containing a valid HTTP method
+ * @return The method number
+ */
+AP_DECLARE(int) ap_method_number_of(const char *method);
/**
* create the request_rec structure from fake client connection
1.12 +39 -2 jakarta-tomcat-connectors/ajp/ajplib/test/httpd_wrap.c
Index: httpd_wrap.c
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/ajp/ajplib/test/httpd_wrap.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- httpd_wrap.c 30 Jul 2004 10:20:00 -0000 1.11
+++ httpd_wrap.c 1 Aug 2004 13:22:19 -0000 1.12
@@ -232,6 +232,7 @@
c->sbh = sbh;
+ c->conn_config = ap_create_conn_config(ptrans);
/* Got a connection structure, so initialize what fields we can
* (the rest are zeroed out by pcalloc).
*/
@@ -501,6 +502,41 @@
/* NOTREACHED */
}
+/* Get the method number associated with the given string, assumed to
+ * contain an HTTP method. Returns M_INVALID if not recognized.
+ *
+ * This is the first step toward placing method names in a configurable
+ * list. Hopefully it (and other routines) can eventually be moved to
+ * something like a mod_http_methods.c, complete with config stuff.
+ */
+AP_DECLARE(int) ap_method_number_of(const char *method)
+{
+ apr_size_t len = strlen(method);
+ int which = lookup_builtin_method(method, len);
+
+ if (which != UNKNOWN_METHOD)
+ return which;
+
+ return M_INVALID;
+}
+
+static ap_conf_vector_t *create_empty_config(apr_pool_t *p)
+{
+ void *conf_vector = apr_pcalloc(p, sizeof(void *) *
+ (DYNAMIC_MODULE_LIMIT));
+ return conf_vector;
+}
+
+AP_CORE_DECLARE(ap_conf_vector_t *) ap_create_request_config(apr_pool_t *p)
+{
+ return create_empty_config(p);
+}
+
+AP_CORE_DECLARE(ap_conf_vector_t *) ap_create_conn_config(apr_pool_t *p)
+{
+ return create_empty_config(p);
+}
+
AP_DECLARE(apr_status_t) ap_wrap_make_request(request_rec *r, const char *url,
const char *method,
const char *content_type,
@@ -524,6 +560,7 @@
r->method = method;
r->protocol = AP_SERVER_PROTOCOL;
r->proto_num = HTTP_VERSION(1, 1);
+ r->request_config = ap_create_request_config(r->pool);
if ((rc = apr_uri_parse(r->pool, url, &r->parsed_uri)) != APR_SUCCESS) {
ap_log_rerror(APLOG_MARK, APLOG_ERR, rc, r, "error parsing uri");
@@ -589,8 +626,8 @@
AP_DECLARE(int) ap_should_client_block(request_rec *r)
{
/* First check if we have already read the request body */
-
- if (r->read_length || r->remaining <= 0)
+ /* Since we are not using chunked skip the readed checking */
+ if (r->read_length)
return 0;
else
return 1;
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org