Merges from Irssi CVS.
[runtime.git] / apps / irssi / src / core / servers.c
index 2f3d15d1d22cb20ee6cfe0b0197dee932ba4ddd9..1e5c0b8487c70fb482dbdf83b80452911c38fcf1 100644 (file)
@@ -198,8 +198,9 @@ static void server_connect_callback_readpipe(SERVER_REC *server)
        } else {
                /* pick the one that was found, or if both do it like
                   /SET resolve_prefer_ipv6 says. */
-               ip = iprec.ip6.family != 0 &&
-                       settings_get_bool("resolve_prefer_ipv6") ?
+               ip = iprec.ip4.family == 0 ||
+                       (iprec.ip6.family != 0 &&
+                        settings_get_bool("resolve_prefer_ipv6")) ?
                        &iprec.ip6 : &iprec.ip4;
        }
 
@@ -256,6 +257,8 @@ static void server_connect_callback_readpipe(SERVER_REC *server)
 /* initializes server record but doesn't start connecting */
 void server_connect_init(SERVER_REC *server)
 {
+       const char *str;
+
        g_return_if_fail(server != NULL);
 
        MODULE_DATA_INIT(server);
@@ -266,16 +269,16 @@ void server_connect_init(SERVER_REC *server)
        if (server->connrec->username == NULL || *server->connrec->username == '\0') {
                g_free_not_null(server->connrec->username);
 
-               server->connrec->username = g_get_user_name();
-               if (*server->connrec->username == '\0') server->connrec->username = "-";
-               server->connrec->username = g_strdup(server->connrec->username);
+               str = g_get_user_name();
+               if (*str == '\0') str = "-";
+               server->connrec->username = g_strdup(str);
        }
        if (server->connrec->realname == NULL || *server->connrec->realname == '\0') {
                g_free_not_null(server->connrec->realname);
 
-               server->connrec->realname = g_get_real_name();
-               if (*server->connrec->realname == '\0') server->connrec->realname = "-";
-               server->connrec->realname = g_strdup(server->connrec->realname);
+               str = g_get_real_name();
+               if (*str == '\0') str = "-";
+               server->connrec->realname = g_strdup(str);
        }
 
        server->tag = server_create_tag(server->connrec);
@@ -330,7 +333,6 @@ static int server_remove_channels(SERVER_REC *server)
        for (tmp = server->channels; tmp != NULL; tmp = tmp->next) {
                CHANNEL_REC *channel = tmp->data;
 
-               channel->server = NULL;
                channel_destroy(channel);
                found = TRUE;
        }