ulab-next
Jay Sorg 12 years ago
parent b4ce83a685
commit d9c0af1e78

@ -610,12 +610,65 @@ g_tcp_set_non_blocking(int sck)
static int APP_CC
address_match(const char *address, struct addrinfo *j)
{
if ((address == 0) || (strcmp(address, "0.0.0.0") == 0))
struct sockaddr_in *ipv4_in;
struct sockaddr_in6 *ipv6_in;
if (address == 0)
{
return 1;
}
/* TODO: check address */
return 1;
if (address[0] == 0)
{
return 1;
}
if (g_strcmp(address, "0.0.0.0") == 0)
{
return 1;
}
if ((g_strcmp(address, "127.0.0.1") == 0) ||
(g_strcmp(address, "::1") == 0) ||
(g_strcmp(address, "localhost") == 0))
{
if (j->ai_addr != 0)
{
if (j->ai_addr->sa_family == AF_INET)
{
ipv4_in = (struct sockaddr_in *) (j->ai_addr);
if (inet_pton(AF_INET, "127.0.0.1", &(ipv4_in->sin_addr)))
{
return 1;
}
}
if (j->ai_addr->sa_family == AF_INET6)
{
ipv6_in = (struct sockaddr_in6 *) (j->ai_addr);
if (inet_pton(AF_INET6, "::1", &(ipv6_in->sin6_addr)))
{
return 1;
}
}
}
}
if (j->ai_addr != 0)
{
if (j->ai_addr->sa_family == AF_INET)
{
ipv4_in = (struct sockaddr_in *) (j->ai_addr);
if (inet_pton(AF_INET, address, &(ipv4_in->sin_addr)))
{
return 1;
}
}
if (j->ai_addr->sa_family == AF_INET6)
{
ipv6_in = (struct sockaddr_in6 *) (j->ai_addr);
if (inet_pton(AF_INET6, address, &(ipv6_in->sin6_addr)))
{
return 1;
}
}
}
return 0;
}
/*****************************************************************************/
@ -641,7 +694,7 @@ g_tcp_bind_flags(int sck, const char *port, const char *address, int flags)
{
if (address_match(address, i))
{
res = bind(sck, (struct sockaddr *)(i->ai_addr), i->ai_addrlen);
res = bind(sck, i->ai_addr, i->ai_addrlen);
}
i = i->ai_next;
}
@ -2076,7 +2129,7 @@ g_htoi(char *str)
/*****************************************************************************/
int APP_CC
g_pos(char *str, const char *to_find)
g_pos(const char *str, const char *to_find)
{
char *pp;

@ -196,7 +196,7 @@ g_atoi(const char* str);
int APP_CC
g_htoi(char* str);
int APP_CC
g_pos(char* str, const char* to_find);
g_pos(const char* str, const char* to_find);
int APP_CC
g_mbstowcs(twchar* dest, const char* src, int n);
int APP_CC

Loading…
Cancel
Save