Thu, 12 Apr 2001 23:08:37 +0000
[gaim-migrate @ 1715]
possible fixes?
| 1311 | 1 | /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */ |
| 2 | /* | |
| 3 | * gaim | |
| 4 | * | |
| 5 | * Some code copyright (C) 1998-1999, Mark Spencer <markster@marko.net> | |
| 6 | * libfaim code copyright 1998, 1999 Adam Fritzler <afritz@auk.cx> | |
| 7 | * | |
| 8 | * This program is free software; you can redistribute it and/or modify | |
| 9 | * it under the terms of the GNU General Public License as published by | |
| 10 | * the Free Software Foundation; either version 2 of the License, or | |
| 11 | * (at your option) any later version. | |
| 12 | * | |
| 13 | * This program is distributed in the hope that it will be useful, | |
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 16 | * GNU General Public License for more details. | |
| 17 | * | |
| 18 | * You should have received a copy of the GNU General Public License | |
| 19 | * along with this program; if not, write to the Free Software | |
| 20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 21 | * | |
| 22 | */ | |
| 23 | ||
| 24 | #ifdef HAVE_CONFIG_H | |
|
1514
cd2994c09798
[gaim-migrate @ 1524]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1499
diff
changeset
|
25 | #include "config.h" |
| 1311 | 26 | #endif |
| 27 | ||
| 28 | ||
|
1312
b099116cf994
[gaim-migrate @ 1322]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1311
diff
changeset
|
29 | #include <gtk/gtk.h> |
|
b099116cf994
[gaim-migrate @ 1322]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1311
diff
changeset
|
30 | #ifdef MAX |
|
b099116cf994
[gaim-migrate @ 1322]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1311
diff
changeset
|
31 | #undef MAX |
|
b099116cf994
[gaim-migrate @ 1322]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1311
diff
changeset
|
32 | #endif |
|
b099116cf994
[gaim-migrate @ 1322]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1311
diff
changeset
|
33 | #ifdef MIN |
|
b099116cf994
[gaim-migrate @ 1322]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1311
diff
changeset
|
34 | #undef MIN |
|
b099116cf994
[gaim-migrate @ 1322]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1311
diff
changeset
|
35 | #endif |
| 1311 | 36 | #include <netdb.h> |
| 37 | #include <unistd.h> | |
| 38 | #include <errno.h> | |
| 39 | #include <netinet/in.h> | |
| 40 | #include <arpa/inet.h> | |
| 41 | #include <string.h> | |
| 42 | #include <stdlib.h> | |
| 43 | #include <stdio.h> | |
| 44 | #include <time.h> | |
| 45 | #include <sys/socket.h> | |
| 46 | #include <sys/stat.h> | |
| 47 | #include "multi.h" | |
| 48 | #include "prpl.h" | |
| 49 | #include "gaim.h" | |
|
1347
6fa6aa0d4d6e
[gaim-migrate @ 1357]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1345
diff
changeset
|
50 | #include "jabber.h" |
| 1311 | 51 | |
|
1344
db71cfb65383
[gaim-migrate @ 1354]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1331
diff
changeset
|
52 | #include "pixmaps/available.xpm" |
|
1354
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
53 | #include "pixmaps/available-away.xpm" |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
54 | #include "pixmaps/available-chat.xpm" |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
55 | #include "pixmaps/available-xa.xpm" |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
56 | #include "pixmaps/available-dnd.xpm" |
|
1344
db71cfb65383
[gaim-migrate @ 1354]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1331
diff
changeset
|
57 | |
| 1311 | 58 | /* The priv member of gjconn's is a gaim_connection for now. */ |
| 59 | #define GJ_GC(x) ((struct gaim_connection *)(x)->priv) | |
| 60 | ||
| 61 | #define IQ_NONE -1 | |
| 62 | #define IQ_AUTH 0 | |
| 63 | #define IQ_ROSTER 1 | |
| 64 | ||
|
1354
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
65 | #define UC_AWAY 0x38 |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
66 | #define UC_CHAT 0x48 |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
67 | #define UC_XA 0x98 |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
68 | #define UC_DND 0x118 |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
69 | |
|
1469
180e5612097d
[gaim-migrate @ 1479]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1466
diff
changeset
|
70 | #define DEFAULT_SERVER "jabber.org" |
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
71 | #define DEFAULT_GROUPCHAT "conference.jabber.org" |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
72 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
73 | typedef struct gjconn_struct { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
74 | /* Core structure */ |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
75 | pool p; /* Memory allocation pool */ |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
76 | int state; /* Connection state flag */ |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
77 | int fd; /* Connection file descriptor */ |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
78 | jid user; /* User info */ |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
79 | char *pass; /* User passwd */ |
| 1311 | 80 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
81 | /* Stream stuff */ |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
82 | int id; /* id counter for jab_getid() function */ |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
83 | char idbuf[9]; /* temporary storage for jab_getid() */ |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
84 | char *sid; /* stream id from server, for digest auth */ |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
85 | XML_Parser parser; /* Parser instance */ |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
86 | xmlnode current; /* Current node in parsing instance.. */ |
| 1311 | 87 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
88 | /* Event callback ptrs */ |
|
1349
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
89 | void (*on_state)(struct gjconn_struct *j, int state); |
|
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
90 | void (*on_packet)(struct gjconn_struct *j, jpacket p); |
| 1311 | 91 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
92 | void *priv; |
| 1311 | 93 | |
| 94 | } *gjconn, gjconn_struct; | |
| 95 | ||
| 96 | typedef void (*gjconn_state_h)(gjconn j, int state); | |
| 97 | typedef void (*gjconn_packet_h)(gjconn j, jpacket p); | |
| 98 | ||
| 99 | static gjconn gjab_new(char *user, char *pass, void *priv); | |
| 100 | static void gjab_delete(gjconn j); | |
| 101 | static void gjab_state_handler(gjconn j, gjconn_state_h h); | |
| 102 | static void gjab_packet_handler(gjconn j, gjconn_packet_h h); | |
|
1331
e3414af7b5ab
[gaim-migrate @ 1341]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1316
diff
changeset
|
103 | static void gjab_start(gjconn j); |
| 1311 | 104 | static void gjab_stop(gjconn j); |
| 105 | static int gjab_getfd(gjconn j); | |
| 106 | static jid gjab_getjid(gjconn j); | |
| 107 | static char *gjab_getsid(gjconn j); | |
| 108 | static char *gjab_getid(gjconn j); | |
| 109 | static void gjab_send(gjconn j, xmlnode x); | |
| 110 | static void gjab_send_raw(gjconn j, const char *str); | |
| 111 | static void gjab_recv(gjconn j); | |
| 112 | static char *gjab_auth(gjconn j); | |
| 113 | ||
| 114 | struct jabber_data { | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
115 | gjconn jc; |
|
1362
1d5b2a1e8dab
[gaim-migrate @ 1372]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1359
diff
changeset
|
116 | gboolean did_import; |
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
117 | GSList *pending_chats; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
118 | GSList *existing_chats; |
| 1311 | 119 | }; |
| 120 | ||
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
121 | static char *jabber_name() |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
122 | { |
| 1311 | 123 | return "Jabber"; |
| 124 | } | |
| 125 | ||
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
126 | char *name() |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
127 | { |
| 1311 | 128 | return "Jabber"; |
| 129 | } | |
| 130 | ||
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
131 | char *description() |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
132 | { |
| 1311 | 133 | return "Allows gaim to use the Jabber protocol"; |
| 134 | } | |
| 135 | ||
| 136 | #define STATE_EVT(arg) if(j->on_state) { (j->on_state)(j, (arg) ); } | |
| 137 | ||
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
138 | static char *create_valid_jid(const char *given, char *server, char *resource) |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
139 | { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
140 | char *valid; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
141 | |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
142 | if (!strchr(given, '@')) |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
143 | valid = g_strdup_printf("%s@%s/%s", given, server, resource); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
144 | else if (!strchr(strchr(given, '@'), '/')) |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
145 | valid = g_strdup_printf("%s/%s", given, resource); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
146 | else |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
147 | valid = g_strdup(given); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
148 | |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
149 | return valid; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
150 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
151 | |
| 1311 | 152 | static gjconn gjab_new(char *user, char *pass, void *priv) |
| 153 | { | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
154 | pool p; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
155 | gjconn j; |
| 1311 | 156 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
157 | if (!user) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
158 | return (NULL); |
| 1311 | 159 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
160 | p = pool_new(); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
161 | if (!p) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
162 | return (NULL); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
163 | j = pmalloc_x(p, sizeof(gjconn_struct), 0); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
164 | if (!j) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
165 | return (NULL); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
166 | j->p = p; |
| 1311 | 167 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
168 | j->user = jid_new(p, user); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
169 | j->pass = pstrdup(p, pass); |
| 1311 | 170 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
171 | j->state = JCONN_STATE_OFF; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
172 | j->id = 1; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
173 | j->fd = -1; |
| 1311 | 174 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
175 | j->priv = priv; |
| 1311 | 176 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
177 | return j; |
| 1311 | 178 | } |
| 179 | ||
| 180 | static void gjab_delete(gjconn j) | |
| 181 | { | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
182 | if (!j) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
183 | return; |
| 1311 | 184 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
185 | gjab_stop(j); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
186 | pool_free(j->p); |
| 1311 | 187 | } |
| 188 | ||
| 189 | static void gjab_state_handler(gjconn j, gjconn_state_h h) | |
| 190 | { | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
191 | if (!j) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
192 | return; |
| 1311 | 193 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
194 | j->on_state = h; |
| 1311 | 195 | } |
| 196 | ||
| 197 | static void gjab_packet_handler(gjconn j, gjconn_packet_h h) | |
| 198 | { | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
199 | if (!j) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
200 | return; |
| 1311 | 201 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
202 | j->on_packet = h; |
| 1311 | 203 | } |
| 204 | ||
| 205 | static void gjab_stop(gjconn j) | |
| 206 | { | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
207 | if (!j || j->state == JCONN_STATE_OFF) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
208 | return; |
| 1311 | 209 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
210 | j->state = JCONN_STATE_OFF; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
211 | gjab_send_raw(j, "</stream:stream>"); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
212 | close(j->fd); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
213 | j->fd = -1; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
214 | XML_ParserFree(j->parser); |
|
1668
2a8fdf2f5bb1
[gaim-migrate @ 1678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1666
diff
changeset
|
215 | j->parser = NULL; |
| 1311 | 216 | } |
| 217 | ||
| 218 | static int gjab_getfd(gjconn j) | |
| 219 | { | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
220 | if (j) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
221 | return j->fd; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
222 | else |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
223 | return -1; |
| 1311 | 224 | } |
| 225 | ||
| 226 | static jid gjab_getjid(gjconn j) | |
| 227 | { | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
228 | if (j) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
229 | return (j->user); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
230 | else |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
231 | return NULL; |
| 1311 | 232 | } |
| 233 | ||
| 234 | static char *gjab_getsid(gjconn j) | |
| 235 | { | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
236 | if (j) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
237 | return (j->sid); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
238 | else |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
239 | return NULL; |
| 1311 | 240 | } |
| 241 | ||
| 242 | static char *gjab_getid(gjconn j) | |
| 243 | { | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
244 | snprintf(j->idbuf, 8, "%d", j->id++); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
245 | return &j->idbuf[0]; |
| 1311 | 246 | } |
| 247 | ||
| 248 | static void gjab_send(gjconn j, xmlnode x) | |
| 249 | { | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
250 | if (j && j->state != JCONN_STATE_OFF) { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
251 | char *buf = xmlnode2str(x); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
252 | if (buf) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
253 | write(j->fd, buf, strlen(buf)); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
254 | debug_printf("gjab_send: %s\n", buf); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
255 | } |
| 1311 | 256 | } |
| 257 | ||
| 258 | static void gjab_send_raw(gjconn j, const char *str) | |
| 259 | { | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
260 | if (j && j->state != JCONN_STATE_OFF) { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
261 | write(j->fd, str, strlen(str)); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
262 | debug_printf("gjab_send_raw: %s\n", str); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
263 | } |
| 1311 | 264 | } |
| 265 | ||
| 266 | static void gjab_reqroster(gjconn j) | |
| 267 | { | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
268 | xmlnode x; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
269 | char *id; |
| 1311 | 270 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
271 | x = jutil_iqnew(JPACKET__GET, NS_ROSTER); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
272 | id = gjab_getid(j); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
273 | xmlnode_put_attrib(x, "id", id); |
| 1311 | 274 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
275 | gjab_send(j, x); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
276 | xmlnode_free(x); |
| 1311 | 277 | } |
| 278 | ||
| 279 | static char *gjab_auth(gjconn j) | |
| 280 | { | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
281 | xmlnode x, y, z; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
282 | char *hash, *user, *id; |
| 1311 | 283 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
284 | if (!j) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
285 | return NULL; |
| 1311 | 286 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
287 | x = jutil_iqnew(JPACKET__SET, NS_AUTH); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
288 | id = gjab_getid(j); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
289 | xmlnode_put_attrib(x, "id", id); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
290 | y = xmlnode_get_tag(x, "query"); |
| 1311 | 291 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
292 | user = j->user->user; |
| 1311 | 293 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
294 | if (user) { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
295 | z = xmlnode_insert_tag(y, "username"); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
296 | xmlnode_insert_cdata(z, user, -1); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
297 | } |
| 1311 | 298 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
299 | z = xmlnode_insert_tag(y, "resource"); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
300 | xmlnode_insert_cdata(z, j->user->resource, -1); |
| 1311 | 301 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
302 | if (j->sid) { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
303 | z = xmlnode_insert_tag(y, "digest"); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
304 | hash = pmalloc(x->p, strlen(j->sid) + strlen(j->pass) + 1); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
305 | strcpy(hash, j->sid); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
306 | strcat(hash, j->pass); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
307 | hash = shahash(hash); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
308 | xmlnode_insert_cdata(z, hash, 40); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
309 | } else { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
310 | z = xmlnode_insert_tag(y, "password"); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
311 | xmlnode_insert_cdata(z, j->pass, -1); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
312 | } |
| 1311 | 313 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
314 | gjab_send(j, x); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
315 | xmlnode_free(x); |
| 1311 | 316 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
317 | return id; |
| 1311 | 318 | } |
| 319 | ||
| 320 | static void gjab_recv(gjconn j) | |
| 321 | { | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
322 | static char buf[4096]; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
323 | int len; |
| 1311 | 324 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
325 | if (!j || j->state == JCONN_STATE_OFF) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
326 | return; |
| 1311 | 327 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
328 | if ((len = read(j->fd, buf, sizeof(buf) - 1))) { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
329 | buf[len] = '\0'; |
|
1668
2a8fdf2f5bb1
[gaim-migrate @ 1678]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1666
diff
changeset
|
330 | debug_printf("input (len %d): %s\n", len, buf); |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
331 | XML_Parse(j->parser, buf, len, 0); |
|
1551
4cfecf7ef756
[gaim-migrate @ 1561]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1522
diff
changeset
|
332 | } else if (len <= 0) { |
|
1666
4acd4604e08e
[gaim-migrate @ 1676]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1665
diff
changeset
|
333 | STATE_EVT(JCONN_STATE_OFF) |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
334 | } |
| 1311 | 335 | } |
| 336 | ||
| 337 | static void startElement(void *userdata, const char *name, const char **attribs) | |
| 338 | { | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
339 | xmlnode x; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
340 | gjconn j = (gjconn) userdata; |
| 1311 | 341 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
342 | if (j->current) { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
343 | /* Append the node to the current one */ |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
344 | x = xmlnode_insert_tag(j->current, name); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
345 | xmlnode_put_expat_attribs(x, attribs); |
| 1311 | 346 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
347 | j->current = x; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
348 | } else { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
349 | x = xmlnode_new_tag(name); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
350 | xmlnode_put_expat_attribs(x, attribs); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
351 | if (strcmp(name, "stream:stream") == 0) { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
352 | /* special case: name == stream:stream */ |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
353 | /* id attrib of stream is stored for digest auth */ |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
354 | j->sid = xmlnode_get_attrib(x, "id"); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
355 | /* STATE_EVT(JCONN_STATE_AUTH) */ |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
356 | } else { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
357 | j->current = x; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
358 | } |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
359 | } |
| 1311 | 360 | } |
| 361 | ||
| 362 | static void endElement(void *userdata, const char *name) | |
| 363 | { | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
364 | gjconn j = (gjconn) userdata; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
365 | xmlnode x; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
366 | jpacket p; |
| 1311 | 367 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
368 | if (j->current == NULL) { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
369 | /* we got </stream:stream> */ |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
370 | STATE_EVT(JCONN_STATE_OFF) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
371 | return; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
372 | } |
| 1311 | 373 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
374 | x = xmlnode_get_parent(j->current); |
| 1311 | 375 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
376 | if (!x) { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
377 | /* it is time to fire the event */ |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
378 | p = jpacket_new(j->current); |
| 1311 | 379 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
380 | if (j->on_packet) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
381 | (j->on_packet) (j, p); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
382 | else |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
383 | xmlnode_free(j->current); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
384 | } |
| 1311 | 385 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
386 | j->current = x; |
| 1311 | 387 | } |
| 388 | ||
| 389 | static void charData(void *userdata, const char *s, int slen) | |
| 390 | { | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
391 | gjconn j = (gjconn) userdata; |
| 1311 | 392 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
393 | if (j->current) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
394 | xmlnode_insert_cdata(j->current, s, slen); |
| 1311 | 395 | } |
| 396 | ||
|
1331
e3414af7b5ab
[gaim-migrate @ 1341]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1316
diff
changeset
|
397 | static void gjab_start(gjconn j) |
| 1311 | 398 | { |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
399 | xmlnode x; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
400 | char *t, *t2; |
| 1311 | 401 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
402 | if (!j || j->state != JCONN_STATE_OFF) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
403 | return; |
| 1311 | 404 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
405 | j->parser = XML_ParserCreate(NULL); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
406 | XML_SetUserData(j->parser, (void *)j); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
407 | XML_SetElementHandler(j->parser, startElement, endElement); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
408 | XML_SetCharacterDataHandler(j->parser, charData); |
| 1311 | 409 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
410 | j->fd = make_netsocket(5222, j->user->server, NETSOCKET_CLIENT); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
411 | if (j->fd < 0) { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
412 | STATE_EVT(JCONN_STATE_OFF) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
413 | return; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
414 | } |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
415 | j->state = JCONN_STATE_CONNECTED; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
416 | STATE_EVT(JCONN_STATE_CONNECTED) |
| 1311 | 417 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
418 | /* start stream */ |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
419 | x = jutil_header(NS_CLIENT, j->user->server); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
420 | t = xmlnode2str(x); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
421 | /* this is ugly, we can create the string here instead of jutil_header */ |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
422 | /* what do you think about it? -madcat */ |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
423 | t2 = strstr(t, "/>"); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
424 | *t2++ = '>'; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
425 | *t2 = '\0'; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
426 | gjab_send_raw(j, "<?xml version='1.0'?>"); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
427 | gjab_send_raw(j, t); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
428 | xmlnode_free(x); |
| 1311 | 429 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
430 | j->state = JCONN_STATE_ON; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
431 | STATE_EVT(JCONN_STATE_ON) |
| 1311 | 432 | } |
| 433 | ||
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
434 | static void jabber_callback(gpointer data, gint source, GdkInputCondition condition) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
435 | { |
| 1311 | 436 | struct gaim_connection *gc = (struct gaim_connection *)data; |
| 437 | struct jabber_data *jd = (struct jabber_data *)gc->proto_data; | |
| 438 | ||
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
439 | gjab_recv(jd->jc); |
| 1311 | 440 | } |
| 441 | ||
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
442 | static struct conversation *find_chat(struct gaim_connection *gc, char *name) |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
443 | { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
444 | GSList *bcs = gc->buddy_chats; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
445 | struct conversation *b = NULL; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
446 | char *chat = g_strdup(normalize(name)); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
447 | |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
448 | while (bcs) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
449 | b = bcs->data; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
450 | if (!strcasecmp(normalize(b->name), chat)) |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
451 | break; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
452 | b = NULL; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
453 | bcs = bcs->next; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
454 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
455 | |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
456 | g_free(chat); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
457 | return b; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
458 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
459 | |
|
1682
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
460 | static gboolean find_chat_buddy(struct conversation *b, char *name) |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
461 | { |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
462 | GList *m = b->in_room; |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
463 | |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
464 | while (m) { |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
465 | if (!strcasecmp(m->data, name)) |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
466 | return TRUE; |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
467 | m = m->next; |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
468 | } |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
469 | |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
470 | return FALSE; |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
471 | } |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
472 | |
| 1311 | 473 | static void jabber_handlemessage(gjconn j, jpacket p) |
| 474 | { | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
475 | xmlnode y; |
|
1362
1d5b2a1e8dab
[gaim-migrate @ 1372]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1359
diff
changeset
|
476 | gboolean same = TRUE; |
| 1311 | 477 | |
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
478 | char *from = NULL, *msg = NULL, *type = NULL; |
|
1682
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
479 | char m[BUF_LONG * 2]; |
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
480 | |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
481 | type = xmlnode_get_attrib(p->x, "type"); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
482 | |
| 1485 | 483 | if (!type || !strcmp(type, "normal") || !strcmp(type, "chat")) { |
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
484 | from = jid_full(p->from); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
485 | if ((y = xmlnode_get_tag(p->x, "body"))) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
486 | msg = xmlnode_get_data(y); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
487 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
488 | |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
489 | if (!from || !msg) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
490 | return; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
491 | } |
| 1311 | 492 | |
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
493 | if (!find_conversation(from) && jid_cmp(p->from, jid_new(j->p, GJ_GC(j)->username))) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
494 | from = g_strdup_printf("%s@%s", p->from->user, p->from->server); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
495 | same = FALSE; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
496 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
497 | |
|
1682
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
498 | g_snprintf(m, sizeof(m), "%s", msg); |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
499 | serv_got_im(GJ_GC(j), from, m, 0); |
| 1311 | 500 | |
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
501 | if (!same) |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
502 | g_free(from); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
503 | } else if (!strcmp(type, "error")) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
504 | if ((y = xmlnode_get_tag(p->x, "error"))) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
505 | type = xmlnode_get_attrib(y, "code"); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
506 | msg = xmlnode_get_data(y); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
507 | } |
| 1311 | 508 | |
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
509 | if (msg) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
510 | from = g_strdup_printf("Error %s", type ? type : ""); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
511 | do_error_dialog(msg, from); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
512 | g_free(from); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
513 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
514 | } else if (!strcmp(type, "groupchat")) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
515 | struct conversation *b; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
516 | static int i = 0; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
517 | from = jid_full(p->from); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
518 | if ((y = xmlnode_get_tag(p->x, "body"))) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
519 | msg = xmlnode_get_data(y); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
520 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
521 | b = find_chat(GJ_GC(j), p->from->user); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
522 | if (!b) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
523 | jid chat = NULL; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
524 | struct jabber_data *jd = GJ_GC(j)->proto_data; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
525 | GSList *pc = jd->pending_chats; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
526 | while (pc) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
527 | chat = jid_new(j->p, pc->data); /* whoa */ |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
528 | if (!strcasecmp(p->from->user, chat->user)) |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
529 | break; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
530 | pc = pc->next; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
531 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
532 | if (pc) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
533 | serv_got_joined_chat(GJ_GC(j), i++, p->from->user); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
534 | b = find_chat(GJ_GC(j), p->from->user); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
535 | jd->existing_chats = g_slist_append(jd->existing_chats, pc->data); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
536 | jd->pending_chats = g_slist_remove(jd->pending_chats, pc->data); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
537 | } else { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
538 | return; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
539 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
540 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
541 | if (p->from->resource) { |
|
1682
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
542 | if (!y) { |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
543 | if (!find_chat_buddy(b, p->from->resource)) |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
544 | add_chat_buddy(b, p->from->resource); |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
545 | else if ((y = xmlnode_get_tag(p->x, "status"))) { |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
546 | char buf[8192]; |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
547 | msg = xmlnode_get_data(y); |
|
1696
cace8879aa30
[gaim-migrate @ 1706]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1688
diff
changeset
|
548 | g_snprintf(buf, sizeof(buf), "<B>%s now has status: %s</B>", |
|
1682
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
549 | p->from->resource, msg); |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
550 | write_to_conv(b, buf, WFLAG_SYSTEM, NULL); |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
551 | } |
|
1688
d01cef6d0e46
[gaim-migrate @ 1698]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1684
diff
changeset
|
552 | } else if (msg) { |
|
d01cef6d0e46
[gaim-migrate @ 1698]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1684
diff
changeset
|
553 | char buf[8192]; |
|
d01cef6d0e46
[gaim-migrate @ 1698]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1684
diff
changeset
|
554 | g_snprintf(buf, sizeof(buf), "%s", msg); |
|
d01cef6d0e46
[gaim-migrate @ 1698]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1684
diff
changeset
|
555 | serv_got_chat_in(GJ_GC(j), b->id, p->from->resource, 0, buf); |
|
d01cef6d0e46
[gaim-migrate @ 1698]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1684
diff
changeset
|
556 | } |
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
557 | /* |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
558 | } else if (msg) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
559 | write_to_conv(b, msg, WFLAG_SYSTEM, NULL); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
560 | */ |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
561 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
562 | } else { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
563 | debug_printf("unhandled message %s\n", type); |
|
1362
1d5b2a1e8dab
[gaim-migrate @ 1372]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1359
diff
changeset
|
564 | } |
| 1311 | 565 | } |
| 566 | ||
| 567 | static void jabber_handlepresence(gjconn j, jpacket p) | |
| 568 | { | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
569 | char *to, *from, *type; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
570 | struct buddy *b; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
571 | jid who; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
572 | char *buddy; |
|
1354
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
573 | xmlnode y; |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
574 | char *show; |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
575 | int state; |
|
1359
a916579e2f87
[gaim-migrate @ 1369]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1354
diff
changeset
|
576 | GSList *resources; |
|
a916579e2f87
[gaim-migrate @ 1369]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1354
diff
changeset
|
577 | char *res; |
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
578 | struct conversation *cnv = NULL; |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
579 | |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
580 | to = xmlnode_get_attrib(p->x, "to"); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
581 | from = xmlnode_get_attrib(p->x, "from"); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
582 | type = xmlnode_get_attrib(p->x, "type"); |
| 1311 | 583 | |
|
1354
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
584 | if ((y = xmlnode_get_tag(p->x, "show"))) { |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
585 | show = xmlnode_get_data(y); |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
586 | if (!strcmp(show, "away")) { |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
587 | state = UC_AWAY; |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
588 | } else if (!strcmp(show, "chat")) { |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
589 | state = UC_CHAT; |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
590 | } else if (!strcmp(show, "xa")) { |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
591 | state = UC_XA; |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
592 | } else if (!strcmp(show, "dnd")) { |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
593 | state = UC_DND; |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
594 | } |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
595 | } else { |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
596 | state = UC_NORMAL; |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
597 | } |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
598 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
599 | who = jid_new(j->p, from); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
600 | if (who->user == NULL) { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
601 | /* FIXME: transport */ |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
602 | return; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
603 | } |
| 1311 | 604 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
605 | buddy = g_strdup_printf("%s@%s", who->user, who->server); |
| 1311 | 606 | |
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
607 | /* um. we're going to check if it's a chat. if it isn't, and there are pending |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
608 | * chats, create the chat. if there aren't pending chats, add the buddy. */ |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
609 | if ((cnv = find_chat(GJ_GC(j), who->user)) == NULL) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
610 | static int i = 0x70; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
611 | jid chat = NULL; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
612 | struct jabber_data *jd = GJ_GC(j)->proto_data; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
613 | GSList *pc = jd->pending_chats; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
614 | |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
615 | while (pc) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
616 | chat = jid_new(j->p, pc->data); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
617 | if (!jid_cmpx(who, chat, JID_USER | JID_SERVER)) |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
618 | break; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
619 | pc = pc->next; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
620 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
621 | if (pc) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
622 | serv_got_joined_chat(GJ_GC(j), i++, who->user); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
623 | cnv = find_chat(GJ_GC(j), who->user); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
624 | jd->existing_chats = g_slist_append(jd->existing_chats, pc->data); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
625 | jd->pending_chats = g_slist_remove(jd->pending_chats, pc->data); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
626 | } else if (!(b = find_buddy(GJ_GC(j), buddy))) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
627 | b = add_buddy(GJ_GC(j), "Buddies", buddy, buddy); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
628 | do_export(NULL, NULL); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
629 | } |
|
1359
a916579e2f87
[gaim-migrate @ 1369]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1354
diff
changeset
|
630 | } |
| 1311 | 631 | |
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
632 | if (!cnv) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
633 | resources = b->proto_data; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
634 | res = who->resource; |
|
1611
4f0728d762eb
[gaim-migrate @ 1621]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1551
diff
changeset
|
635 | if (res) |
|
4f0728d762eb
[gaim-migrate @ 1621]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1551
diff
changeset
|
636 | while (resources) { |
|
4f0728d762eb
[gaim-migrate @ 1621]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1551
diff
changeset
|
637 | if (!strcmp(res, resources->data)) |
|
4f0728d762eb
[gaim-migrate @ 1621]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1551
diff
changeset
|
638 | break; |
|
4f0728d762eb
[gaim-migrate @ 1621]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1551
diff
changeset
|
639 | resources = resources->next; |
|
4f0728d762eb
[gaim-migrate @ 1621]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1551
diff
changeset
|
640 | } |
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
641 | |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
642 | if (type && (strcasecmp(type, "unavailable") == 0)) { |
|
1624
73c1dbcbbcf9
[gaim-migrate @ 1634]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1611
diff
changeset
|
643 | if (resources) { |
|
73c1dbcbbcf9
[gaim-migrate @ 1634]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1611
diff
changeset
|
644 | g_free(resources->data); |
|
73c1dbcbbcf9
[gaim-migrate @ 1634]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1611
diff
changeset
|
645 | b->proto_data = g_slist_remove(b->proto_data, resources->data); |
|
73c1dbcbbcf9
[gaim-migrate @ 1634]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1611
diff
changeset
|
646 | } |
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
647 | if (!b->proto_data) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
648 | serv_got_update(GJ_GC(j), buddy, 0, 0, 0, 0, 0, 0); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
649 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
650 | } else { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
651 | if (!resources) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
652 | b->proto_data = g_slist_append(b->proto_data, g_strdup(res)); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
653 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
654 | serv_got_update(GJ_GC(j), buddy, 1, 0, 0, 0, state, 0); |
|
1359
a916579e2f87
[gaim-migrate @ 1369]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1354
diff
changeset
|
655 | } |
|
a916579e2f87
[gaim-migrate @ 1369]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1354
diff
changeset
|
656 | } else { |
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
657 | if (who->resource) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
658 | if (type && !strcmp(type, "unavailable")) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
659 | struct jabber_data *jd = GJ_GC(j)->proto_data; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
660 | GSList *bcs = jd->existing_chats; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
661 | jid chat; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
662 | while (bcs) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
663 | chat = jid_new(j->p, bcs->data); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
664 | if (!strcasecmp(cnv->name, chat->user)) |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
665 | break; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
666 | bcs = bcs->next; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
667 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
668 | if (!bcs) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
669 | return; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
670 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
671 | |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
672 | if (strcasecmp(who->resource, chat->resource)) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
673 | remove_chat_buddy(cnv, who->resource); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
674 | return; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
675 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
676 | |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
677 | g_free(bcs->data); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
678 | jd->existing_chats = g_slist_remove(jd->existing_chats, bcs->data); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
679 | serv_got_chat_left(GJ_GC(j), cnv->id); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
680 | } else { |
|
1682
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
681 | if (!find_chat_buddy(cnv, who->resource)) |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
682 | add_chat_buddy(cnv, who->resource); |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
683 | else if ((y = xmlnode_get_tag(p->x, "status"))) { |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
684 | char buf[8192]; |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
685 | char *msg = xmlnode_get_data(y); |
|
1696
cace8879aa30
[gaim-migrate @ 1706]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1688
diff
changeset
|
686 | g_snprintf(buf, sizeof(buf), "<B>%s now has status: %s</B>", |
|
1682
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
687 | p->from->resource, msg); |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
688 | write_to_conv(cnv, buf, WFLAG_SYSTEM, NULL); |
|
bcdf069b512d
[gaim-migrate @ 1692]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1668
diff
changeset
|
689 | } |
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
690 | } |
|
1359
a916579e2f87
[gaim-migrate @ 1369]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1354
diff
changeset
|
691 | } |
|
a916579e2f87
[gaim-migrate @ 1369]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1354
diff
changeset
|
692 | } |
| 1311 | 693 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
694 | g_free(buddy); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
695 | |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
696 | return; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
697 | } |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
698 | |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
699 | static void jabber_handles10n(gjconn j, jpacket p) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
700 | { |
|
1349
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
701 | xmlnode g; |
|
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
702 | char *Jid = xmlnode_get_attrib(p->x, "from"); |
|
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
703 | char *ask = xmlnode_get_attrib(p->x, "type"); |
|
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
704 | |
|
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
705 | g = xmlnode_new_tag("presence"); |
|
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
706 | xmlnode_put_attrib(g, "to", Jid); |
|
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
707 | if (!strcmp(ask, "subscribe")) |
|
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
708 | xmlnode_put_attrib(g, "type", "subscribed"); |
|
1362
1d5b2a1e8dab
[gaim-migrate @ 1372]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1359
diff
changeset
|
709 | else if (!strcmp(ask, "unsubscribe")) |
|
1d5b2a1e8dab
[gaim-migrate @ 1372]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1359
diff
changeset
|
710 | xmlnode_put_attrib(g, "type", "unsubscribed"); |
|
1349
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
711 | else |
|
1362
1d5b2a1e8dab
[gaim-migrate @ 1372]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1359
diff
changeset
|
712 | return; |
|
1349
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
713 | |
|
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
714 | gjab_send(j, g); |
| 1311 | 715 | } |
| 716 | ||
| 717 | static void jabber_handleroster(gjconn j, xmlnode querynode) | |
| 718 | { | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
719 | xmlnode x; |
| 1311 | 720 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
721 | x = xmlnode_get_firstchild(querynode); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
722 | while (x) { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
723 | xmlnode g; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
724 | char *Jid, *name, *sub, *ask; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
725 | jid who; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
726 | |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
727 | Jid = xmlnode_get_attrib(x, "jid"); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
728 | name = xmlnode_get_attrib(x, "name"); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
729 | sub = xmlnode_get_attrib(x, "subscription"); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
730 | ask = xmlnode_get_attrib(x, "ask"); |
|
1349
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
731 | who = jid_new(j->p, Jid); |
| 1311 | 732 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
733 | if ((g = xmlnode_get_firstchild(x))) { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
734 | while (g) { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
735 | if (strncasecmp(xmlnode_get_name(g), "group", 5) == 0) { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
736 | struct buddy *b; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
737 | char *groupname, *buddyname; |
| 1311 | 738 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
739 | if (who->user == NULL) { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
740 | /* FIXME: transport */ |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
741 | g = xmlnode_get_nextsibling(g); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
742 | continue; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
743 | } |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
744 | buddyname = g_strdup_printf("%s@%s", who->user, who->server); |
|
1522
8800632547ab
[gaim-migrate @ 1532]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1514
diff
changeset
|
745 | groupname = xmlnode_get_data(xmlnode_get_firstchild(g)); |
|
8800632547ab
[gaim-migrate @ 1532]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1514
diff
changeset
|
746 | if (groupname == NULL) |
|
8800632547ab
[gaim-migrate @ 1532]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1514
diff
changeset
|
747 | groupname = "Buddies"; |
|
1683
5c8fb9b2d029
[gaim-migrate @ 1693]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1682
diff
changeset
|
748 | if (strcasecmp(sub, "from") && |
|
5c8fb9b2d029
[gaim-migrate @ 1693]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1682
diff
changeset
|
749 | !(b = find_buddy(GJ_GC(j), buddyname))) { |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
750 | debug_printf("adding buddy: %s\n", buddyname); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
751 | b = |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
752 | add_buddy(GJ_GC(j), groupname, buddyname, |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
753 | name ? name : buddyname); |
|
1344
db71cfb65383
[gaim-migrate @ 1354]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1331
diff
changeset
|
754 | do_export(0, 0); |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
755 | } else { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
756 | debug_printf("updating buddy: %s/%s\n", buddyname, name); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
757 | g_snprintf(b->name, sizeof(b->name), "%s", buddyname); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
758 | g_snprintf(b->show, sizeof(b->show), "%s", |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
759 | name ? name : buddyname); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
760 | } |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
761 | g_free(buddyname); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
762 | } |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
763 | g = xmlnode_get_nextsibling(g); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
764 | } |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
765 | } else { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
766 | struct buddy *b; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
767 | char *buddyname; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
768 | |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
769 | if (who->user == NULL) { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
770 | /* FIXME: transport */ |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
771 | x = xmlnode_get_nextsibling(x); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
772 | continue; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
773 | } |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
774 | buddyname = g_strdup_printf("%s@%s", who->user, who->server); |
|
1683
5c8fb9b2d029
[gaim-migrate @ 1693]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1682
diff
changeset
|
775 | if (strcasecmp(sub, "from") && !(b = find_buddy(GJ_GC(j), buddyname))) { |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
776 | b = add_buddy(GJ_GC(j), "Buddies", buddyname, name ? name : Jid); |
|
1344
db71cfb65383
[gaim-migrate @ 1354]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1331
diff
changeset
|
777 | do_export(0, 0); |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
778 | } |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
779 | g_free(buddyname); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
780 | } |
| 1311 | 781 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
782 | x = xmlnode_get_nextsibling(x); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
783 | } |
|
1331
e3414af7b5ab
[gaim-migrate @ 1341]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1316
diff
changeset
|
784 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
785 | x = jutil_presnew(0, NULL, "Online"); |
|
1331
e3414af7b5ab
[gaim-migrate @ 1341]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1316
diff
changeset
|
786 | gjab_send(j, x); |
|
e3414af7b5ab
[gaim-migrate @ 1341]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1316
diff
changeset
|
787 | xmlnode_free(x); |
| 1311 | 788 | } |
| 789 | ||
| 790 | static void jabber_handlepacket(gjconn j, jpacket p) | |
| 791 | { | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
792 | switch (p->type) { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
793 | case JPACKET_MESSAGE: |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
794 | jabber_handlemessage(j, p); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
795 | break; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
796 | case JPACKET_PRESENCE: |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
797 | jabber_handlepresence(j, p); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
798 | break; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
799 | case JPACKET_IQ: |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
800 | debug_printf("jpacket_subtype: %d\n", jpacket_subtype(p)); |
| 1311 | 801 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
802 | if (jpacket_subtype(p) == JPACKET__SET) { |
|
1684
5551247184a3
[gaim-migrate @ 1694]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1683
diff
changeset
|
803 | } else if (jpacket_subtype(p) == JPACKET__GET) { |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
804 | } else if (jpacket_subtype(p) == JPACKET__RESULT) { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
805 | xmlnode querynode; |
|
1362
1d5b2a1e8dab
[gaim-migrate @ 1372]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1359
diff
changeset
|
806 | char *xmlns, *from; |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
807 | |
|
1362
1d5b2a1e8dab
[gaim-migrate @ 1372]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1359
diff
changeset
|
808 | from = xmlnode_get_attrib(p->x, "from"); |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
809 | querynode = xmlnode_get_tag(p->x, "query"); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
810 | xmlns = xmlnode_get_attrib(querynode, "xmlns"); |
| 1311 | 811 | |
|
1362
1d5b2a1e8dab
[gaim-migrate @ 1372]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1359
diff
changeset
|
812 | if ((!xmlns && !from) || NSCHECK(querynode, NS_AUTH)) { |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
813 | debug_printf("auth success\n"); |
|
1331
e3414af7b5ab
[gaim-migrate @ 1341]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1316
diff
changeset
|
814 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
815 | account_online(GJ_GC(j)); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
816 | serv_finish_login(GJ_GC(j)); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
817 | |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
818 | if (bud_list_cache_exists(GJ_GC(j))) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
819 | do_import(NULL, GJ_GC(j)); |
|
1362
1d5b2a1e8dab
[gaim-migrate @ 1372]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1359
diff
changeset
|
820 | |
|
1d5b2a1e8dab
[gaim-migrate @ 1372]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1359
diff
changeset
|
821 | ((struct jabber_data *)GJ_GC(j)->proto_data)->did_import = TRUE; |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
822 | |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
823 | gjab_reqroster(j); |
| 1311 | 824 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
825 | } else if (NSCHECK(querynode, NS_ROSTER)) { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
826 | jabber_handleroster(j, querynode); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
827 | } else { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
828 | /* debug_printf("jabber:iq:query: %s\n", xmlns); */ |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
829 | } |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
830 | } else { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
831 | xmlnode x; |
| 1311 | 832 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
833 | debug_printf("auth failed\n"); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
834 | x = xmlnode_get_tag(p->x, "error"); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
835 | if (x) { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
836 | debug_printf("error %d: %s\n\n", |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
837 | atoi(xmlnode_get_attrib(x, "code")), |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
838 | xmlnode_get_data(xmlnode_get_firstchild(x))); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
839 | hide_login_progress(GJ_GC(j), |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
840 | xmlnode_get_data(xmlnode_get_firstchild(x))); |
| 1311 | 841 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
842 | } else |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
843 | hide_login_progress(GJ_GC(j), "unknown error"); |
| 1311 | 844 | |
|
1665
69b4b32ef2ae
[gaim-migrate @ 1675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1644
diff
changeset
|
845 | xmlnode_free(p->x); |
|
1704
944ad0123234
[gaim-migrate @ 1714]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1699
diff
changeset
|
846 | gjab_send_raw(j, "</stream:stream>"); |
|
1665
69b4b32ef2ae
[gaim-migrate @ 1675]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1644
diff
changeset
|
847 | return; |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
848 | } |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
849 | break; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
850 | case JPACKET_S10N: |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
851 | jabber_handles10n(j, p); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
852 | break; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
853 | default: |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
854 | debug_printf("jabber: packet type %d (%s)\n", p->type, xmlnode2str(p->x)); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
855 | } |
| 1311 | 856 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
857 | xmlnode_free(p->x); |
| 1311 | 858 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
859 | return; |
| 1311 | 860 | } |
| 861 | ||
| 862 | static void jabber_handlestate(gjconn j, int state) | |
| 863 | { | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
864 | switch (state) { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
865 | case JCONN_STATE_OFF: |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
866 | hide_login_progress(GJ_GC(j), "Unable to connect"); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
867 | signoff(GJ_GC(j)); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
868 | break; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
869 | case JCONN_STATE_CONNECTED: |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
870 | set_login_progress(GJ_GC(j), 3, "Connected"); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
871 | break; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
872 | case JCONN_STATE_ON: |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
873 | set_login_progress(GJ_GC(j), 5, "Logging in..."); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
874 | gjab_auth(j); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
875 | break; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
876 | default: |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
877 | debug_printf("state change: %d\n", state); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
878 | } |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
879 | return; |
| 1311 | 880 | } |
| 881 | ||
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
882 | static void jabber_login(struct aim_user *user) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
883 | { |
| 1311 | 884 | struct gaim_connection *gc = new_gaim_conn(user); |
| 885 | struct jabber_data *jd = gc->proto_data = g_new0(struct jabber_data, 1); | |
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
886 | char *loginname = create_valid_jid(user->username, DEFAULT_SERVER, "GAIM"); |
| 1311 | 887 | |
| 888 | set_login_progress(gc, 1, "Connecting"); | |
| 889 | ||
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
890 | if (!(jd->jc = gjab_new(loginname, user->password, gc))) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
891 | g_free(loginname); |
| 1311 | 892 | debug_printf("jabber: unable to connect (jab_new failed)\n"); |
| 893 | hide_login_progress(gc, "Unable to connect"); | |
| 894 | signoff(gc); | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
895 | return; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
896 | } |
| 1311 | 897 | |
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
898 | g_free(loginname); |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
899 | gjab_state_handler(jd->jc, jabber_handlestate); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
900 | gjab_packet_handler(jd->jc, jabber_handlepacket); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
901 | gjab_start(jd->jc); |
| 1311 | 902 | |
|
1624
73c1dbcbbcf9
[gaim-migrate @ 1634]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1611
diff
changeset
|
903 | if (gc->proto_data) |
|
73c1dbcbbcf9
[gaim-migrate @ 1634]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1611
diff
changeset
|
904 | gc->inpa = gdk_input_add(jd->jc->fd, GDK_INPUT_READ | GDK_INPUT_EXCEPTION, |
|
73c1dbcbbcf9
[gaim-migrate @ 1634]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1611
diff
changeset
|
905 | jabber_callback, gc); |
| 1311 | 906 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
907 | return; |
| 1311 | 908 | } |
| 909 | ||
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
910 | static void jabber_close(struct gaim_connection *gc) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
911 | { |
|
1312
b099116cf994
[gaim-migrate @ 1322]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1311
diff
changeset
|
912 | struct jabber_data *jd = gc->proto_data; |
|
b099116cf994
[gaim-migrate @ 1322]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1311
diff
changeset
|
913 | gdk_input_remove(gc->inpa); |
|
1666
4acd4604e08e
[gaim-migrate @ 1676]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1665
diff
changeset
|
914 | gjab_delete(jd->jc); |
|
4acd4604e08e
[gaim-migrate @ 1676]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1665
diff
changeset
|
915 | jd->jc = NULL; |
|
1312
b099116cf994
[gaim-migrate @ 1322]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1311
diff
changeset
|
916 | g_free(jd); |
|
1624
73c1dbcbbcf9
[gaim-migrate @ 1634]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1611
diff
changeset
|
917 | gc->proto_data = NULL; |
| 1311 | 918 | } |
| 919 | ||
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
920 | static void jabber_send_im(struct gaim_connection *gc, char *who, char *message, int away) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
921 | { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
922 | xmlnode x, y; |
|
1316
f9973f9cd01c
[gaim-migrate @ 1326]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1315
diff
changeset
|
923 | char *realwho; |
|
f9973f9cd01c
[gaim-migrate @ 1326]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1315
diff
changeset
|
924 | gjconn j = ((struct jabber_data *)gc->proto_data)->jc; |
| 1311 | 925 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
926 | if (!who || !message) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
927 | return; |
| 1311 | 928 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
929 | x = xmlnode_new_tag("message"); |
|
1316
f9973f9cd01c
[gaim-migrate @ 1326]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1315
diff
changeset
|
930 | if (!strchr(who, '@')) |
|
f9973f9cd01c
[gaim-migrate @ 1326]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1315
diff
changeset
|
931 | realwho = g_strdup_printf("%s@%s", who, j->user->server); |
|
f9973f9cd01c
[gaim-migrate @ 1326]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1315
diff
changeset
|
932 | else |
|
f9973f9cd01c
[gaim-migrate @ 1326]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1315
diff
changeset
|
933 | realwho = g_strdup(who); |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
934 | xmlnode_put_attrib(x, "to", realwho); |
|
1316
f9973f9cd01c
[gaim-migrate @ 1326]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1315
diff
changeset
|
935 | g_free(realwho); |
| 1311 | 936 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
937 | xmlnode_put_attrib(x, "type", "chat"); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
938 | |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
939 | if (message && strlen(message)) { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
940 | y = xmlnode_insert_tag(x, "body"); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
941 | xmlnode_insert_cdata(y, message, -1); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
942 | } |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
943 | |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
944 | gjab_send(((struct jabber_data *)gc->proto_data)->jc, x); |
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
945 | xmlnode_free(x); |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
946 | } |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
947 | |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
948 | static void jabber_add_buddy(struct gaim_connection *gc, char *name) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
949 | { |
|
1349
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
950 | xmlnode x, y; |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
951 | char *realwho; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
952 | gjconn j = ((struct jabber_data *)gc->proto_data)->jc; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
953 | |
|
1362
1d5b2a1e8dab
[gaim-migrate @ 1372]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1359
diff
changeset
|
954 | if (!((struct jabber_data *)gc->proto_data)->did_import) |
|
1d5b2a1e8dab
[gaim-migrate @ 1372]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1359
diff
changeset
|
955 | return; |
|
1d5b2a1e8dab
[gaim-migrate @ 1372]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1359
diff
changeset
|
956 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
957 | if (!name) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
958 | return; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
959 | |
|
1349
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
960 | if (!strcmp(gc->username, name)) |
|
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
961 | return; |
| 1311 | 962 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
963 | if (!strchr(name, '@')) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
964 | realwho = g_strdup_printf("%s@%s", name, j->user->server); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
965 | else { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
966 | jid who = jid_new(j->p, name); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
967 | if (who->user == NULL) { |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
968 | /* FIXME: transport */ |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
969 | return; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
970 | } |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
971 | realwho = g_strdup_printf("%s@%s", who->user, who->server); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
972 | } |
|
1349
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
973 | |
|
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
974 | x = jutil_iqnew(JPACKET__SET, NS_ROSTER); |
|
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
975 | y = xmlnode_insert_tag(xmlnode_get_tag(x, "query"), "item"); |
|
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
976 | xmlnode_put_attrib(y, "jid", realwho); |
|
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
977 | gjab_send(((struct jabber_data *)gc->proto_data)->jc, x); |
|
1363
c7ee62b904fc
[gaim-migrate @ 1373]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1362
diff
changeset
|
978 | xmlnode_free(x); |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
979 | |
|
1349
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
980 | x = xmlnode_new_tag("presence"); |
|
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
981 | xmlnode_put_attrib(x, "to", realwho); |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
982 | xmlnode_put_attrib(x, "type", "subscribe"); |
|
1349
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
983 | gjab_send(((struct jabber_data *)gc->proto_data)->jc, x); |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
984 | |
|
1349
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
985 | g_free(realwho); |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
986 | } |
| 1311 | 987 | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
988 | static void jabber_remove_buddy(struct gaim_connection *gc, char *name) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
989 | { |
|
1349
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
990 | xmlnode x, y; |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
991 | char *realwho; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
992 | gjconn j = ((struct jabber_data *)gc->proto_data)->jc; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
993 | |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
994 | if (!name) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
995 | return; |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
996 | |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
997 | if (!strchr(name, '@')) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
998 | realwho = g_strdup_printf("%s@%s", name, j->user->server); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
999 | else |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
1000 | realwho = g_strdup(name); |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
1001 | |
|
1349
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
1002 | x = jutil_iqnew(JPACKET__SET, NS_ROSTER); |
|
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
1003 | y = xmlnode_insert_tag(xmlnode_get_tag(x, "query"), "item"); |
|
1353
929b88dcfae9
[gaim-migrate @ 1363]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1349
diff
changeset
|
1004 | xmlnode_put_attrib(y, "jid", realwho); |
|
1349
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
1005 | xmlnode_put_attrib(y, "subscription", "remove"); |
|
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
1006 | gjab_send(((struct jabber_data *)gc->proto_data)->jc, x); |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
1007 | |
|
1349
6b195dd53d48
[gaim-migrate @ 1359]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1347
diff
changeset
|
1008 | g_free(realwho); |
|
1363
c7ee62b904fc
[gaim-migrate @ 1373]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1362
diff
changeset
|
1009 | xmlnode_free(x); |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
1010 | } |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
1011 | |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
1012 | static char **jabber_list_icon(int uc) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
1013 | { |
|
1354
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
1014 | switch (uc) { |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
1015 | case UC_AWAY: |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
1016 | return available_away_xpm; |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
1017 | case UC_CHAT: |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
1018 | return available_chat_xpm; |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
1019 | case UC_XA: |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
1020 | return available_xa_xpm; |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
1021 | case UC_DND: |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
1022 | return available_dnd_xpm; |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
1023 | default: |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
1024 | return available_xpm; |
|
02360502fa32
[gaim-migrate @ 1364]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1353
diff
changeset
|
1025 | } |
| 1311 | 1026 | } |
| 1027 | ||
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1028 | static void jabber_join_chat(struct gaim_connection *gc, int exch, char *name) |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1029 | { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1030 | xmlnode x, y; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1031 | char *realwho; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1032 | gjconn j = ((struct jabber_data *)gc->proto_data)->jc; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1033 | GSList *pc = ((struct jabber_data *)gc->proto_data)->pending_chats; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1034 | |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1035 | if (!name) |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1036 | return; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1037 | |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1038 | realwho = create_valid_jid(name, DEFAULT_GROUPCHAT, j->user->user); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1039 | |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1040 | x = jutil_presnew(0, realwho, NULL); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1041 | gjab_send(j, x); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1042 | xmlnode_free(x); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1043 | |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1044 | ((struct jabber_data *)gc->proto_data)->pending_chats = g_slist_append(pc, realwho); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1045 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1046 | |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1047 | static void jabber_chat_leave(struct gaim_connection *gc, int id) |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1048 | { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1049 | GSList *bcs = gc->buddy_chats; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1050 | struct conversation *b; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1051 | struct jabber_data *jd = gc->proto_data; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1052 | gjconn j = jd->jc; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1053 | jid chat; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1054 | xmlnode x; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1055 | |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1056 | while (bcs) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1057 | b = bcs->data; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1058 | if (id == b->id) |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1059 | break; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1060 | bcs = bcs->next; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1061 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1062 | if (!bcs) |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1063 | return; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1064 | |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1065 | bcs = jd->existing_chats; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1066 | while (bcs) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1067 | chat = jid_new(j->p, bcs->data); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1068 | if (!strcasecmp(b->name, chat->user)) |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1069 | break; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1070 | bcs = bcs->next; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1071 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1072 | if (!bcs) |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1073 | return; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1074 | |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1075 | x = jutil_presnew(0, bcs->data, NULL); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1076 | xmlnode_put_attrib(x, "type", "unavailable"); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1077 | gjab_send(j, x); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1078 | xmlnode_free(x); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1079 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1080 | |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1081 | static void jabber_chat_send(struct gaim_connection *gc, int id, char *message) |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1082 | { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1083 | GSList *bcs = gc->buddy_chats; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1084 | struct conversation *b; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1085 | struct jabber_data *jd = gc->proto_data; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1086 | gjconn j = jd->jc; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1087 | jid chat; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1088 | xmlnode x, y; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1089 | char *chatname; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1090 | |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1091 | while (bcs) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1092 | b = bcs->data; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1093 | if (id == b->id) |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1094 | break; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1095 | bcs = bcs->next; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1096 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1097 | if (!bcs) |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1098 | return; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1099 | |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1100 | bcs = jd->existing_chats; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1101 | while (bcs) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1102 | chat = jid_new(j->p, bcs->data); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1103 | if (!strcasecmp(b->name, chat->user)) |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1104 | break; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1105 | bcs = bcs->next; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1106 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1107 | if (!bcs) |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1108 | return; |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1109 | |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1110 | x = xmlnode_new_tag("message"); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1111 | xmlnode_put_attrib(x, "from", bcs->data); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1112 | chatname = g_strdup_printf("%s@%s", chat->user, chat->server); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1113 | xmlnode_put_attrib(x, "to", chatname); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1114 | g_free(chatname); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1115 | xmlnode_put_attrib(x, "type", "groupchat"); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1116 | |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1117 | if (message && strlen(message)) { |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1118 | y = xmlnode_insert_tag(x, "body"); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1119 | xmlnode_insert_cdata(y, message, -1); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1120 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1121 | |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1122 | gjab_send(((struct jabber_data *)gc->proto_data)->jc, x); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1123 | xmlnode_free(x); |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1124 | } |
|
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1125 | |
|
1642
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1126 | static GtkWidget *newname = NULL; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1127 | static GtkWidget *newpass1 = NULL; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1128 | static GtkWidget *newpass2 = NULL; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1129 | static GtkWidget *newserv = NULL; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1130 | static jconn regjconn = NULL; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1131 | static int reginpa = 0; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1132 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1133 | static void newdes() |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1134 | { |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1135 | newname = newpass1 = newpass2 = newserv = NULL; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1136 | } |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1137 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1138 | static void jabber_draw_new_user(GtkWidget *box) |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1139 | { |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1140 | GtkWidget *hbox; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1141 | GtkWidget *label; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1142 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1143 | if (newname) |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1144 | return; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1145 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1146 | label = gtk_label_new("Enter your name, password, and server to register on. If you " |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1147 | "already have a Jabber account and do not need to register one, " |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1148 | "use the Account Editor to add it to your list of accounts."); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1149 | gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1150 | gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1151 | gtk_widget_show(label); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1152 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1153 | hbox = gtk_hbox_new(FALSE, 5); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1154 | gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 5); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1155 | gtk_widget_show(hbox); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1156 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1157 | label = gtk_label_new("Username:"); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1158 | gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1159 | gtk_widget_show(label); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1160 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1161 | newname = gtk_entry_new(); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1162 | gtk_box_pack_end(GTK_BOX(hbox), newname, FALSE, FALSE, 5); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1163 | gtk_signal_connect(GTK_OBJECT(newname), "destroy", GTK_SIGNAL_FUNC(newdes), NULL); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1164 | gtk_widget_show(newname); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1165 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1166 | hbox = gtk_hbox_new(FALSE, 5); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1167 | gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 5); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1168 | gtk_widget_show(hbox); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1169 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1170 | label = gtk_label_new("Password:"); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1171 | gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1172 | gtk_widget_show(label); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1173 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1174 | newpass1 = gtk_entry_new(); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1175 | gtk_box_pack_end(GTK_BOX(hbox), newpass1, FALSE, FALSE, 5); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1176 | gtk_entry_set_visibility(GTK_ENTRY(newpass1), FALSE); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1177 | gtk_widget_show(newpass1); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1178 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1179 | hbox = gtk_hbox_new(FALSE, 5); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1180 | gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 5); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1181 | gtk_widget_show(hbox); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1182 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1183 | label = gtk_label_new("Confirm:"); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1184 | gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1185 | gtk_widget_show(label); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1186 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1187 | newpass2 = gtk_entry_new(); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1188 | gtk_box_pack_end(GTK_BOX(hbox), newpass2, FALSE, FALSE, 5); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1189 | gtk_entry_set_visibility(GTK_ENTRY(newpass2), FALSE); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1190 | gtk_widget_show(newpass2); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1191 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1192 | hbox = gtk_hbox_new(FALSE, 5); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1193 | gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 5); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1194 | gtk_widget_show(hbox); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1195 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1196 | label = gtk_label_new("Server:"); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1197 | gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1198 | gtk_widget_show(label); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1199 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1200 | newserv = gtk_entry_new(); |
|
1644
8a4c45790504
[gaim-migrate @ 1654]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1642
diff
changeset
|
1201 | gtk_entry_set_text(GTK_ENTRY(newserv), "jabber.org"); |
|
1642
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1202 | gtk_box_pack_end(GTK_BOX(hbox), newserv, FALSE, FALSE, 5); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1203 | gtk_widget_show(newserv); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1204 | } |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1205 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1206 | static void regstate(jconn j, int state) |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1207 | { |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1208 | static int catch = 0; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1209 | switch (state) { |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1210 | case JCONN_STATE_OFF: |
|
1696
cace8879aa30
[gaim-migrate @ 1706]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1688
diff
changeset
|
1211 | gdk_input_remove(reginpa); |
|
cace8879aa30
[gaim-migrate @ 1706]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1688
diff
changeset
|
1212 | reginpa = 0; |
|
cace8879aa30
[gaim-migrate @ 1706]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1688
diff
changeset
|
1213 | jab_delete(j); |
|
1642
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1214 | break; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1215 | case JCONN_STATE_CONNECTED: |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1216 | break; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1217 | case JCONN_STATE_ON: |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1218 | if (catch) |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1219 | break; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1220 | catch = 1; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1221 | jab_reg(regjconn); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1222 | catch = 0; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1223 | break; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1224 | case JCONN_STATE_AUTH: |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1225 | break; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1226 | default: |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1227 | break; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1228 | } |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1229 | } |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1230 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1231 | static void regpacket(jconn j, jpacket p) |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1232 | { |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1233 | static int here = 0; |
|
1696
cace8879aa30
[gaim-migrate @ 1706]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1688
diff
changeset
|
1234 | g_print("here\n"); |
|
1642
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1235 | switch (p->type) { |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1236 | case JPACKET_MESSAGE: |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1237 | break; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1238 | case JPACKET_PRESENCE: |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1239 | break; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1240 | case JPACKET_IQ: |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1241 | if (jpacket_subtype(p) == JPACKET__RESULT) { |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1242 | xmlnode x, y, z; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1243 | char *user, *id; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1244 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1245 | if (here == 2) { |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1246 | struct aim_user *u; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1247 | user = g_strdup(jid_full(j->user)); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1248 | regjconn = NULL; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1249 | here = 0; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1250 | u = new_user(user, PROTO_JABBER, OPT_USR_REM_PASS); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1251 | g_free(user); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1252 | g_snprintf(u->password, sizeof(u->password), "%s", j->pass); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1253 | save_prefs(); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1254 | xmlnode_free(p->x); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1255 | do_error_dialog("Registration successful! Your account has been" |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1256 | " added to the Account Editor.", "Jabber " |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1257 | "Registration"); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1258 | gtk_entry_set_text(GTK_ENTRY(newname), ""); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1259 | gtk_entry_set_text(GTK_ENTRY(newpass1), ""); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1260 | gtk_entry_set_text(GTK_ENTRY(newpass2), ""); |
|
1696
cace8879aa30
[gaim-migrate @ 1706]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1688
diff
changeset
|
1261 | g_print("reg\n"); |
|
1642
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1262 | return; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1263 | } else if (here == 1) { |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1264 | x = jutil_iqnew(JPACKET__SET, NS_AUTH); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1265 | here = 2; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1266 | } else if (here == 0) { |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1267 | here = 1; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1268 | x = jutil_iqnew(JPACKET__GET, NS_AUTH); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1269 | } |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1270 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1271 | id = jab_getid(j); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1272 | xmlnode_put_attrib(x, "id", id); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1273 | y = xmlnode_get_tag(x, "query"); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1274 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1275 | user = j->user->user; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1276 | if (user) |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1277 | { |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1278 | z = xmlnode_insert_tag(y, "username"); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1279 | xmlnode_insert_cdata(z, user, -1); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1280 | } |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1281 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1282 | if (here == 2) { |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1283 | z = xmlnode_insert_tag(y, "resource"); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1284 | xmlnode_insert_cdata(z, j->user->resource, -1); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1285 | z = xmlnode_insert_tag(y, "password"); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1286 | xmlnode_insert_cdata(z, j->pass, -1); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1287 | } |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1288 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1289 | jab_send(j, x); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1290 | xmlnode_free(x); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1291 | } else if (jpacket_subtype(p) == JPACKET__ERROR) { |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1292 | xmlnode x = xmlnode_get_tag(p->x, "error"); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1293 | if (x) { |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1294 | char buf[8192]; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1295 | g_snprintf(buf, sizeof(buf), "Registration failed: %d %s", |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1296 | atoi(xmlnode_get_attrib(x, "code")), |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1297 | xmlnode_get_data(xmlnode_get_firstchild(x))); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1298 | do_error_dialog(buf, "Jabber Registration"); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1299 | } else { |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1300 | do_error_dialog("Registration failed", "Jabber Registration"); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1301 | } |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1302 | regjconn = NULL; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1303 | xmlnode_free(p->x); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1304 | here = 0; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1305 | return; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1306 | } |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1307 | break; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1308 | case JPACKET_S10N: |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1309 | break; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1310 | default: |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1311 | break; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1312 | } |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1313 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1314 | xmlnode_free(p->x); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1315 | } |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1316 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1317 | static void regjcall(gpointer data, gint source, GdkInputCondition cond) |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1318 | { |
|
1696
cace8879aa30
[gaim-migrate @ 1706]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1688
diff
changeset
|
1319 | gjab_recv((gjconn)regjconn); |
|
1642
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1320 | } |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1321 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1322 | static void jabber_do_new_user() |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1323 | { |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1324 | char *name, *pass1, *pass2, *serv; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1325 | char *user; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1326 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1327 | if (!newname || regjconn) |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1328 | return; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1329 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1330 | pass1 = gtk_entry_get_text(GTK_ENTRY(newpass1)); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1331 | pass2 = gtk_entry_get_text(GTK_ENTRY(newpass2)); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1332 | if (pass1[0] == 0 || pass2[0] == 0) { |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1333 | do_error_dialog("Please enter the same valid password in both password entry boxes", |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1334 | "Registration error"); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1335 | return; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1336 | } |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1337 | if (strcmp(pass1, pass2)) { |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1338 | do_error_dialog("Mismatched passwords, please verify that both passwords are the same", |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1339 | "Registration error"); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1340 | return; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1341 | } |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1342 | name = gtk_entry_get_text(GTK_ENTRY(newname)); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1343 | serv = gtk_entry_get_text(GTK_ENTRY(newserv)); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1344 | if (name[0] == 0 || serv[0] == 0) { |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1345 | do_error_dialog("Please enter a valid username and server", "Registration error"); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1346 | return; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1347 | } |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1348 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1349 | user = g_strdup_printf("%s@%s/GAIM", name, serv); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1350 | regjconn = jab_new(user, pass1); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1351 | g_free(user); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1352 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1353 | jab_state_handler(regjconn, regstate); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1354 | jab_packet_handler(regjconn, regpacket); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1355 | |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1356 | jab_start(regjconn); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1357 | reginpa = gdk_input_add(jab_getfd(regjconn), GDK_INPUT_READ, regjcall, NULL); |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1358 | } |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1359 | |
| 1311 | 1360 | static struct prpl *my_protocol = NULL; |
| 1361 | ||
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
1362 | void Jabber_init(struct prpl *ret) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
1363 | { |
| 1311 | 1364 | /* the NULL's aren't required but they're nice to have */ |
| 1365 | ret->protocol = PROTO_JABBER; | |
| 1366 | ret->name = jabber_name; | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
1367 | ret->list_icon = jabber_list_icon; |
|
1499
0c3286729687
[gaim-migrate @ 1509]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1485
diff
changeset
|
1368 | ret->buddy_menu = NULL; |
|
1331
e3414af7b5ab
[gaim-migrate @ 1341]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1316
diff
changeset
|
1369 | ret->user_opts = NULL; |
|
1642
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1370 | ret->draw_new_user = jabber_draw_new_user; |
|
74466b4b2cf8
[gaim-migrate @ 1652]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1624
diff
changeset
|
1371 | ret->do_new_user = jabber_do_new_user; |
| 1311 | 1372 | ret->login = jabber_login; |
| 1373 | ret->close = jabber_close; | |
| 1374 | ret->send_im = jabber_send_im; | |
| 1375 | ret->set_info = NULL; | |
| 1376 | ret->get_info = NULL; | |
| 1377 | ret->set_away = NULL; | |
| 1378 | ret->get_away_msg = NULL; | |
| 1379 | ret->set_dir = NULL; | |
| 1380 | ret->get_dir = NULL; | |
| 1381 | ret->dir_search = NULL; | |
| 1382 | ret->set_idle = NULL; | |
| 1383 | ret->change_passwd = NULL; | |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
1384 | ret->add_buddy = jabber_add_buddy; |
| 1311 | 1385 | ret->add_buddies = NULL; |
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
1386 | ret->remove_buddy = jabber_remove_buddy; |
| 1311 | 1387 | ret->add_permit = NULL; |
| 1388 | ret->add_deny = NULL; | |
| 1389 | ret->rem_permit = NULL; | |
| 1390 | ret->rem_deny = NULL; | |
| 1391 | ret->set_permit_deny = NULL; | |
| 1392 | ret->warn = NULL; | |
| 1393 | ret->accept_chat = NULL; | |
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1394 | ret->join_chat = jabber_join_chat; |
| 1311 | 1395 | ret->chat_invite = NULL; |
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1396 | ret->chat_leave = jabber_chat_leave; |
| 1311 | 1397 | ret->chat_whisper = NULL; |
|
1466
9b815a203649
[gaim-migrate @ 1476]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1443
diff
changeset
|
1398 | ret->chat_send = jabber_chat_send; |
|
1312
b099116cf994
[gaim-migrate @ 1322]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1311
diff
changeset
|
1399 | ret->keepalive = NULL; |
| 1311 | 1400 | |
| 1401 | my_protocol = ret; | |
| 1402 | } | |
| 1403 | ||
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
1404 | char *gaim_plugin_init(GModule *handle) |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
1405 | { |
|
1443
0629a6c59f6b
[gaim-migrate @ 1453]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1363
diff
changeset
|
1406 | load_protocol(Jabber_init, sizeof(struct prpl)); |
| 1311 | 1407 | return NULL; |
| 1408 | } | |
| 1409 | ||
|
1345
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
1410 | void gaim_plugin_remove() |
|
51a8dbeadbef
[gaim-migrate @ 1355]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1344
diff
changeset
|
1411 | { |
| 1311 | 1412 | struct prpl *p = find_prpl(PROTO_JABBER); |
| 1413 | if (p == my_protocol) | |
| 1414 | unload_protocol(p); | |
| 1415 | } |