--- tomcat/jk/trunk/native/common/jk_ajp_common.c 2014/03/31 18:53:38 1583398 +++ tomcat/jk/trunk/native/common/jk_ajp_common.c 2014/03/31 19:00:34 @@ -1117,7 +1117,7 @@ aw->s->connected--; } } - memcpy(&(aw->worker_inet_addr), &inet_addr, sizeof(inet_addr)); + jk_clone_sockaddr(&(aw->worker_inet_addr), &inet_addr); JK_LEAVE_CS(&aw->cs); } --- tomcat/jk/trunk/native/common/jk_connect.c 2014/03/31 18:53:38 1583398 +++ tomcat/jk/trunk/native/common/jk_connect.c 2014/03/31 19:00:34 @@ -328,6 +328,20 @@ #endif +/** Clone a jk_sockaddr_t + * @param out The source structure + * @param in The target structure + */ +void jk_clone_sockaddr(jk_sockaddr_t *out, jk_sockaddr_t *in) +{ + memcpy(out, in, sizeof(*in)); + /* The ipaddr_ptr member points to memory inside the struct. + * Do not copy the pointer but use the same offset relative + * to the struct start + */ + out->ipaddr_ptr = (void *)out + (in->ipaddr_ptr - (void *)in); +} + /** Resolve the host IP * @param host host or ip address * @param port port } --- tomcat/jk/trunk/native/common/jk_connect.h 2014/03/31 18:53:38 1583398 +++ tomcat/jk/trunk/native/common/jk_connect.h 2014/03/31 19:00:34 @@ -38,6 +38,8 @@ #define JK_SOCKET_EOF (-2) +void jk_clone_sockaddr(jk_sockaddr_t *out, jk_sockaddr_t *in); + int jk_resolve(const char *host, int port, jk_sockaddr_t *rc, void *pool, int prefer_ipv6, jk_logger_t *l); --- tomcat/jk/trunk/native/common/jk_status.c 2014/03/31 18:53:38 1583398 +++ tomcat/jk/trunk/native/common/jk_status.c 2014/03/31 19:00:34 @@ -3390,7 +3390,7 @@ /* This is not atomic and not thread safe */ aw->port = port; strncpy(aw->host, host, JK_SHM_STR_SIZ); - memcpy(&(aw->worker_inet_addr), &inet_addr, sizeof(inet_addr)); + jk_clone_sockaddr(&(aw->worker_inet_addr), &inet_addr); *side_effect |= JK_STATUS_NEEDS_PUSH | JK_STATUS_NEEDS_ADDR_PUSH; } } --- tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml 2014/03/31 18:53:38 1583398 +++ tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml 2014/03/31 19:00:34 @@ -40,6 +40,16 @@ new documentation project for JK was started.

+
+
+ + + + Fix status worker display of worker IP address after name or port + was changed. (rjung) + + +