comparison libpurple/protocols/msn/cmdproc.c @ 31791:6ce4f2272abc

Fix a crash when the account is disconnected and we have requested a SB. (Hanzz, ported by shlomif)(Fixes #12431)
author masca@cpw.pidgin.im
date Sun, 14 Aug 2011 19:04:59 +0000
parents 05e05d96ba75
children
comparison
equal deleted inserted replaced
31790:edd063ee1016 31791:6ce4f2272abc
107 names[servconn->type], servconn->num, show); 107 names[servconn->type], servconn->num, show);
108 108
109 g_free(show); 109 g_free(show);
110 } 110 }
111 111
112 void 112 gboolean
113 msn_cmdproc_send_trans(MsnCmdProc *cmdproc, MsnTransaction *trans) 113 msn_cmdproc_send_trans(MsnCmdProc *cmdproc, MsnTransaction *trans)
114 { 114 {
115 MsnServConn *servconn; 115 MsnServConn *servconn;
116 char *data; 116 char *data;
117 size_t len; 117 size_t len;
118 118 gboolean ret;
119 g_return_if_fail(cmdproc != NULL); 119
120 g_return_if_fail(trans != NULL); 120 g_return_val_if_fail(cmdproc != NULL, TRUE);
121 g_return_val_if_fail(trans != NULL, TRUE);
121 122
122 servconn = cmdproc->servconn; 123 servconn = cmdproc->servconn;
123 124
124 if (!servconn->connected) { 125 if (!servconn->connected) {
125 msn_transaction_destroy(trans); 126 msn_transaction_destroy(trans);
126 return; 127 return FALSE;
127 } 128 }
128 129
129 if (trans->saveable) 130 if (trans->saveable)
130 msn_history_add(cmdproc->history, trans); 131 msn_history_add(cmdproc->history, trans);
131 132
152 g_free(trans->payload); 153 g_free(trans->payload);
153 trans->payload = NULL; 154 trans->payload = NULL;
154 trans->payload_len = 0; 155 trans->payload_len = 0;
155 } 156 }
156 157
157 msn_servconn_write(servconn, data, len); 158 ret = msn_servconn_write(servconn, data, len) != -1;
158 159
159 if (!trans->saveable) 160 if (!trans->saveable)
160 msn_transaction_destroy(trans); 161 msn_transaction_destroy(trans);
161 g_free(data); 162 g_free(data);
163 return ret;
162 } 164 }
163 165
164 void 166 void
165 msn_cmdproc_process_payload(MsnCmdProc *cmdproc, char *payload, 167 msn_cmdproc_process_payload(MsnCmdProc *cmdproc, char *payload,
166 int payload_len) 168 int payload_len)