Thu, 17 Jul 2008 14:43:56 +0000
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
* Fixed: Always lost connection. Now send keep alive packet in every 30 seconds
* Minor fix for debug information
* Filter \r\n and replace with SPCAE in group notive
* Fixed a memory leak
* Tickets:
* Fixes #4024.
|
23193
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
1 | /** |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
2 | * @file qq_trans.c |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
3 | * |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
4 | * purple |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
5 | * |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
6 | * Purple is the legal property of its developers, whose names are too numerous |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
7 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
8 | * source distribution. |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
9 | * |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
10 | * This program is free software; you can redistribute it and/or modify |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
11 | * it under the terms of the GNU General Public License as published by |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
12 | * the Free Software Foundation; either version 2 of the License, or |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
13 | * (at your option) any later version. |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
14 | * |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
15 | * This program is distributed in the hope that it will be useful, |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
18 | * GNU General Public License for more details. |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
19 | * |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
20 | * You should have received a copy of the GNU General Public License |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
21 | * along with this program; if not, write to the Free Software |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
22 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
23 | */ |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
24 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
25 | #include "internal.h" |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
26 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
27 | #include "connection.h" |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
28 | #include "debug.h" |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
29 | #include "notify.h" |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
30 | #include "prefs.h" |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
31 | #include "request.h" |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
32 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
33 | #include "header_info.h" |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
34 | #include "qq_network.h" |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
35 | #include "qq_trans.h" |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
36 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
37 | #define QQ_RESEND_MAX 8 /* max resend per packet */ |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
38 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
39 | typedef struct _transaction { |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
40 | guint16 seq; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
41 | guint16 cmd; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
42 | guint8 *buf; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
43 | gint buf_len; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
44 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
45 | gint fd; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
46 | gint retries; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
47 | time_t create_time; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
48 | } transaction; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
49 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
50 | void qq_send_trans_append(qq_data *qd, guint8 *buf, gint buf_len, guint16 cmd, guint16 seq) |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
51 | { |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
52 | transaction *trans = g_new0(transaction, 1); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
53 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
54 | g_return_if_fail(trans != NULL); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
55 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
56 | trans->fd = qd->fd; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
57 | trans->cmd = cmd; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
58 | trans->seq = seq; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
59 | trans->retries = QQ_RESEND_MAX; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
60 | trans->create_time = time(NULL); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
61 | trans->buf = g_memdup(buf, buf_len); /* don't use g_strdup, may have 0x00 */ |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
62 | trans->buf_len = buf_len; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
63 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
64 | purple_debug(PURPLE_DEBUG_ERROR, "QQ", |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
65 | "Add to transaction, seq = %d, buf = %p, len = %d\n", |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
66 | trans->seq, trans->buf, trans->buf_len); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
67 | qd->send_trans = g_list_append(qd->send_trans, trans); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
68 | } |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
69 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
70 | /* Remove a packet with seq from send trans */ |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
71 | void qq_send_trans_remove(qq_data *qd, gpointer data) |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
72 | { |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
73 | transaction *trans = (transaction *)data; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
74 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
75 | g_return_if_fail(qd != NULL && data != NULL); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
76 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
77 | purple_debug(PURPLE_DEBUG_INFO, "QQ", |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
78 | "ack [%05d] %s, remove from send tranactions\n", |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
79 | trans->seq, qq_get_cmd_desc(trans->cmd)); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
80 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
81 | if (trans->buf) g_free(trans->buf); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
82 | qd->send_trans = g_list_remove(qd->send_trans, trans); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
83 | g_free(trans); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
84 | } |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
85 | |
|
23212
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23193
diff
changeset
|
86 | gpointer qq_send_trans_find(qq_data *qd, guint16 cmd, guint16 seq) |
|
23193
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
87 | { |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
88 | GList *curr; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
89 | GList *next; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
90 | transaction *trans; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
91 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
92 | curr = qd->send_trans; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
93 | while(curr) { |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
94 | next = curr->next; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
95 | trans = (transaction *) (curr->data); |
|
23212
a39a33c79a3f
2008.07.12 - ccpaging <ecc_hy(at)hotmail.com>
SHiNE CsyFeK <csyfek@gmail.com>
parents:
23193
diff
changeset
|
96 | if(trans->cmd == cmd && trans->seq == seq) { |
|
23193
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
97 | return trans; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
98 | } |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
99 | curr = next; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
100 | } |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
101 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
102 | return NULL; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
103 | } |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
104 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
105 | /* clean up send trans and free all contents */ |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
106 | void qq_send_trans_remove_all(qq_data *qd) |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
107 | { |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
108 | GList *curr; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
109 | GList *next; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
110 | transaction *trans; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
111 | gint count = 0; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
112 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
113 | curr = qd->send_trans; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
114 | while(curr) { |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
115 | next = curr->next; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
116 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
117 | trans = (transaction *) (curr->data); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
118 | /* |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
119 | purple_debug(PURPLE_DEBUG_ERROR, "QQ", |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
120 | "Remove to transaction, seq = %d, buf = %p, len = %d\n", |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
121 | trans->seq, trans->buf, trans->len); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
122 | */ |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
123 | qq_send_trans_remove(qd, trans); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
124 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
125 | count++; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
126 | curr = next; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
127 | } |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
128 | g_list_free(qd->send_trans); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
129 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
130 | purple_debug(PURPLE_DEBUG_INFO, "QQ", "%d packets in send tranactions are freed!\n", count); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
131 | } |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
132 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
133 | gint qq_send_trans_scan(qq_data *qd, gint *start, |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
134 | guint8 *buf, gint maxlen, guint16 *cmd, gint *retries) |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
135 | { |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
136 | GList *curr; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
137 | GList *next = NULL; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
138 | transaction *trans; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
139 | gint copylen; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
140 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
141 | g_return_val_if_fail(qd != NULL && *start >= 0 && maxlen > 0, -1); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
142 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
143 | /* purple_debug(PURPLE_DEBUG_ERROR, "QQ", "Scan from %d\n", *start); */ |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
144 | curr = g_list_nth(qd->send_trans, *start); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
145 | while(curr) { |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
146 | next = curr->next; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
147 | *start = g_list_position(qd->send_trans, next); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
148 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
149 | trans = (transaction *) (curr->data); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
150 | if (trans->buf == NULL || trans->buf_len <= 0) { |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
151 | qq_send_trans_remove(qd, trans); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
152 | curr = next; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
153 | continue; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
154 | } |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
155 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
156 | if (trans->retries < 0) { |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
157 | purple_debug(PURPLE_DEBUG_ERROR, "QQ", |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
158 | "Remove transaction, seq %d, buf %p, len %d, retries %d, next %d\n", |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
159 | trans->seq, trans->buf, trans->buf_len, trans->retries, *start); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
160 | qq_send_trans_remove(qd, trans); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
161 | curr = next; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
162 | continue; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
163 | } |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
164 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
165 | purple_debug(PURPLE_DEBUG_ERROR, "QQ", |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
166 | "Resend transaction, seq %d, buf %p, len %d, retries %d, next %d\n", |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
167 | trans->seq, trans->buf, trans->buf_len, trans->retries, *start); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
168 | copylen = MIN(trans->buf_len, maxlen); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
169 | g_memmove(buf, trans->buf, copylen); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
170 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
171 | *cmd = trans->cmd; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
172 | *retries = trans->retries; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
173 | trans->retries--; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
174 | return copylen; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
175 | } |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
176 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
177 | /* purple_debug(PURPLE_DEBUG_INFO, "QQ", "Scan finished\n"); */ |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
178 | return -1; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
179 | } |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
180 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
181 | void qq_rcv_trans_push(qq_data *qd, guint16 cmd, guint16 seq, guint8 *data, gint data_len) |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
182 | { |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
183 | transaction *trans = g_new0(transaction, 1); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
184 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
185 | g_return_if_fail(data != NULL && data_len > 0); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
186 | g_return_if_fail(trans != NULL); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
187 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
188 | trans->cmd = cmd; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
189 | trans->seq = seq; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
190 | trans->buf = g_memdup(data, data_len); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
191 | trans->buf_len = data_len; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
192 | trans->create_time = time(NULL); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
193 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
194 | if (qd->rcv_trans == NULL) |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
195 | qd->rcv_trans = g_queue_new(); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
196 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
197 | g_queue_push_head(qd->rcv_trans, trans); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
198 | } |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
199 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
200 | gint qq_rcv_trans_pop(qq_data *qd, guint16 *cmd, guint16 *seq, guint8 *data, gint max_len) |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
201 | { |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
202 | transaction *trans = NULL; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
203 | gint copy_len; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
204 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
205 | g_return_val_if_fail(data != NULL && max_len > 0, -1); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
206 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
207 | if (g_queue_is_empty(qd->rcv_trans)) { |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
208 | return -1; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
209 | } |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
210 | trans = (transaction *) g_queue_pop_head(qd->rcv_trans); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
211 | if (trans == NULL) { |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
212 | return 0; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
213 | } |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
214 | if (trans->buf == NULL || trans->buf_len <= 0) { |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
215 | return 0; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
216 | } |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
217 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
218 | copy_len = MIN(max_len, trans->buf_len); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
219 | g_memmove(data, trans->buf, copy_len); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
220 | *cmd = trans->cmd; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
221 | *seq = trans->seq; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
222 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
223 | g_free(trans->buf); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
224 | g_free(trans); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
225 | return copy_len; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
226 | } |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
227 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
228 | /* clean up the packets before login */ |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
229 | void qq_rcv_trans_remove_all(qq_data *qd) |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
230 | { |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
231 | transaction *trans = NULL; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
232 | gint count = 0; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
233 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
234 | g_return_if_fail(qd != NULL); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
235 | |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
236 | /* now clean up my own data structures */ |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
237 | if (qd->rcv_trans != NULL) { |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
238 | while (NULL != (trans = g_queue_pop_tail(qd->rcv_trans))) { |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
239 | g_free(trans->buf); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
240 | g_free(trans); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
241 | count++; |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
242 | } |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
243 | g_queue_free(qd->rcv_trans); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
244 | } |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
245 | purple_debug(PURPLE_DEBUG_INFO, "QQ", "%d packets in receive tranactions are freed!\n", count); |
|
384ba35bfa8f
patch-05-reconnect-and-code-cleanup
SHiNE CsyFeK <csyfek@gmail.com>
parents:
diff
changeset
|
246 | } |