Mercurial > pidgin
comparison libpurple/protocols/msn/userlist.c @ 20671:4dd60add6a7c
Further cleanup of the msn prpl including preventing the authorization request callback from crashing if triggered after the account is disconnected. Also removal of some extraneous debuggery, there is more that needs to be removed.
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Fri, 28 Sep 2007 01:57:55 +0000 |
parents | 7c30d5aa5e01 |
children | fd664b4aa4f1 |
comparison
equal
deleted
inserted
replaced
20670:6b9e964f0572 | 20671:4dd60add6a7c |
---|---|
39 **************************************************************************/ | 39 **************************************************************************/ |
40 static void | 40 static void |
41 msn_accept_add_cb(gpointer data) | 41 msn_accept_add_cb(gpointer data) |
42 { | 42 { |
43 MsnPermitAdd *pa = data; | 43 MsnPermitAdd *pa = data; |
44 MsnSession *session = pa->gc->proto_data; | 44 |
45 MsnUserList *userlist = session->userlist; | |
46 MsnUser *user = msn_userlist_find_add_user(userlist, pa->who, pa->who); | |
47 | |
48 purple_debug_misc("MSN Userlist", "Accepted the new buddy: %s\n", pa->who); | 45 purple_debug_misc("MSN Userlist", "Accepted the new buddy: %s\n", pa->who); |
49 | 46 |
50 msn_userlist_add_buddy_to_list(userlist, pa->who, MSN_LIST_AL); | 47 if (PURPLE_CONNECTION_IS_VALID(pa->gc)) |
51 | 48 { |
52 if (msn_userlist_user_is_in_list(user, MSN_LIST_FL)) { | 49 MsnSession *session = pa->gc->proto_data; |
53 msn_del_contact_from_list(session->contact, NULL, pa->who, MSN_LIST_PL); | 50 MsnUserList *userlist = session->userlist; |
51 MsnUser *user = msn_userlist_find_add_user(userlist, pa->who, pa->who); | |
52 | |
53 | |
54 msn_userlist_add_buddy_to_list(userlist, pa->who, MSN_LIST_AL); | |
55 | |
56 if (msn_userlist_user_is_in_list(user, MSN_LIST_FL)) | |
57 msn_del_contact_from_list(session->contact, NULL, pa->who, MSN_LIST_PL); | |
54 } | 58 } |
55 | 59 |
56 g_free(pa->who); | 60 g_free(pa->who); |
57 g_free(pa->friendly); | 61 g_free(pa->friendly); |
58 g_free(pa); | 62 g_free(pa); |
61 static void | 65 static void |
62 msn_cancel_add_cb(gpointer data) | 66 msn_cancel_add_cb(gpointer data) |
63 { | 67 { |
64 MsnPermitAdd *pa = data; | 68 MsnPermitAdd *pa = data; |
65 | 69 |
66 purple_debug_misc("MSN Userlist", "Deniedthe new buddy: %s\n", pa->who); | 70 purple_debug_misc("MSN Userlist", "Denied the new buddy: %s\n", pa->who); |
67 | 71 |
68 if (g_list_find(purple_connections_get_all(), pa->gc) != NULL) | 72 if (PURPLE_CONNECTION_IS_VALID(pa->gc)) |
69 { | 73 { |
70 MsnSession *session = pa->gc->proto_data; | 74 MsnSession *session = pa->gc->proto_data; |
71 MsnUserList *userlist = session->userlist; | 75 MsnUserList *userlist = session->userlist; |
72 MsnCallbackState *state = msn_callback_state_new(); | 76 MsnCallbackState *state = msn_callback_state_new(); |
73 | 77 |
74 msn_callback_state_set_action(state, MSN_DENIED_BUDDY); | 78 msn_callback_state_set_action(state, MSN_DENIED_BUDDY); |
75 | 79 |
76 msn_userlist_add_buddy_to_list(userlist, pa->who, MSN_LIST_BL); | 80 msn_userlist_add_buddy_to_list(userlist, pa->who, MSN_LIST_BL); |
77 msn_del_contact_from_list(session->contact, state, pa->who, MSN_LIST_PL); | 81 msn_del_contact_from_list(session->contact, state, pa->who, MSN_LIST_PL); |
78 } | 82 } |
83 } | 87 } |
84 | 88 |
85 static void | 89 static void |
86 got_new_entry(PurpleConnection *gc, const char *passport, const char *friendly) | 90 got_new_entry(PurpleConnection *gc, const char *passport, const char *friendly) |
87 { | 91 { |
92 PurpleAccount *acct; | |
88 MsnPermitAdd *pa; | 93 MsnPermitAdd *pa; |
89 | 94 |
90 pa = g_new0(MsnPermitAdd, 1); | 95 pa = g_new0(MsnPermitAdd, 1); |
91 pa->who = g_strdup(passport); | 96 pa->who = g_strdup(passport); |
92 pa->friendly = g_strdup(friendly); | 97 pa->friendly = g_strdup(friendly); |
93 pa->gc = gc; | 98 pa->gc = gc; |
94 | 99 |
95 purple_account_request_authorization(purple_connection_get_account(gc), passport, NULL, friendly, NULL, | 100 acct = purple_connection_get_account(gc); |
96 purple_find_buddy(purple_connection_get_account(gc), passport) != NULL, | 101 purple_account_request_authorization(acct, passport, NULL, friendly, NULL, |
97 msn_accept_add_cb, msn_cancel_add_cb, pa); | 102 purple_find_buddy(acct, passport) != NULL, |
103 msn_accept_add_cb, msn_cancel_add_cb, pa); | |
98 | 104 |
99 } | 105 } |
100 | 106 |
101 /************************************************************************** | 107 /************************************************************************** |
102 * Utility functions | 108 * Utility functions |