Mercurial > pidgin
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) |