Author: jfrederic.clere(a)jboss.com
Date: 2008-05-26 10:17:41 -0400 (Mon, 26 May 2008)
New Revision: 1617
Modified:
trunk/mod_cluster/native/mod_manager/mod_manager.c
Log:
Create the host when receiving a *_APP command containing the host.
Modified: trunk/mod_cluster/native/mod_manager/mod_manager.c
===================================================================
--- trunk/mod_cluster/native/mod_manager/mod_manager.c 2008-05-26 13:16:45 UTC (rev 1616)
+++ trunk/mod_cluster/native/mod_manager/mod_manager.c 2008-05-26 14:17:41 UTC (rev 1617)
@@ -49,6 +49,7 @@
#define DEFMAXCONTEXT 100
#define DEFMAXNODE 10
#define DEFMAXHOST 20
+#define MAXMESSSIZE 1024
/* Error messages */
#define TYPESYNTAX 1
@@ -631,8 +632,19 @@
hostinfo.id = 0;
host = read_host(hoststatsmem, &hostinfo);
if (host == NULL) {
- *errtype = TYPEMEM;
- return MHOSTRD;
+ /* If the Host doesn't exist yet create it */
+ int vid = 1; /* XXX: That is not really the right value, but that works most time
*/
+ insert_update_hosts(hoststatsmem, phost->host, node->mess.id, vid);
+ hostinfo.id = 0;
+ if (vhost->host != NULL)
+ strcpy(hostinfo.host, vhost->host);
+ else
+ hostinfo.host[0] = '\0';
+ host = read_host(hoststatsmem, &hostinfo);
+ if (host == NULL) {
+ *errtype = TYPEMEM;
+ return MHOSTRD;
+ }
}
/* Now update each context from Context: part */
@@ -794,19 +806,22 @@
apr_bucket_brigade *input_brigade;
char *errstring = NULL;
int errtype = 0;
- char buff[4096];
- int bufsiz=sizeof(buff);
+ char *buff;
+ int bufsiz=MAXMESSSIZE;
if (strcmp(r->handler, "mod-cluster"))
return DECLINED;
+
+ /* Use a buffer to read the message */
+ buff = apr_palloc(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,
sizeof(buff));
+ ap_get_brigade(r->input_filters, input_brigade, AP_MODE_READBYTES, APR_BLOCK_READ,
MAXMESSSIZE);
apr_brigade_flatten(input_brigade, buff, &bufsiz);
buff[bufsiz] = '\0';
/* XXX: Size limit it? */
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
- "manager_handler %s processing: %s", r->method, buff);
+ "manager_handler %s processing: \"%s\"",
r->method, buff);
decodeenc(buff);
if (strcasecmp(r->method, "CONFIG") == 0)
errstring = process_config(r, buff, &errtype);
Show replies by date