# HG changeset patch # User Elliott Sales de Andrade # Date 1274414714 0 # Node ID d7ecbc47f64718bb3c70315d1a573b82de0bd652 # Parent 2b2549680b5d33c5dbd579aef1a5f01dc0d76ac8 Disable direct connections when the account option is off. diff -r 2b2549680b5d -r d7ecbc47f647 libpurple/protocols/msn/slp.c --- a/libpurple/protocols/msn/slp.c Fri May 21 03:53:06 2010 +0000 +++ b/libpurple/protocols/msn/slp.c Fri May 21 04:05:14 2010 +0000 @@ -325,6 +325,10 @@ purple_debug_info("msn", "process_transresp\n"); + /* Direct connections are disabled. */ + if (!purple_account_get_bool(slpcall->slplink->session->account, "direct_connect", TRUE)) + return FALSE; + g_return_val_if_fail(dc != NULL, FALSE); g_return_val_if_fail(dc->state == DC_STATE_CLOSED, FALSE); @@ -712,8 +716,21 @@ purple_debug_info("msn", "got_invite: transreqbody received\n"); + /* Direct connections may be disabled. */ + if (!purple_account_get_bool(slplink->session->account, "direct_connect", TRUE)) { + msn_slp_send_ok(slpcall, branch, + "application/x-msnmsgr-transrespbody", + "Bridge: TCPv1\r\n" + "Listening: false\r\n" + "Nonce: {00000000-0000-0000-0000-000000000000}\r\n" + "\r\n"); + msn_slpcall_session_init(slpcall); + + return; + } + /* Don't do anything if we already have a direct connection */ - if (slpcall->slplink->dc != NULL) + if (slplink->dc != NULL) return; bridges = get_token(content, "Bridges: ", "\r\n"); @@ -806,10 +823,17 @@ char *content; char *header; char *nonce = NULL; + MsnSession *session = slpcall->slplink->session; MsnSlpMessage *msg; MsnDirectConn *dc; MsnUser *user; + if (!purple_account_get_bool(session->account, "direct_connect", TRUE)) { + /* Don't attempt a direct connection if disabled. */ + msn_slpcall_session_init(slpcall); + return; + } + if (slpcall->slplink->dc != NULL) { /* If we already have an established direct connection * then just start the transfer. @@ -818,7 +842,7 @@ return; } - user = msn_userlist_find_user(slpcall->slplink->session->userlist, + user = msn_userlist_find_user(session->userlist, slpcall->slplink->remote_user); if (!user || !(user->clientid & 0xF0000000)) { /* Just start a normal SB transfer. */