# HG changeset patch # User Thomas Butter # Date 1123524525 0 # Node ID 5ba038e1b21f35423e3235a21776fb4b9e4188d0 # Parent e552095ec5990380fb6197398bcb7f976814ccc6 [gaim-migrate @ 13341] Added an option to connect to a different proxy. This is useful in some internal networks where the hostpart of the userid does not equal the hostname of the registrar server to connect to. committer: Tailor Script diff -r e552095ec599 -r 5ba038e1b21f src/protocols/simple/simple.c --- a/src/protocols/simple/simple.c Mon Aug 08 16:23:18 2005 +0000 +++ b/src/protocols/simple/simple.c Mon Aug 08 18:08:45 2005 +0000 @@ -1095,6 +1095,7 @@ gchar **userserver; int error=0; struct getserver_return *serveradr; + gchar *hosttoconnect; const char *username = gaim_account_get_username(account); @@ -1124,10 +1125,16 @@ sip->status = g_strdup("available"); + if(!gaim_account_get_bool(account, "useproxy", FALSE)) { + hosttoconnect = g_strdup(sip->servername); + } else { + hosttoconnect = g_strdup(gaim_account_get_string(account, "proxy", sip->servername)); + } + // TCP case if(! sip->udp) { // search for SRV record - serveradr = getserver(sip->servername, "_sip._tcp"); + serveradr = getserver(hosttoconnect, "_sip._tcp"); gaim_debug_info("simple","connecting to %s port %d", serveradr->name, serveradr->port); // open tcp connection to the server @@ -1149,7 +1156,7 @@ struct sockaddr_in addr; struct hostent *h; - serveradr = getserver(sip->servername, "_sip._udp"); + serveradr = getserver(hosttoconnect, "_sip._udp"); gaim_debug_info("simple", "using udp with server %s and port %d", serveradr->name, serveradr->port); sip->fd = socket(AF_INET, SOCK_DGRAM, 0); @@ -1174,6 +1181,7 @@ do_register(sip); } + g_free(hosttoconnect); // register timeout callback for register / subscribe renewal sip->registertimeout = gaim_timeout_add((rand()%100)+10*1000, (GSourceFunc)register_timeout, sip); @@ -1308,6 +1316,10 @@ option = gaim_account_option_bool_new(_("Use UDP"), "udp", FALSE); prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); + option = gaim_account_option_bool_new(_("Use Proxy"), "useproxy", FALSE); + prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); + option = gaim_account_option_string_new(_("Proxy"), "proxy", ""); + prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); // _simple_plugin = plugin; }