int mr_connect(char *server)
{
char *port, **pp, *sbuf = NULL;
- struct hostent *shost;
if (_mr_conn)
return MR_ALREADY_CONNECTED;
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;
if (!_mr_conn)
return MR_CANT_CONNECT;
- /* stash hostname for later use */
- mr_server_host = strdup(shost->h_name);
return MR_SUCCESS;
}
return 0;
if (port[0] == '#')
- target.sin_port = atoi(port + 1);
+ target.sin_port = htons(atoi(port + 1));
else
{
struct servent *s;
return 0;
}
+ mr_server_host = strdup(shost->h_name);
+
/* You win */
return fd;
}