Author: mturk
Date: Sat May 5 10:49:41 2012
New Revision: 1334392
URL: http://svn.apache.org/viewvc?rev=1334392&view=rev
Log:
Make sure address is correctly resolved
Modified:
tomcat/jk/trunk/native/common/jk_ajp_common.c
tomcat/jk/trunk/native/common/jk_shm.c
Modified: tomcat/jk/trunk/native/common/jk_ajp_common.c
URL:
http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_ajp_common.c?rev=1334392&r1=1334391&r2=1334392&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_ajp_common.c (original)
+++ tomcat/jk/trunk/native/common/jk_ajp_common.c Sat May 5 10:49:41 2012
@@ -1065,11 +1065,15 @@ void jk_ajp_pull(ajp_worker_t * aw, int
jk_shm_unlock();
if (address_change == JK_TRUE && port != 0) {
+ aw->port = port;
+ strncpy(aw->host, host, JK_SHM_STR_SIZ);
if (!jk_resolve(host, port, &inet_addr,
aw->worker.we->pool, l)) {
jk_log(l, JK_LOG_ERROR,
"Failed resolving address '%s:%d' for worker '%s'.",
host, port, aw->name);
+ /* Disable contact */
+ aw->port = 0;
}
else {
unsigned int i;
@@ -1086,8 +1090,6 @@ void jk_ajp_pull(ajp_worker_t * aw, int
aw->s->connected--;
}
}
- aw->port = port;
- strncpy(aw->host, host, JK_SHM_STR_SIZ);
memcpy(&(aw->worker_inet_addr), &inet_addr, sizeof(inet_addr));
JK_LEAVE_CS(&aw->cs);
}
@@ -2684,9 +2686,8 @@ int ajp_validate(jk_worker_t *pThis,
p->name, p->host, p->port);
/* Copy the contact to shm
*/
- if (p->sequence == 0) {
+ if (p->s->h.sequence == 0) {
/* Initial setup.
- * Invalidate addr_sequence so that the address in resolved.
*/
if (p->port > 0) {
if (!jk_resolve(p->host, p->port, &p->worker_inet_addr,
we->pool, l)) {
@@ -2699,15 +2700,8 @@ int ajp_validate(jk_worker_t *pThis,
"worker %s contact is disabled",
p->name);
}
- else {
- p->s->port = p->port = 0;
- if (JK_IS_DEBUG_LEVEL(l))
- jk_log(l, JK_LOG_DEBUG,
- "worker %s contact is disabled",
- p->name);
- }
}
- p->addr_sequence = p->s->addr_sequence;
+ p->s->addr_sequence = 1;
p->s->last_maintain_time = time(NULL);
p->s->last_reset = p->s->last_maintain_time;
jk_ajp_push(p, JK_TRUE, l);
@@ -2719,8 +2713,8 @@ int ajp_validate(jk_worker_t *pThis,
jk_log(l, JK_LOG_DEBUG,
"worker %s contact already configured (%u->%u",
p->name, p->s->addr_sequence, p->addr_sequence);
- jk_ajp_pull(p, JK_TRUE, l);
- }
+ jk_ajp_pull(p, JK_TRUE, l);
+ }
JK_TRACE_EXIT(l);
return JK_TRUE;
}
Modified: tomcat/jk/trunk/native/common/jk_shm.c
URL:
http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_shm.c?rev=1334392&r1=1334391&r2=1334392&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_shm.c (original)
+++ tomcat/jk/trunk/native/common/jk_shm.c Sat May 5 10:49:41 2012
@@ -295,6 +295,7 @@ int jk_shm_open(const char *fname, int s
* if the number of workers change between
* open and attach or between two attach operations.
*/
+#if 0
if (jk_shmem.hdr->h.data.childs > 1) {
if (JK_IS_DEBUG_LEVEL(l)) {
jk_log(l, JK_LOG_DEBUG,
@@ -302,7 +303,6 @@ int jk_shm_open(const char *fname, int s
jk_shmem.hdr->h.data.childs);
}
}
-#if 0
jk_shmem.hdr->h.data.pos = 0;
jk_shmem.hdr->h.data.workers = 0;
#endif
@@ -316,9 +316,11 @@ int jk_shm_open(const char *fname, int s
JK_LEAVE_CS(&jk_shmem.cs);
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
- "%s shared memory %s size=%u workers=%d free=%u addr=%#lx",
+ "%s shared memory %s [%d] size=%u workers=%d free=%u addr=%#lx",
attached ? "Attached" : "Initialized",
- jk_shm_name(), jk_shmem.size, jk_shmem.hdr->h.data.workers,
+ jk_shm_name(),
+ jk_shmem.hdr->h.data.childs,
+ jk_shmem.size, jk_shmem.hdr->h.data.workers - 1,
jk_shmem.hdr->h.data.size - jk_shmem.hdr->h.data.pos,
jk_shmem.hdr);
JK_TRACE_EXIT(l);
@@ -626,16 +628,17 @@ static int do_shm_open(const char *fname
jk_shmem.hdr);
}
else {
- unsigned int nchild;
jk_shmem.hdr->h.data.childs++;
jk_shmem.attached = (int)getpid();
- nchild = jk_shmem.hdr->h.data.childs;
if (JK_IS_DEBUG_LEVEL(l))
jk_log(l, JK_LOG_DEBUG,
- "Attached shared memory %s [%d] size=%u free=%u addr=%#lx",
- jk_shm_name(), nchild, jk_shmem.size,
+ "Attached shared memory %s [%d] size=%u workers=%u free=%u
addr=%#lx",
+ jk_shm_name(),
+ jk_shmem.hdr->h.data.childs,
+ jk_shmem.size, jk_shmem.hdr->h.data.workers - 1,
jk_shmem.hdr->h.data.size - jk_shmem.hdr->h.data.pos,
jk_shmem.hdr);
+#if 0
/*
* Reset the shared memory so that
* alloc works even for attached memory.
@@ -652,6 +655,7 @@ static int do_shm_open(const char *fname
}
jk_shmem.hdr->h.data.pos = 0;
jk_shmem.hdr->h.data.workers = 0;
+#endif
}
if ((rc = do_shm_open_lock(jk_shmem.filename, attached, l))) {
if (!attached) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]