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