]> andersk Git - moira.git/commitdiff
fix bugs in parsing the optional port number, introduced in the mrgdb
authordanw <danw>
Thu, 13 Aug 1998 19:24:12 +0000 (19:24 +0000)
committerdanw <danw>
Thu, 13 Aug 1998 19:24:12 +0000 (19:24 +0000)
antimigration

lib/mr_connect.c

index 517d464e462d31e174532f605b3400b18a76678e..b47280cbe3c8769836e241e8f2e36f85b0b4dcfc 100644 (file)
@@ -76,7 +76,6 @@ static char response[53] = "\0\0\0\061\0\0\0\003\0\001\001disposition\0server_id
 int mr_connect(char *server)
 {
   char *port, **pp, *sbuf = NULL;
-  struct hostent *shost;
 
   if (_mr_conn)
     return MR_ALREADY_CONNECTED;
@@ -98,18 +97,14 @@ int mr_connect(char *server)
   if (!server || (strlen(server) == 0))
     server = MOIRA_SERVER;
 
-  shost = gethostbyname(server);
-  if (!shost)
-    return MR_CANT_CONNECT;
-
   if (strchr(server, ':'))
     {
       int len = strcspn(server, ":");
       sbuf = malloc(len + 1);
       strncpy(sbuf, server, len);
-      sbuf[len - 1] = '\0';
-      server = sbuf;
+      sbuf[len] = '\0';
       port = strchr(server, ':') + 1;
+      server = sbuf;
     }
   else
     port = strchr(MOIRA_SERVER, ':') + 1;
@@ -119,8 +114,6 @@ int mr_connect(char *server)
   if (!_mr_conn)
     return MR_CANT_CONNECT;
 
-  /* stash hostname for later use */
-  mr_server_host = strdup(shost->h_name);
   return MR_SUCCESS;
 }
 
@@ -136,7 +129,7 @@ int mr_connect_internal(char *server, char *port)
     return 0;
 
   if (port[0] == '#')
-    target.sin_port = atoi(port + 1);
+    target.sin_port = htons(atoi(port + 1));
   else
     {
       struct servent *s;
@@ -184,6 +177,8 @@ int mr_connect_internal(char *server, char *port)
       return 0;
     }
 
+  mr_server_host = strdup(shost->h_name);
+
   /* You win */
   return fd;
 }
This page took 0.032761 seconds and 5 git commands to generate.