Author: jfrederic.clere(a)jboss.com
Date: 2008-06-04 10:15:36 -0400 (Wed, 04 Jun 2008)
New Revision: 1654
Modified:
trunk/mod_cluster/native/mod_manager/mod_manager.c
Log:
Check the return code of ap_get_brigade().
Modified: trunk/mod_cluster/native/mod_manager/mod_manager.c
===================================================================
--- trunk/mod_cluster/native/mod_manager/mod_manager.c 2008-06-04 14:14:25 UTC (rev 1653)
+++ trunk/mod_cluster/native/mod_manager/mod_manager.c 2008-06-04 14:15:36 UTC (rev 1654)
@@ -69,6 +69,7 @@
#define SCMDUNS "SYNTAX: Command is not supported"
#define SMULALB "SYNTAX: Only one Alias in APP command"
#define SMULCTB "SYNTAX: Only one Context in APP command"
+#define SREADER "SYNTAX: %s can't read POST data"
#define TYPEMEM 2
#define MNODEUI "MEM: Can't update or insert node"
@@ -1047,6 +1048,7 @@
int errtype = 0;
char *buff;
int bufsiz=MAXMESSSIZE;
+ apr_status_t status;
if (strcmp(r->handler, "mod-cluster"))
return DECLINED;
@@ -1054,7 +1056,17 @@
/* Use a buffer to read the message */
buff = apr_pcalloc(r->pool, MAXMESSSIZE);
input_brigade = apr_brigade_create(r->connection->pool,
r->connection->bucket_alloc);
- ap_get_brigade(r->input_filters, input_brigade, AP_MODE_READBYTES, APR_BLOCK_READ,
MAXMESSSIZE);
+ status = ap_get_brigade(r->input_filters, input_brigade, AP_MODE_READBYTES,
APR_BLOCK_READ, MAXMESSSIZE);
+ if (status != APR_SUCCESS) {
+ errstring = apr_psprintf(r->pool, SREADER, r->method);
+ r->status_line = apr_psprintf(r->pool, "ERROR");
+ apr_table_setn(r->err_headers_out, "Version", VERSION_PROTOCOL);
+ apr_table_setn(r->err_headers_out, "Type", "SYNTAX");
+ apr_table_setn(r->err_headers_out, "Mess", errstring);
+ ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
+ "manager_handler %s error: %s", r->method, errstring);
+ return 500;
+ }
apr_brigade_flatten(input_brigade, buff, &bufsiz);
buff[bufsiz] = '\0';