# HG changeset patch # User Mark Doliner # Date 1139199630 0 # Node ID d0ae6489a0fb0b4c011661f5013bfa85df45cadb # Parent 8adf78fc630c42960448f57e6e49712749b4ae06 [gaim-migrate @ 15491] Remove some sillyness when attempting to autodetect our IP address committer: Tailor Script diff -r 8adf78fc630c -r d0ae6489a0fb src/core.c --- a/src/core.c Sun Feb 05 22:31:48 2006 +0000 +++ b/src/core.c Mon Feb 06 04:20:30 2006 +0000 @@ -99,6 +99,9 @@ gaim_dbus_init(); #endif + /* Call this early on to try to auto-detect our IP address */ + gaim_network_get_my_ip(-1); + /* Initialize all static protocols. */ static_proto_init(); diff -r 8adf78fc630c -r d0ae6489a0fb src/gtkprefs.c --- a/src/gtkprefs.c Sun Feb 05 22:31:48 2006 +0000 +++ b/src/gtkprefs.c Mon Feb 06 04:20:30 2006 +0000 @@ -986,9 +986,13 @@ g_signal_connect(G_OBJECT(entry), "changed", G_CALLBACK(network_ip_changed), NULL); - if (gaim_network_get_public_ip() != NULL) + /* + * TODO: This could be better by showing the autodeteced + * IP separately from the user-specified IP. + */ + if (gaim_network_get_my_ip(-1) != NULL) gtk_entry_set_text(GTK_ENTRY(entry), - gaim_network_get_public_ip()); + gaim_network_get_my_ip(-1)); gaim_set_accessible_label (entry, label); diff -r 8adf78fc630c -r d0ae6489a0fb src/network.c --- a/src/network.c Sun Feb 05 22:31:48 2006 +0000 +++ b/src/network.c Mon Feb 06 04:20:30 2006 +0000 @@ -76,20 +76,7 @@ const char * gaim_network_get_public_ip(void) { - const char *ip; - GaimStunNatDiscovery *stun; - - ip = gaim_prefs_get_string("/core/network/public_ip"); - - if (ip == NULL || *ip == '\0') { - /* Check if STUN discovery was already done */ - stun = gaim_stun_discover(NULL); - if (stun != NULL && stun->status == GAIM_STUN_STATUS_DISCOVERED) - return stun->publicip; - return NULL; - } - - return ip; + return gaim_prefs_get_string("/core/network/public_ip"); } static const char * @@ -129,6 +116,7 @@ if (tmp) return tmp; + /* TODO: Make this avoid using localhost/127.0.0.1 */ if (gethostname(localhost, 128) < 0) return NULL; @@ -156,22 +144,19 @@ /* Check if the user specified an IP manually */ if (!gaim_prefs_get_bool("/core/network/auto_ip")) { ip = gaim_network_get_public_ip(); - if (ip != NULL) + if ((ip != NULL) && (*ip != '\0')) return ip; } - if (ip == NULL || *ip == '\0') { - /* Check if STUN discovery was already done */ - stun = gaim_stun_discover(NULL); - if (stun != NULL && stun->status == GAIM_STUN_STATUS_DISCOVERED) - return stun->publicip; + /* Check if STUN discovery was already done */ + stun = gaim_stun_discover(NULL); + if ((stun != NULL) && (stun->status == GAIM_STUN_STATUS_DISCOVERED)) + return stun->publicip; - /* attempt to get the ip from a NAT device */ - ip = gaim_upnp_get_public_ip(); - - if (ip != NULL) - return ip; - } + /* Attempt to get the IP from a NAT device using UPnP */ + ip = gaim_upnp_get_public_ip(); + if (ip != NULL) + return ip; /* Just fetch the IP of the local system */ return gaim_network_get_local_system_ip(fd); diff -r 8adf78fc630c -r d0ae6489a0fb src/protocols/simple/simple.c --- a/src/protocols/simple/simple.c Sun Feb 05 22:31:48 2006 +0000 +++ b/src/protocols/simple/simple.c Mon Feb 06 04:20:30 2006 +0000 @@ -61,17 +61,6 @@ rand() & 0xFFFF, rand() & 0xFFFF); } -static char *get_my_ip() { - static char my_ip[42]; - const char *tmp = gaim_network_get_public_ip(); - - if(!tmp || !strcmp(tmp,"0.0.0.0")) { - tmp = gaim_network_get_my_ip(-1); - } - strcpy(my_ip, tmp ? tmp : "0.0.0.0"); - return my_ip; -} - static const char *simple_list_icon(GaimAccount *a, GaimBuddy *b) { return "simple"; } @@ -590,7 +579,7 @@ method, url, sip->udp ? "UDP" : "TCP", - get_my_ip(), + gaim_network_get_my_ip(-1), sip->listenport, branch, sip->username, @@ -621,7 +610,7 @@ static void do_register_exp(struct simple_account_data *sip, int expire) { char *uri = g_strdup_printf("sip:%s",sip->servername); char *to = g_strdup_printf("sip:%s@%s",sip->username,sip->servername); - char *contact = g_strdup_printf("Contact: ;methods=\"MESSAGE, SUBSCRIBE, NOTIFY\"\r\nExpires: %d\r\n", sip->username, get_my_ip(), sip->listenport, sip->udp ? "udp" : "tcp", expire); + char *contact = g_strdup_printf("Contact: ;methods=\"MESSAGE, SUBSCRIBE, NOTIFY\"\r\nExpires: %d\r\n", sip->username, gaim_network_get_my_ip(-1), sip->listenport, sip->udp ? "udp" : "tcp", expire); sip->registerstatus = 1;