This commit is contained in:
Max Lv
2014-12-07 09:35:12 +08:00
parent 2361032355
commit 5838c021a4
2 changed files with 13 additions and 6 deletions
+11 -4
View File
@@ -59,7 +59,7 @@ void free_addr(ss_addr_t *addr)
void parse_addr(const char *str, ss_addr_t *addr)
{
int ret = -1, n = 0;
int ipv6 = 0, ret = -1, n = 0;
char *pch;
pch = strchr(str, ':');
while (pch != NULL) {
@@ -68,15 +68,22 @@ void parse_addr(const char *str, ss_addr_t *addr)
pch = strchr(pch + 1, ':');
}
if (n > 1) {
if (strcmp(str + ret, "]") != 0) {
ipv6 = 1;
if (str[ret - 1] != ']') {
ret = -1;
}
}
if (ret == -1) {
addr->host = strdup(str);
if (ipv6)
addr->host = ss_strndup(str + 1, strlen(str) - 2);
else
addr->host = strdup(str);
addr->port = NULL;
} else {
addr->host = ss_strndup(str, ret);
if (ipv6)
addr->host = ss_strndup(str + 1, ret - 2);
else
addr->host = ss_strndup(str, ret);
addr->port = strdup(str + ret + 1);
}
}
+2 -2
View File
@@ -421,7 +421,7 @@ static void query_resolve_cb(EV_P_ ev_io *w, int revents)
err = asyncns_getaddrinfo_done(asyncns, query, &result);
if (err) {
ERROR("[udp] getaddrinfo");
ERROR("[udp] asysncns_getaddrinfo");
} else {
// Use IPV4 address if possible
for (rp = result; rp != NULL; rp = rp->ai_next) {
@@ -819,7 +819,7 @@ static void server_recv_cb(EV_P_ ev_io *w, int revents)
asyncns_query_t *query;
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_socktype = SOCK_DGRAM;
query = asyncns_getaddrinfo(server_ctx->asyncns,
host, port, &hints);