summaryrefslogtreecommitdiff
path: root/src/core/servers-setup.c
diff options
context:
space:
mode:
authorailin-nemui <ailin-nemui@users.noreply.github.com>2015-09-22 17:43:31 +0200
committerailin-nemui <ailin-nemui@users.noreply.github.com>2015-09-22 17:43:31 +0200
commit2d69deb0a36516bac9514c6d53a1389b0a4b031a (patch)
tree7187386b84c626c66a7f56a2ad9140647dc236d7 /src/core/servers-setup.c
parent5ced71e1ac5cf74e46115ade90fa9004e6fe1493 (diff)
parent564829610de20f75ec667f1943524c3a49b9ea3f (diff)
downloadirssi-2d69deb0a36516bac9514c6d53a1389b0a4b031a.zip
Merge pull request #290 from LemonBoy/ipv6
Network and IPv{4,6} related changes
Diffstat (limited to 'src/core/servers-setup.c')
-rw-r--r--src/core/servers-setup.c67
1 files changed, 20 insertions, 47 deletions
diff --git a/src/core/servers-setup.c b/src/core/servers-setup.c
index 90a447d4..e8506f0f 100644
--- a/src/core/servers-setup.c
+++ b/src/core/servers-setup.c
@@ -33,32 +33,22 @@ GSList *setupservers;
static char *old_source_host;
int source_host_ok; /* Use source_host_ip .. */
-IPADDR *source_host_ip4, *source_host_ip6; /* Resolved address */
+IPADDR source_host_ip; /* Resolved address */
-static void save_ips(IPADDR *ip4, IPADDR *ip6,
- IPADDR **save_ip4, IPADDR **save_ip6)
+static void save_ips(IPADDR *ip, IPADDR **save_ip)
{
- if (ip4->family == 0)
- g_free_and_null(*save_ip4);
+ if (ip->family == 0)
+ g_free_and_null(*save_ip);
else {
- if (*save_ip4 == NULL)
- *save_ip4 = g_new(IPADDR, 1);
- memcpy(*save_ip4, ip4, sizeof(IPADDR));
- }
-
- if (ip6->family == 0)
- g_free_and_null(*save_ip6);
- else {
- if (*save_ip6 == NULL)
- *save_ip6 = g_new(IPADDR, 1);
- memcpy(*save_ip6, ip6, sizeof(IPADDR));
+ if (*save_ip == NULL)
+ *save_ip = g_new(IPADDR, 1);
+ memcpy(*save_ip, ip, sizeof(IPADDR));
}
}
static void get_source_host_ip(void)
{
const char *hostname;
- IPADDR ip4, ip6;
if (source_host_ok)
return;
@@ -66,28 +56,21 @@ static void get_source_host_ip(void)
/* FIXME: This will block! */
hostname = settings_get_str("hostname");
source_host_ok = *hostname != '\0' &&
- net_gethostbyname(hostname, &ip4, &ip6) == 0;
-
- if (source_host_ok)
- save_ips(&ip4, &ip6, &source_host_ip4, &source_host_ip6);
- else {
- g_free_and_null(source_host_ip4);
- g_free_and_null(source_host_ip6);
- }
+ net_gethostbyname(hostname, &source_host_ip) == 0;
}
static void conn_set_ip(SERVER_CONNECT_REC *conn, const char *own_host,
- IPADDR **own_ip4, IPADDR **own_ip6)
+ IPADDR **own_ip)
{
- IPADDR ip4, ip6;
+ IPADDR ip;
- if (*own_ip4 == NULL && *own_ip6 == NULL) {
+ if (*own_ip == NULL) {
/* resolve the IP */
- if (net_gethostbyname(own_host, &ip4, &ip6) == 0)
- save_ips(&ip4, &ip6, own_ip4, own_ip6);
+ if (net_gethostbyname(own_host, &ip) == 0)
+ save_ips(&ip, own_ip);
}
- server_connect_own_ip_save(conn, *own_ip4, *own_ip6);
+ server_connect_own_ip_save(conn, *own_ip);
}
/* Fill information to connection from server setup record */
@@ -98,8 +81,7 @@ void server_setup_fill_reconn(SERVER_CONNECT_REC *conn,
g_return_if_fail(IS_SERVER_SETUP(sserver));
if (sserver->own_host != NULL) {
- conn_set_ip(conn, sserver->own_host,
- &sserver->own_ip4, &sserver->own_ip6);
+ conn_set_ip(conn, sserver->own_host, &sserver->own_ip);
}
if (sserver->chatnet != NULL && conn->chatnet == NULL)
@@ -139,13 +121,9 @@ static void server_setup_fill(SERVER_CONNECT_REC *conn,
}
/* source IP */
- if (source_host_ip4 != NULL) {
- conn->own_ip4 = g_new(IPADDR, 1);
- memcpy(conn->own_ip4, source_host_ip4, sizeof(IPADDR));
- }
- if (source_host_ip6 != NULL) {
- conn->own_ip6 = g_new(IPADDR, 1);
- memcpy(conn->own_ip6, source_host_ip6, sizeof(IPADDR));
+ if (source_host_ok) {
+ conn->own_ip = g_new(IPADDR, 1);
+ memcpy(conn->own_ip, &source_host_ip, sizeof(IPADDR));
}
signal_emit("server setup fill connect", 1, conn);
@@ -206,8 +184,7 @@ static void server_setup_fill_chatnet(SERVER_CONNECT_REC *conn,
conn->realname = g_strdup(chatnet->realname);;
}
if (chatnet->own_host != NULL) {
- conn_set_ip(conn, chatnet->own_host,
- &chatnet->own_ip4, &chatnet->own_ip6);
+ conn_set_ip(conn, chatnet->own_host, &chatnet->own_ip);
}
signal_emit("server setup fill chatnet", 2, conn, chatnet);
@@ -481,8 +458,7 @@ static void server_setup_destroy(SERVER_SETUP_REC *rec)
signal_emit("server setup destroyed", 1, rec);
g_free_not_null(rec->own_host);
- g_free_not_null(rec->own_ip4);
- g_free_not_null(rec->own_ip6);
+ g_free_not_null(rec->own_ip);
g_free_not_null(rec->chatnet);
g_free_not_null(rec->password);
g_free_not_null(rec->ssl_cert);
@@ -556,7 +532,6 @@ void servers_setup_init(void)
settings_add_str("proxy", "proxy_password", "");
setupservers = NULL;
- source_host_ip4 = source_host_ip6 = NULL;
old_source_host = NULL;
read_settings();
@@ -567,8 +542,6 @@ void servers_setup_init(void)
void servers_setup_deinit(void)
{
- g_free_not_null(source_host_ip4);
- g_free_not_null(source_host_ip6);
g_free_not_null(old_source_host);
while (setupservers != NULL)