From a3dabf9acef327b3f83e424d6c37d63c8c737571 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Franti=C5=A1ek=20Dvo=C5=99=C3=A1k?= Date: Wed, 5 May 2010 19:36:22 +0000 Subject: [PATCH] Backport port number extraction fixes. --- org.glite.lb.client/src/notification.c | 2 +- org.glite.lb.logger/src/event_queue.c | 2 +- org.glite.lb.server/src/notification.c | 10 ++++++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/org.glite.lb.client/src/notification.c b/org.glite.lb.client/src/notification.c index 7ffe4a4..7817b2c 100644 --- a/org.glite.lb.client/src/notification.c +++ b/org.glite.lb.client/src/notification.c @@ -83,7 +83,7 @@ static void get_name_and_port(const char *address, char **name, int *port) char *n = NULL, *p; n = strdup(address); - p = strchr(n, ':'); + p = strrchr(n, ':'); if (p) { *port = atoi(p+1); diff --git a/org.glite.lb.logger/src/event_queue.c b/org.glite.lb.logger/src/event_queue.c index fb13c99..e235743 100644 --- a/org.glite.lb.logger/src/event_queue.c +++ b/org.glite.lb.logger/src/event_queue.c @@ -44,7 +44,7 @@ event_queue_create(char *server_name) struct event_queue *eq; char *p; - p = strchr(server_name, ':'); + p = strrchr(server_name, ':'); if(p) *p++ = 0; diff --git a/org.glite.lb.server/src/notification.c b/org.glite.lb.server/src/notification.c index c160593..4907ea0 100644 --- a/org.glite.lb.server/src/notification.c +++ b/org.glite.lb.server/src/notification.c @@ -119,12 +119,13 @@ int edg_wll_NotifNewServer( { char *aux; - if ( !(aux = strchr(address_override, ':')) ) + if ( !(aux = strrchr(address_override, ':')) ) { edg_wll_SetError(ctx, EINVAL, "Addres overrirde not in format host:port"); goto cleanup; } - if ( !strncmp(address_override, "0.0.0.0", aux-address_override) ) + if ( !strncmp(address_override, "0.0.0.0", aux-address_override) || + !strncmp(address_override, "::", aux-address_override) ) trio_asprintf(&addr_s, "%s:%s", ctx->connections->serverConnection->peerName, aux+1); } @@ -235,12 +236,13 @@ int edg_wll_NotifBindServer( { char *aux; - if ( !(aux = strchr(address_override, ':')) ) + if ( !(aux = strrchr(address_override, ':')) ) { edg_wll_SetError(ctx, EINVAL, "Addres overrirde not in format host:port"); goto rollback; } - if ( !strncmp(address_override, "0.0.0.0", aux-address_override) ) + if ( !strncmp(address_override, "0.0.0.0", aux-address_override) || + !strncmp(address_override, "::", aux-address_override) ) trio_asprintf(&addr_s, "%s:%s", ctx->connections->serverConnection->peerName, aux+1); } -- 1.8.2.3