libpurple/protocols/novell/nmevent.c

Wed, 25 May 2022 23:52:45 -0500

author
Elliott Sales de Andrade <quantum.analyst@gmail.com>
date
Wed, 25 May 2022 23:52:45 -0500
changeset 41408
5323c0b51ddc
parent 40765
a5381c20e802
permissions
-rw-r--r--

Remove prpl-gtalk from XMPP console

It no longer exists, and complicates the code a bit.

8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1 /*
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2 * nmevent.c
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
3 *
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
4 * Copyright (c) 2004 Novell, Inc. All Rights Reserved.
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
5 *
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
6 * This program is free software; you can redistribute it and/or modify
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
7 * it under the terms of the GNU General Public License as published by
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
8 * the Free Software Foundation; version 2 of the License.
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
9 *
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
10 * This program is distributed in the hope that it will be useful,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
13 * GNU General Public License for more details.
8684
7ec649752daa [gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
14 *
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
15 * You should have received a copy of the GNU General Public License
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
16 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 15884
diff changeset
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
18 *
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
19 */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
20
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
21 #include <glib.h>
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
22 #include <string.h>
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
23 #include <time.h>
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
24 #include "nmevent.h"
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
25 #include "nmfield.h"
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
26 #include "nmconn.h"
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
27 #include "nmuserrecord.h"
9268
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
28 #include "nmrtf.h"
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
29
9839
6eb627432e0c [gaim-migrate @ 10716]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
30 #define MAX_UINT32 0xFFFFFFFF
6eb627432e0c [gaim-migrate @ 10716]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
31
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
32 struct _NMEvent
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
33 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
34
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
35 /* Event type */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
36 int type;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
37
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
38 /* The DN of the event source */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
39 char *source;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
40
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
41 /* Timestamp of the event */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
42 guint32 gmt;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
43
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
44 /* Conference to associate with the event */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
45 NMConference *conference;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
46
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
47 /* User record to associate with the event */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
48 NMUserRecord *user_record;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
49
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
50 /* Text associated with the event */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
51 char *text;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
52
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
53 /* Reference count for event structure */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
54 int ref_count;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
55
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
56 };
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
57
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
58 /* Handle getdetails response and set the new user record into the event */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
59 static void
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
60 _got_user_for_event(NMUser * user, NMERR_T ret_val,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
61 gpointer resp_data, gpointer user_data)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
62 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
63 NMUserRecord *user_record;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
64 NMEvent *event;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
65 nm_event_cb cb;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
66
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
67 if (user == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
68 return;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
69
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
70 user_record = resp_data;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
71 event = user_data;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
72
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
73 if (ret_val == NM_OK) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
74 if (event && user_record) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
75
8684
7ec649752daa [gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
76 /* Add the user record to the event structure
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
77 * and make the callback.
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
78 */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
79 nm_event_set_user_record(event, user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
80 if ((cb = nm_user_get_event_callback(user))) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
81 cb(user, event);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
82 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
83 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
84
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
85 } else {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
86 /* Cleanup resp_data */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
87
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
88 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
89
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
90 /* Clean up */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
91 if (event)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
92 nm_release_event(event);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
93
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
94 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
95
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
96 /* Handle getdetails response, set the new user record into the event
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
97 * and add the user record as a participant in the conference
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
98 */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
99 static void
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
100 _got_user_for_conference(NMUser * user, NMERR_T ret_val,
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
101 gpointer resp_data, gpointer user_data)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
102 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
103 NMUserRecord *user_record = resp_data;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
104 NMEvent *event = user_data;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
105 NMConference *conference;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
106 nm_event_cb cb;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
107
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
108 if (user == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
109 return;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
110
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
111 if (event && user_record) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
112
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
113 conference = nm_event_get_conference(event);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
114 if (conference) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
115
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
116 /* Add source of event as recip of the conference */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
117 nm_conference_add_participant(conference, user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
118
8684
7ec649752daa [gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
119 /* Add the user record to the event structure
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
120 * and make the callback.
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
121 */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
122 nm_event_set_user_record(event, user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
123 if ((cb = nm_user_get_event_callback(user))) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
124 cb(user, event);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
125 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
126 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
127 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
128
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
129 if (event)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
130 nm_release_event(event);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
131 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
132
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
133 /* Read the receive message event, set up the event object, and
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
134 * get details for the event source if we don't have them yet.
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
135 */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
136 static NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
137 handle_receive_message(NMUser * user, NMEvent * event, gboolean autoreply)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
138 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
139 NMConference *conference;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
140 NMUserRecord *user_record;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
141 NMConn *conn;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
142 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
143 guint32 size = 0, flags = 0;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
144 char *msg = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
145 char *nortf = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
146 char *guid = NULL;
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
147 GError *error = NULL;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
148
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
149 conn = nm_user_get_conn(user);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
150
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
151 /* Read the conference guid */
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
152 size = g_data_input_stream_read_uint32(conn->input, user->cancellable,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
153 &error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
154 if (size > 1000) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
155 g_clear_error(&error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
156 return NMERR_PROTOCOL;
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
157 }
9839
6eb627432e0c [gaim-migrate @ 10716]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
158
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
159 if (error == NULL) {
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
160 guid = g_new0(char, size + 1);
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
161 g_input_stream_read_all(G_INPUT_STREAM(conn->input), guid, size, NULL,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
162 user->cancellable, &error);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
163 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
164
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
165 /* Read the conference flags */
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
166 if (error == NULL) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
167 flags = g_data_input_stream_read_uint32(conn->input, user->cancellable,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
168 &error);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
169 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
170
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
171 /* Read the message text */
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
172 if (error == NULL) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
173 size = g_data_input_stream_read_uint32(conn->input, user->cancellable,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
174 &error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
175 if (size > 100000) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
176 g_clear_error(&error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
177 return NMERR_PROTOCOL;
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
178 }
9839
6eb627432e0c [gaim-migrate @ 10716]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
179
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
180 if (error == NULL) {
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
181 msg = g_new0(char, size + 1);
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
182 g_input_stream_read_all(G_INPUT_STREAM(conn->input), msg, size,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
183 NULL, user->cancellable, &error);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
184
40765
a5381c20e802 Use specific purple_debug_* functions
Arkadiy Illarionov <qarkai@gmail.com>
parents: 40146
diff changeset
185 purple_debug_info("novell", "Message is %s", msg);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
186
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
187 /* Auto replies are not in RTF format! */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
188 if (!autoreply) {
9268
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
189 NMRtfContext *ctx;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
190
9268
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
191 ctx = nm_rtf_init();
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
192 nortf = nm_rtf_strip_formatting(ctx, msg);
196cbf2cae4c [gaim-migrate @ 10069]
Mike Stoddard <mistoddard@novell.com>
parents: 8933
diff changeset
193 nm_rtf_deinit(ctx);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
194
40765
a5381c20e802 Use specific purple_debug_* functions
Arkadiy Illarionov <qarkai@gmail.com>
parents: 40146
diff changeset
195 purple_debug_info("novell", "Message without RTF is %s", nortf);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
196
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
197 /* Store the event data */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
198 nm_event_set_text(event, nortf);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
199
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
200 } else {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
201
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
202 /* Store the event data */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
203 nm_event_set_text(event, msg);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
204 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
205 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
206 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
207
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
208 if (error != NULL) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
209 if (error->code == G_IO_ERROR_CANCELLED) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
210 rc = NM_OK;
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
211 } else {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
212 rc = NMERR_TCP_READ;
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
213 }
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
214 g_error_free(error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
215 return rc;
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
216 }
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
217
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
218 /* Check to see if we already know about the conference */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
219 conference = nm_conference_list_find(user, guid);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
220 if (conference) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
221
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
222 nm_conference_set_flags(conference, flags);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
223 nm_event_set_conference(event, conference);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
224
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
225 /* Add a reference to the user record in our event object */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
226 user_record = nm_find_user_record(user, nm_event_get_source(event));
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
227 if (user_record) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
228 nm_event_set_user_record(event, user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
229 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
230
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
231 } else {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
232
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
233 /* This is a new conference, so create one and add it to our list */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
234 conference = nm_create_conference(guid);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
235 nm_conference_set_flags(conference, flags);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
236
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
237 /* Add a reference to the conference in the event */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
238 nm_event_set_conference(event, conference);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
239
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
240 /* Add new conference to the conference list */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
241 nm_conference_list_add(user, conference);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
242
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
243 /* Check to see if we have details for the event source yet */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
244 user_record = nm_find_user_record(user, nm_event_get_source(event));
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
245 if (user_record) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
246
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
247 /* We do so add the user record as a recipient of the conference */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
248 nm_conference_add_participant(conference, user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
249
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
250 /* Add a reference to the user record in our event object */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
251 nm_event_set_user_record(event, user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
252
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
253 } else {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
254
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
255 /* Need to go to the server to get details for the user */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
256 rc = nm_send_get_details(user, nm_event_get_source(event),
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
257 _got_user_for_conference, event);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
258 if (rc == NM_OK)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
259 rc = -1; /* Not done processing the event yet! */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
260 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
261
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
262 nm_release_conference(conference);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
263 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
264
37425
5061721fd98f Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 36180
diff changeset
265 g_free(msg);
5061721fd98f Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 36180
diff changeset
266 g_free(nortf);
5061721fd98f Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 36180
diff changeset
267 g_free(guid);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
268
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
269 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
270 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
271
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
272 /* Read the invite event, set up the event object, and
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
273 * get details for the event source if we don't have them yet.
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
274 */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
275 static NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
276 handle_conference_invite(NMUser * user, NMEvent * event)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
277 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
278 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
279 guint32 size = 0;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
280 char *guid = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
281 char *msg = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
282 NMConn *conn;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
283 NMUserRecord *user_record;
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
284 GError *error = NULL;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
285
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
286 conn = nm_user_get_conn(user);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
287
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
288 /* Read the conference guid */
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
289 size = g_data_input_stream_read_uint32(conn->input, user->cancellable,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
290 &error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
291 if (size > 1000) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
292 g_clear_error(&error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
293 return NMERR_PROTOCOL;
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
294 }
9839
6eb627432e0c [gaim-migrate @ 10716]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
295
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
296 if (error == NULL) {
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
297 guid = g_new0(char, size + 1);
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
298 g_input_stream_read_all(G_INPUT_STREAM(conn->input), guid, size, NULL,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
299 user->cancellable, &error);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
300 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
301
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
302 /* Read the the message */
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
303 if (error == NULL) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
304 size = g_data_input_stream_read_uint32(conn->input, user->cancellable,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
305 &error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
306 if (size > 100000) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
307 g_clear_error(&error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
308 return NMERR_PROTOCOL;
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
309 }
9839
6eb627432e0c [gaim-migrate @ 10716]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
310
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
311 if (error == NULL) {
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
312 msg = g_new0(char, size + 1);
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
313 g_input_stream_read_all(G_INPUT_STREAM(conn->input), msg, size,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
314 NULL, user->cancellable, &error);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
315 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
316 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
317
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
318 /* Store the event data */
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
319 if (error == NULL) {
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
320 NMConference *conference;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
321
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
322 nm_event_set_text(event, msg);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
323
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
324 conference = nm_conference_list_find(user, guid);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
325 if (conference == NULL) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
326 conference = nm_create_conference(guid);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
327
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
328 /* Add new conference to the list and the event */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
329 nm_conference_list_add(user, conference);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
330 nm_event_set_conference(event, conference);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
331
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
332 /* Check to see if we have details for the event source yet */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
333 user_record = nm_find_user_record(user, nm_event_get_source(event));
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
334 if (user_record) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
335
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
336 /* Add a reference to the user record in our event object */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
337 nm_event_set_user_record(event, user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
338
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
339 } else {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
340
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
341 /* Need to go to the server to get details for the user */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
342 rc = nm_send_get_details(user, nm_event_get_source(event),
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
343 _got_user_for_event, event);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
344 if (rc == NM_OK)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
345 rc = -1; /* Not done processing the event yet! */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
346 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
347
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
348 nm_release_conference(conference);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
349
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
350 }
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
351 } else {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
352 if (error->code != G_IO_ERROR_CANCELLED) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
353 rc = NMERR_TCP_READ;
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
354 }
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
355 g_error_free(error);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
356 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
357
37425
5061721fd98f Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 36180
diff changeset
358 g_free(msg);
5061721fd98f Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 36180
diff changeset
359 g_free(guid);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
360
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
361 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
362 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
363
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
364 /* Read the invite notify event, set up the event object, and
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
365 * get details for the event source if we don't have them yet.
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
366 */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
367 static NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
368 handle_conference_invite_notify(NMUser * user, NMEvent * event)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
369 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
370 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
371 guint32 size = 0;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
372 char *guid = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
373 NMConn *conn;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
374 NMConference *conference;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
375 NMUserRecord *user_record;
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
376 GError *error = NULL;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
377
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
378 conn = nm_user_get_conn(user);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
379
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
380 /* Read the conference guid */
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
381 size = g_data_input_stream_read_uint32(conn->input, user->cancellable,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
382 &error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
383 if (size > 1000) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
384 g_clear_error(&error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
385 return NMERR_PROTOCOL;
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
386 }
9839
6eb627432e0c [gaim-migrate @ 10716]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
387
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
388 if (error == NULL) {
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
389 guid = g_new0(char, size + 1);
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
390 g_input_stream_read_all(G_INPUT_STREAM(conn->input), guid, size, NULL,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
391 user->cancellable, &error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
392 }
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
393
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
394 if (error != NULL) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
395 if (error->code == G_IO_ERROR_CANCELLED) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
396 rc = NM_OK;
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
397 } else {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
398 rc = NMERR_TCP_READ;
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
399 }
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
400 g_error_free(error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
401 return rc;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
402 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
403
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
404 conference = nm_conference_list_find(user, guid);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
405 if (conference) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
406 nm_event_set_conference(event, conference);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
407
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
408 /* Check to see if we have details for the event source yet */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
409 user_record = nm_find_user_record(user, nm_event_get_source(event));
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
410 if (user_record) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
411
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
412 /* Add a reference to the user record in our event object */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
413 nm_event_set_user_record(event, user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
414
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
415 } else {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
416
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
417 /* Need to go to the server to get details for the user */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
418 rc = nm_send_get_details(user, nm_event_get_source(event),
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
419 _got_user_for_event, event);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
420 if (rc == NM_OK)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
421 rc = -1; /* Not done processing the event yet! */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
422 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
423
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
424 } else {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
425 rc = NMERR_CONFERENCE_NOT_FOUND;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
426 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
427
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
428
37425
5061721fd98f Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 36180
diff changeset
429 g_free(guid);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
430
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
431 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
432 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
433
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
434 /* Read the conference reject event and set up the event object */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
435 static NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
436 handle_conference_reject(NMUser * user, NMEvent * event)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
437 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
438 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
439 guint32 size = 0;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
440 char *guid = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
441 NMConn *conn;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
442 NMConference *conference;
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
443 GError *error = NULL;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
444
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
445 conn = nm_user_get_conn(user);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
446
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
447 /* Read the conference guid */
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
448 size = g_data_input_stream_read_uint32(conn->input, user->cancellable,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
449 &error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
450 if (size > 1000) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
451 g_clear_error(&error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
452 return NMERR_PROTOCOL;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
453 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
454
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
455 if (error == NULL) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
456 guid = g_new0(char, size + 1);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
457 g_input_stream_read_all(G_INPUT_STREAM(conn->input), guid, size, NULL,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
458 user->cancellable, &error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
459 }
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
460
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
461 if (error == NULL) {
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
462 conference = nm_conference_list_find(user, guid);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
463 if (conference) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
464 nm_event_set_conference(event, conference);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
465 } else {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
466 rc = NMERR_CONFERENCE_NOT_FOUND;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
467 }
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
468 } else {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
469 if (error->code != G_IO_ERROR_CANCELLED) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
470 rc = NMERR_TCP_READ;
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
471 }
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
472 g_error_free(error);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
473 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
474
37425
5061721fd98f Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 36180
diff changeset
475 g_free(guid);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
476
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
477 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
478 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
479
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
480 /* Read the conference left event, set up the event object, and
8684
7ec649752daa [gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
481 * remove the conference from the list if there are no more
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
482 * participants
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
483 */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
484 static NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
485 handle_conference_left(NMUser * user, NMEvent * event)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
486 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
487 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
488 guint32 size = 0, flags = 0;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
489 char *guid = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
490 NMConference *conference;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
491 NMConn *conn;
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
492 GError *error = NULL;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
493
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
494 conn = nm_user_get_conn(user);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
495
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
496 /* Read the conference guid */
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
497 size = g_data_input_stream_read_uint32(conn->input, user->cancellable,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
498 &error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
499 if (size > 1000) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
500 g_clear_error(&error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
501 return NMERR_PROTOCOL;
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
502 }
9839
6eb627432e0c [gaim-migrate @ 10716]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
503
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
504 if (error == NULL) {
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
505 guid = g_new0(char, size + 1);
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
506 g_input_stream_read_all(G_INPUT_STREAM(conn->input), guid, size, NULL,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
507 user->cancellable, &error);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
508 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
509
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
510 /* Read the conference flags */
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
511 if (error == NULL) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
512 flags = g_data_input_stream_read_uint32(conn->input, user->cancellable,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
513 &error);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
514 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
515
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
516 if (error == NULL) {
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
517 conference = nm_conference_list_find(user, guid);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
518 if (conference) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
519 nm_event_set_conference(event, conference);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
520 nm_conference_set_flags(conference, flags);
8684
7ec649752daa [gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
521
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
522 nm_conference_remove_participant(conference, nm_event_get_source(event));
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
523 if (nm_conference_get_participant_count(conference) == 0) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
524 nm_conference_list_remove(user, conference);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
525 }
8684
7ec649752daa [gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
526
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
527 } else {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
528 rc = NMERR_CONFERENCE_NOT_FOUND;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
529 }
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
530 } else {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
531 if (error->code != G_IO_ERROR_CANCELLED) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
532 rc = NMERR_TCP_READ;
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
533 }
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
534 g_error_free(error);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
535 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
536
37425
5061721fd98f Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 36180
diff changeset
537 g_free(guid);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
538
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
539 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
540 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
541
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
542 /* Read the conference closed, set up the event object, and
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
543 * remove the conference from the list
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
544 */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
545 static NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
546 handle_conference_closed(NMUser * user, NMEvent * event)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
547 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
548 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
549 guint32 size = 0;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
550 char *guid = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
551 NMConference *conference;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
552 NMConn *conn;
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
553 GError *error = NULL;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
554
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
555 conn = nm_user_get_conn(user);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
556
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
557 /* Read the conference guid */
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
558 size = g_data_input_stream_read_uint32(conn->input, user->cancellable,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
559 &error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
560 if (size > 1000) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
561 g_clear_error(&error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
562 return NMERR_PROTOCOL;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
563 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
564
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
565 if (error == NULL) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
566 guid = g_new0(char, size + 1);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
567 g_input_stream_read_all(G_INPUT_STREAM(conn->input), guid, size, NULL,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
568 user->cancellable, &error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
569 }
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
570
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
571 if (error == NULL) {
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
572 conference = nm_conference_list_find(user, guid);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
573 if (conference) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
574 nm_event_set_conference(event, conference);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
575 nm_conference_list_remove(user, conference);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
576 } else {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
577 rc = NMERR_CONFERENCE_NOT_FOUND;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
578 }
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
579 } else {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
580 if (error->code != G_IO_ERROR_CANCELLED) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
581 rc = NMERR_TCP_READ;
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
582 }
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
583 g_error_free(error);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
584 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
585
37425
5061721fd98f Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 36180
diff changeset
586 g_free(guid);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
587
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
588 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
589 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
590
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
591 /* Read the conference joined event, set up the event object, and
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
592 * get details for the event source if we don't have them yet.
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
593 */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
594 static NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
595 handle_conference_joined(NMUser * user, NMEvent * event)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
596 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
597 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
598 guint32 size = 0, flags = 0;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
599 char *guid = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
600 NMConn *conn;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
601 NMConference *conference;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
602 NMUserRecord *user_record;
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
603 GError *error = NULL;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
604
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
605 conn = nm_user_get_conn(user);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
606
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
607 /* Read the conference guid */
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
608 size = g_data_input_stream_read_uint32(conn->input, user->cancellable,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
609 &error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
610 if (size > 1000) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
611 g_clear_error(&error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
612 return NMERR_PROTOCOL;
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
613 }
9839
6eb627432e0c [gaim-migrate @ 10716]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
614
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
615 if (error == NULL) {
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
616 guid = g_new0(char, size + 1);
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
617 g_input_stream_read_all(G_INPUT_STREAM(conn->input), guid, size, NULL,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
618 user->cancellable, &error);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
619 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
620
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
621 /* Read the conference flags */
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
622 if (error == NULL) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
623 flags = g_data_input_stream_read_uint32(conn->input, user->cancellable,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
624 &error);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
625 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
626
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
627 if (error == NULL) {
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
628 conference = nm_conference_list_find(user, guid);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
629 if (conference) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
630 nm_conference_set_flags(conference, flags);
8684
7ec649752daa [gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
631
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
632 nm_event_set_conference(event, conference);
8684
7ec649752daa [gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
633
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
634 /* Add the new user to the participants list */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
635 user_record = nm_find_user_record(user, nm_event_get_source(event));
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
636 if (user_record) {
8933
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
637 nm_conference_remove_participant(conference,
0f1e8160581d [gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents: 8874
diff changeset
638 nm_user_record_get_dn(user_record));
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
639 nm_conference_add_participant(conference, user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
640 } else {
8684
7ec649752daa [gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
641
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
642 /* Need to go to the server to get details for the user */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
643 rc = nm_send_get_details(user, nm_event_get_source(event),
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
644 _got_user_for_conference, event);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
645 if (rc == NM_OK)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
646 rc = -1; /* Not done processing the event yet! */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
647 }
8684
7ec649752daa [gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents: 8675
diff changeset
648
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
649 } else {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
650 rc = NMERR_CONFERENCE_NOT_FOUND;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
651 }
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
652 } else {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
653 if (error->code != G_IO_ERROR_CANCELLED) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
654 rc = NMERR_TCP_READ;
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
655 }
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
656 g_error_free(error);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
657 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
658
37425
5061721fd98f Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 36180
diff changeset
659 g_free(guid);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
660
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
661 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
662 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
663
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
664 /* Read the typing event and set up the event object */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
665 static NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
666 handle_typing(NMUser * user, NMEvent * event)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
667 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
668 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
669 guint32 size = 0;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
670 char *guid = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
671 NMConference *conference;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
672 NMConn *conn;
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
673 GError *error = NULL;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
674
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
675 conn = nm_user_get_conn(user);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
676
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
677 /* Read the conference guid */
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
678 size = g_data_input_stream_read_uint32(conn->input, user->cancellable,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
679 &error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
680 if (size > 1000) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
681 g_clear_error(&error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
682 return NMERR_PROTOCOL;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
683 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
684
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
685 if (error == NULL) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
686 guid = g_new0(char, size + 1);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
687 g_input_stream_read_all(G_INPUT_STREAM(conn->input), guid, size, NULL,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
688 user->cancellable, &error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
689 }
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
690
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
691 if (error == NULL) {
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
692 conference = nm_conference_list_find(user, guid);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
693 if (conference) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
694 nm_event_set_conference(event, conference);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
695 } else {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
696 rc = NMERR_CONFERENCE_NOT_FOUND;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
697 }
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
698 } else {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
699 if (error->code != G_IO_ERROR_CANCELLED) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
700 rc = NMERR_TCP_READ;
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
701 }
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
702 g_error_free(error);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
703 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
704
37425
5061721fd98f Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 36180
diff changeset
705 g_free(guid);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
706
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
707 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
708 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
709
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
710 /* Read the event, set up the event object, and update
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
711 * the status in the user record (for the event source)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
712 */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
713 static NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
714 handle_status_change(NMUser * user, NMEvent * event)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
715 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
716 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
717 guint16 status;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
718 guint32 size;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
719 char *text = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
720 NMUserRecord *user_record;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
721 NMConn *conn;
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
722 GError *error = NULL;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
723
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
724 conn = nm_user_get_conn(user);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
725
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
726 /* Read new status */
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
727 status = g_data_input_stream_read_uint16(conn->input, user->cancellable,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
728 &error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
729 if (error == NULL) {
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
730
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
731 /* Read the status text */
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
732 size = g_data_input_stream_read_uint32(conn->input, user->cancellable,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
733 &error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
734 if (size > 10000) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
735 g_clear_error(&error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
736 return NMERR_PROTOCOL;
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
737 }
9839
6eb627432e0c [gaim-migrate @ 10716]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
738
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
739 if (error == NULL) {
9839
6eb627432e0c [gaim-migrate @ 10716]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
740 text = g_new0(char, size + 1);
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
741 g_input_stream_read_all(G_INPUT_STREAM(conn->input), text, size,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
742 NULL, user->cancellable, &error);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
743 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
744 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
745
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
746 if (error == NULL) {
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
747 nm_event_set_text(event, text);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
748
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
749 /* Get a reference to the user record and store the new status */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
750 user_record = nm_find_user_record(user, nm_event_get_source(event));
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
751 if (user_record) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
752 nm_event_set_user_record(event, user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
753 nm_user_record_set_status(user_record, status, text);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
754 }
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
755 } else {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
756 if (error->code != G_IO_ERROR_CANCELLED) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
757 rc = NMERR_TCP_READ;
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
758 }
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
759 g_error_free(error);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
760 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
761
37425
5061721fd98f Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 36180
diff changeset
762 g_free(text);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
763
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
764 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
765 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
766
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
767 /* Read the undeliverable event */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
768 static NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
769 handle_undeliverable_status(NMUser * user, NMEvent * event)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
770 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
771 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
772 guint32 size = 0;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
773 char *guid = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
774 NMConn *conn;
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
775 GError *error = NULL;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
776
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
777 conn = nm_user_get_conn(user);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
778
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
779 /* Read the conference guid */
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
780 size = g_data_input_stream_read_uint32(conn->input, user->cancellable,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
781 &error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
782 if (size > 1000) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
783 g_clear_error(&error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
784 return NMERR_PROTOCOL;
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
785 }
9839
6eb627432e0c [gaim-migrate @ 10716]
Mike Stoddard <mistoddard@novell.com>
parents: 9268
diff changeset
786
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
787 if (error == NULL) {
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
788 guid = g_new0(char, size + 1);
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
789 rc = g_input_stream_read_all(G_INPUT_STREAM(conn->input), guid, size,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
790 NULL, user->cancellable, &error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
791 } else {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
792 if (error->code != G_IO_ERROR_CANCELLED) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
793 rc = NMERR_TCP_READ;
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
794 }
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
795 g_error_free(error);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
796 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
797
37425
5061721fd98f Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 36180
diff changeset
798 g_free(guid);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
799
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
800 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
801 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
802
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
803 /*******************************************************************************
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
804 * Event API -- see header file for comments
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
805 ******************************************************************************/
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
806
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
807 NMEvent *
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
808 nm_create_event(int type, const char *source, guint32 gmt)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
809 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
810 NMEvent *event = g_new0(NMEvent, 1);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
811
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
812 event->type = type;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
813 event->gmt = gmt;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
814
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
815 if (source)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
816 event->source = g_strdup(source);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
817
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
818 event->ref_count = 1;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
819
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
820 return event;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
821 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
822
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
823 void
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
824 nm_release_event(NMEvent * event)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
825 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
826 if (event == NULL) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
827 return;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
828 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
829
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
830 if (--(event->ref_count) == 0) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
831
37425
5061721fd98f Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 36180
diff changeset
832 g_free(event->source);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
833
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
834 if (event->conference)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
835 nm_release_conference(event->conference);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
836
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
837 if (event->user_record)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
838 nm_release_user_record(event->user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
839
37425
5061721fd98f Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 36180
diff changeset
840 g_free(event->text);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
841
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
842 g_free(event);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
843 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
844 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
845
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
846
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
847 NMConference *
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
848 nm_event_get_conference(NMEvent * event)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
849 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
850 if (event)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
851 return event->conference;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
852 else
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
853 return NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
854 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
855
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
856 void
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
857 nm_event_set_conference(NMEvent * event, NMConference * conference)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
858 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
859 if (event && conference) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
860 nm_conference_add_ref(conference);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
861 event->conference = conference;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
862 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
863 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
864
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
865 NMUserRecord *
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
866 nm_event_get_user_record(NMEvent * event)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
867 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
868 if (event)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
869 return event->user_record;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
870 else
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
871 return NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
872 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
873
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
874 void
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
875 nm_event_set_user_record(NMEvent * event, NMUserRecord * user_record)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
876 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
877 if (event && user_record) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
878 nm_user_record_add_ref(user_record);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
879 event->user_record = user_record;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
880 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
881 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
882
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
883 const char *
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
884 nm_event_get_text(NMEvent * event)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
885 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
886 if (event)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
887 return event->text;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
888 else
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
889 return NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
890 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
891
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
892 void
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
893 nm_event_set_text(NMEvent * event, const char *text)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
894 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
895 if (event) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
896 if (text)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
897 event->text = g_strdup(text);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
898 else
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
899 event->text = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
900 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
901 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
902
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
903 const char *
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
904 nm_event_get_source(NMEvent * event)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
905 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
906 if (event)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
907 return event->source;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
908 else
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
909 return NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
910 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
911
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
912 int
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
913 nm_event_get_type(NMEvent * event)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
914 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
915 if (event)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
916 return event->type;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
917 else
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
918 return -1;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
919 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
920
13120
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 9839
diff changeset
921 time_t
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
922 nm_event_get_gmt(NMEvent * event)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
923 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
924 if (event)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
925 return event->gmt;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
926 else
13120
c25222322810 [gaim-migrate @ 15481]
Richard Laager <rlaager@pidgin.im>
parents: 9839
diff changeset
927 return (time_t)-1;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
928 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
929
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
930 NMERR_T
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
931 nm_process_event(NMUser * user, int type)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
932 {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
933 NMERR_T rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
934 guint32 size = 0;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
935 NMEvent *event = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
936 char *source = NULL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
937 nm_event_cb cb;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
938 NMConn *conn;
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
939 GError *error = NULL;
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
940
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
941 if (user == NULL)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
942 return NMERR_BAD_PARM;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
943
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
944 if (type < NMEVT_START || type > NMEVT_STOP)
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
945 return NMERR_PROTOCOL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
946
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
947 conn = nm_user_get_conn(user);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
948
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
949 /* Read the event source */
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
950 size = g_data_input_stream_read_uint32(conn->input, user->cancellable,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
951 &error);
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
952 if (error == NULL) {
36180
44fd89158777 In Novell Groupwise, fix potential remote crash parsing server message
Mark Doliner <mark@kingant.net>
parents: 19859
diff changeset
953 if (size > 1000000) {
44fd89158777 In Novell Groupwise, fix potential remote crash parsing server message
Mark Doliner <mark@kingant.net>
parents: 19859
diff changeset
954 /* Size is larger than our 1MB sanity check. Ignore it. */
44fd89158777 In Novell Groupwise, fix potential remote crash parsing server message
Mark Doliner <mark@kingant.net>
parents: 19859
diff changeset
955 rc = NMERR_PROTOCOL;
44fd89158777 In Novell Groupwise, fix potential remote crash parsing server message
Mark Doliner <mark@kingant.net>
parents: 19859
diff changeset
956 } else {
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
957 source = g_new0(char, size);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
958
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
959 rc = g_input_stream_read_all(G_INPUT_STREAM(conn->input), source,
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
960 size, NULL, user->cancellable, &error);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
961 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
962 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
963
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
964 /* Read the event data */
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
965 if (error == NULL) {
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
966 event = nm_create_event(type, source, time(0));
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
967
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
968 if (event) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
969
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
970 switch (type) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
971 case NMEVT_STATUS_CHANGE:
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
972 rc = handle_status_change(user, event);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
973 break;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
974
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
975 case NMEVT_RECEIVE_MESSAGE:
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
976 rc = handle_receive_message(user, event, FALSE);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
977 break;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
978
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
979 case NMEVT_RECEIVE_AUTOREPLY:
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
980 rc = handle_receive_message(user, event, TRUE);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
981 break;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
982
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
983 case NMEVT_USER_TYPING:
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
984 case NMEVT_USER_NOT_TYPING:
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
985 rc = handle_typing(user, event);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
986 break;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
987
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
988 case NMEVT_CONFERENCE_LEFT:
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
989 rc = handle_conference_left(user, event);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
990 break;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
991
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
992 case NMEVT_CONFERENCE_CLOSED:
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
993 rc = handle_conference_closed(user, event);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
994 break;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
995
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
996 case NMEVT_CONFERENCE_JOINED:
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
997 rc = handle_conference_joined(user, event);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
998 break;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
999
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1000 case NMEVT_CONFERENCE_INVITE:
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1001 rc = handle_conference_invite(user, event);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1002 break;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1003
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1004 case NMEVT_CONFERENCE_REJECT:
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1005 rc = handle_conference_reject(user, event);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1006 break;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1007
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1008 case NMEVT_CONFERENCE_INVITE_NOTIFY:
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1009 rc = handle_conference_invite_notify(user, event);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1010 break;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1011
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1012 case NMEVT_UNDELIVERABLE_STATUS:
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1013 rc = handle_undeliverable_status(user, event);
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1014 break;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1015
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1016 case NMEVT_INVALID_RECIPIENT:
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1017 /* Nothing else to read, just callback */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1018 break;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1019
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1020 case NMEVT_USER_DISCONNECT:
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1021 /* Nothing else to read, just callback */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1022 break;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1023
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1024 case NMEVT_SERVER_DISCONNECT:
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1025 /* Nothing else to read, just callback */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1026 break;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1027
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1028 case NMEVT_RECEIVE_FILE:
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1029 case NMEVT_CONTACT_ADD:
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1030 /* Safely ignored for now */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1031 break;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1032
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1033 default:
40765
a5381c20e802 Use specific purple_debug_* functions
Arkadiy Illarionov <qarkai@gmail.com>
parents: 40146
diff changeset
1034 purple_debug_info("novell", "Unknown event %d received.", type);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1035 rc = NMERR_PROTOCOL;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1036 break;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1037 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1038 }
40119
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
1039 } else {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
1040 if (error->code != G_IO_ERROR_CANCELLED) {
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
1041 rc = NMERR_TCP_READ;
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
1042 }
2e1969768857 novell: Replace socket wrappers with GIO functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 37425
diff changeset
1043 g_error_free(error);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1044 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1045
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1046 if (rc == (NMERR_T)-1) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1047 /* -1 means that we are not ready to callback yet. */
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1048 rc = NM_OK;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1049 } else if (rc == NM_OK && (cb = nm_user_get_event_callback(user))) {
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1050 cb(user, event);
40146
66604f791698 Fix some possible leaks.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40119
diff changeset
1051 }
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1052
40146
66604f791698 Fix some possible leaks.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40119
diff changeset
1053 if (event) {
66604f791698 Fix some possible leaks.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 40119
diff changeset
1054 nm_release_event(event);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1055 }
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1056
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1057 /* Cleanup */
37425
5061721fd98f Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents: 36180
diff changeset
1058 g_free(source);
8675
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1059
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1060 return rc;
4a14d9ec84a5 [gaim-migrate @ 9428]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1061 }

mercurial