Backport port number extraction fixes.
authorFrantišek Dvořák <valtri@civ.zcu.cz>
Wed, 5 May 2010 19:36:22 +0000 (19:36 +0000)
committerFrantišek Dvořák <valtri@civ.zcu.cz>
Wed, 5 May 2010 19:36:22 +0000 (19:36 +0000)
org.glite.lb.client/src/notification.c
org.glite.lb.logger/src/event_queue.c
org.glite.lb.server/src/notification.c

index 7ffe4a4..7817b2c 100644 (file)
@@ -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);
index fb13c99..e235743 100644 (file)
@@ -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;
index c160593..4907ea0 100644 (file)
@@ -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);
                }