Mon, 29 Aug 2011 22:55:51 +0000
Steps toward hiding PurpleXfer.
To convert prpls as they are now, lot of new accessors are needed (for stuff
that maybe shouldn't be exposed directly).
To convert prpls so that they don't keep re-implementing the same type of
stuff, a lot of error-prone changes are needed.
| 7170 | 1 | /* |
| 15884 | 2 | * purple - Jabber Protocol Plugin |
| 7170 | 3 | * |
|
28322
ac8fec1d2234
Remove specific copyright lines from the XMPP prpl.
Paul Aurich <darkrain42@pidgin.im>
parents:
28206
diff
changeset
|
4 | * Purple is the legal property of its developers, whose names are too numerous |
|
ac8fec1d2234
Remove specific copyright lines from the XMPP prpl.
Paul Aurich <darkrain42@pidgin.im>
parents:
28206
diff
changeset
|
5 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
ac8fec1d2234
Remove specific copyright lines from the XMPP prpl.
Paul Aurich <darkrain42@pidgin.im>
parents:
28206
diff
changeset
|
6 | * source distribution. |
| 7170 | 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 | |
|
19859
71d37b57eff2
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
15884
diff
changeset
|
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
| 7170 | 21 | * |
| 22 | */ | |
| 23 | #include "internal.h" | |
| 7234 | 24 | #include "debug.h" |
| 7170 | 25 | #include "ft.h" |
| 26 | #include "util.h" | |
| 27 | ||
| 28 | #include "jabber.h" | |
| 29 | #include "iq.h" | |
|
12324
caf9784f2405
[gaim-migrate @ 14628]
Richard Laager <rlaager@pidgin.im>
parents:
12323
diff
changeset
|
30 | #include "oob.h" |
| 7170 | 31 | |
| 32 | typedef struct _JabberOOBXfer { | |
| 33 | char *address; | |
| 34 | int port; | |
| 35 | char *page; | |
| 36 | ||
| 37 | GString *headers; | |
| 38 | ||
| 39 | char *iq_id; | |
| 40 | ||
| 41 | JabberStream *js; | |
| 42 | ||
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
43 | gchar *write_buffer; |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
44 | gsize written_len; |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
45 | guint writeh; |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
46 | |
| 7170 | 47 | } JabberOOBXfer; |
| 48 | ||
| 15884 | 49 | static void jabber_oob_xfer_init(PurpleXfer *xfer) |
| 7170 | 50 | { |
|
32245
6e7b93c200fe
Convert the jabber prpl to use the new API.
Andrew Victor <andrew.victor@mxit.com>
parents:
30708
diff
changeset
|
51 | JabberOOBXfer *jox = purple_xfer_get_protocol_data(xfer); |
| 15884 | 52 | purple_xfer_start(xfer, -1, jox->address, jox->port); |
| 7170 | 53 | } |
| 54 | ||
| 15884 | 55 | static void jabber_oob_xfer_free(PurpleXfer *xfer) |
| 7170 | 56 | { |
|
32245
6e7b93c200fe
Convert the jabber prpl to use the new API.
Andrew Victor <andrew.victor@mxit.com>
parents:
30708
diff
changeset
|
57 | JabberOOBXfer *jox = purple_xfer_get_protocol_data(xfer); |
| 7395 | 58 | jox->js->oob_file_transfers = g_list_remove(jox->js->oob_file_transfers, |
| 59 | xfer); | |
| 7170 | 60 | |
| 61 | g_string_free(jox->headers, TRUE); | |
| 62 | g_free(jox->address); | |
| 63 | g_free(jox->page); | |
| 64 | g_free(jox->iq_id); | |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
65 | g_free(jox->write_buffer); |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
66 | if(jox->writeh) |
| 15884 | 67 | purple_input_remove(jox->writeh); |
| 7170 | 68 | g_free(jox); |
| 69 | ||
|
32245
6e7b93c200fe
Convert the jabber prpl to use the new API.
Andrew Victor <andrew.victor@mxit.com>
parents:
30708
diff
changeset
|
70 | purple_xfer_set_protocol_data(xfer, NULL); |
| 7170 | 71 | } |
| 72 | ||
| 15884 | 73 | static void jabber_oob_xfer_end(PurpleXfer *xfer) |
| 7170 | 74 | { |
|
32245
6e7b93c200fe
Convert the jabber prpl to use the new API.
Andrew Victor <andrew.victor@mxit.com>
parents:
30708
diff
changeset
|
75 | JabberOOBXfer *jox = purple_xfer_get_protocol_data(xfer); |
| 7170 | 76 | JabberIq *iq; |
| 77 | ||
| 78 | iq = jabber_iq_new(jox->js, JABBER_IQ_RESULT); | |
|
32270
028a4b3c0402
Steps toward hiding PurpleXfer.
Daniel Atallah <datallah@pidgin.im>
parents:
32245
diff
changeset
|
79 | xmlnode_set_attrib(iq->node, "to", purple_xfer_get_remote_user(xfer)); |
| 7170 | 80 | jabber_iq_set_id(iq, jox->iq_id); |
| 81 | ||
| 82 | jabber_iq_send(iq); | |
| 83 | ||
| 84 | jabber_oob_xfer_free(xfer); | |
| 85 | } | |
| 86 | ||
| 15884 | 87 | static void jabber_oob_xfer_request_send(gpointer data, gint source, PurpleInputCondition cond) { |
| 88 | PurpleXfer *xfer = data; | |
|
32245
6e7b93c200fe
Convert the jabber prpl to use the new API.
Andrew Victor <andrew.victor@mxit.com>
parents:
30708
diff
changeset
|
89 | JabberOOBXfer *jox = purple_xfer_get_protocol_data(xfer); |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
90 | int len, total_len = strlen(jox->write_buffer); |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
91 | |
|
32270
028a4b3c0402
Steps toward hiding PurpleXfer.
Daniel Atallah <datallah@pidgin.im>
parents:
32245
diff
changeset
|
92 | len = purple_xfer_write(xfer, (guchar*) jox->write_buffer + jox->written_len, |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
93 | total_len - jox->written_len); |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
94 | |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
95 | if(len < 0 && errno == EAGAIN) |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
96 | return; |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
97 | else if(len < 0) { |
|
28828
7c1855f037e7
jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <darkrain42@pidgin.im>
parents:
28322
diff
changeset
|
98 | purple_debug_error("jabber", "Write error on oob xfer!\n"); |
| 15884 | 99 | purple_input_remove(jox->writeh); |
| 100 | purple_xfer_cancel_local(xfer); | |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
101 | } |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
102 | jox->written_len += len; |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
103 | |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
104 | if(jox->written_len == total_len) { |
| 15884 | 105 | purple_input_remove(jox->writeh); |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
106 | g_free(jox->write_buffer); |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
107 | jox->write_buffer = NULL; |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
108 | } |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
109 | } |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
110 | |
| 15884 | 111 | static void jabber_oob_xfer_start(PurpleXfer *xfer) |
| 7170 | 112 | { |
|
32245
6e7b93c200fe
Convert the jabber prpl to use the new API.
Andrew Victor <andrew.victor@mxit.com>
parents:
30708
diff
changeset
|
113 | JabberOOBXfer *jox = purple_xfer_get_protocol_data(xfer); |
| 7170 | 114 | |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
115 | if(jox->write_buffer == NULL) { |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
116 | jox->write_buffer = g_strdup_printf( |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
117 | "GET /%s HTTP/1.1\r\nHost: %s\r\n\r\n", |
| 7170 | 118 | jox->page, jox->address); |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
119 | jox->written_len = 0; |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
120 | } |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
121 | |
| 15884 | 122 | jox->writeh = purple_input_add(xfer->fd, PURPLE_INPUT_WRITE, |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
123 | jabber_oob_xfer_request_send, xfer); |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
124 | |
| 15884 | 125 | jabber_oob_xfer_request_send(xfer, xfer->fd, PURPLE_INPUT_WRITE); |
| 7170 | 126 | } |
| 127 | ||
| 15884 | 128 | static gssize jabber_oob_xfer_read(guchar **buffer, PurpleXfer *xfer) { |
|
32245
6e7b93c200fe
Convert the jabber prpl to use the new API.
Andrew Victor <andrew.victor@mxit.com>
parents:
30708
diff
changeset
|
129 | JabberOOBXfer *jox = purple_xfer_get_protocol_data(xfer); |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
130 | char test[2048]; |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
131 | char *tmp, *lenstr; |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
132 | int len; |
| 7170 | 133 | |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
134 | if((len = read(xfer->fd, test, sizeof(test))) > 0) { |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
135 | jox->headers = g_string_append_len(jox->headers, test, len); |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
136 | if((tmp = strstr(jox->headers->str, "\r\n\r\n"))) { |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
137 | *tmp = '\0'; |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
138 | lenstr = strstr(jox->headers->str, "Content-Length: "); |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
139 | if(lenstr) { |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
140 | int size; |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
141 | sscanf(lenstr, "Content-Length: %d", &size); |
| 15884 | 142 | purple_xfer_set_size(xfer, size); |
| 7170 | 143 | } |
| 15884 | 144 | purple_xfer_set_read_fnc(xfer, NULL); |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
145 | |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
146 | tmp += 4; |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
147 | |
|
14697
518c0fae208e
[gaim-migrate @ 17381]
Daniel Atallah <datallah@pidgin.im>
parents:
14356
diff
changeset
|
148 | *buffer = (unsigned char*) g_strdup(tmp); |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
149 | return strlen(tmp); |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
150 | } |
| 7170 | 151 | return 0; |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
12324
diff
changeset
|
152 | } else if (errno != EAGAIN) { |
|
28828
7c1855f037e7
jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <darkrain42@pidgin.im>
parents:
28322
diff
changeset
|
153 | purple_debug_error("jabber", "Read error on oob xfer!\n"); |
| 15884 | 154 | purple_xfer_cancel_local(xfer); |
| 7170 | 155 | } |
| 7234 | 156 | |
| 7170 | 157 | return 0; |
| 158 | } | |
| 159 | ||
| 15884 | 160 | static void jabber_oob_xfer_recv_error(PurpleXfer *xfer, const char *code) { |
|
32245
6e7b93c200fe
Convert the jabber prpl to use the new API.
Andrew Victor <andrew.victor@mxit.com>
parents:
30708
diff
changeset
|
161 | JabberOOBXfer *jox = purple_xfer_get_protocol_data(xfer); |
| 7170 | 162 | JabberIq *iq; |
| 8399 | 163 | xmlnode *y, *z; |
| 7170 | 164 | |
| 165 | iq = jabber_iq_new(jox->js, JABBER_IQ_ERROR); | |
|
32270
028a4b3c0402
Steps toward hiding PurpleXfer.
Daniel Atallah <datallah@pidgin.im>
parents:
32245
diff
changeset
|
166 | xmlnode_set_attrib(iq->node, "to", purple_xfer_get_remote_user(xfer)); |
| 7170 | 167 | jabber_iq_set_id(iq, jox->iq_id); |
| 168 | y = xmlnode_new_child(iq->node, "error"); | |
| 8399 | 169 | xmlnode_set_attrib(y, "code", code); |
| 170 | if(!strcmp(code, "406")) { | |
| 171 | z = xmlnode_new_child(y, "not-acceptable"); | |
| 172 | xmlnode_set_attrib(y, "type", "modify"); | |
|
28984
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28828
diff
changeset
|
173 | xmlnode_set_namespace(z, NS_XMPP_STANZAS); |
| 8399 | 174 | } else if(!strcmp(code, "404")) { |
| 175 | z = xmlnode_new_child(y, "not-found"); | |
| 176 | xmlnode_set_attrib(y, "type", "cancel"); | |
|
28984
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28828
diff
changeset
|
177 | xmlnode_set_namespace(z, NS_XMPP_STANZAS); |
| 8399 | 178 | } |
| 7170 | 179 | jabber_iq_send(iq); |
| 180 | ||
| 181 | jabber_oob_xfer_free(xfer); | |
| 182 | } | |
| 183 | ||
| 15884 | 184 | static void jabber_oob_xfer_recv_denied(PurpleXfer *xfer) { |
| 8399 | 185 | jabber_oob_xfer_recv_error(xfer, "406"); |
| 186 | } | |
| 187 | ||
|
30708
535bec1e66fb
Standardize on "cancelled".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28984
diff
changeset
|
188 | static void jabber_oob_xfer_recv_cancelled(PurpleXfer *xfer) { |
| 8399 | 189 | jabber_oob_xfer_recv_error(xfer, "404"); |
| 190 | } | |
| 191 | ||
|
25817
09d6a40a341d
Pass IQ handlers type, from, id, and the child node
Paul Aurich <darkrain42@pidgin.im>
parents:
19859
diff
changeset
|
192 | void jabber_oob_parse(JabberStream *js, const char *from, JabberIqType type, |
|
09d6a40a341d
Pass IQ handlers type, from, id, and the child node
Paul Aurich <darkrain42@pidgin.im>
parents:
19859
diff
changeset
|
193 | const char *id, xmlnode *querynode) { |
| 7170 | 194 | JabberOOBXfer *jox; |
| 15884 | 195 | PurpleXfer *xfer; |
| 7170 | 196 | char *filename; |
| 197 | char *url; | |
|
25817
09d6a40a341d
Pass IQ handlers type, from, id, and the child node
Paul Aurich <darkrain42@pidgin.im>
parents:
19859
diff
changeset
|
198 | xmlnode *urlnode; |
| 7170 | 199 | |
|
25817
09d6a40a341d
Pass IQ handlers type, from, id, and the child node
Paul Aurich <darkrain42@pidgin.im>
parents:
19859
diff
changeset
|
200 | if(type != JABBER_IQ_SET) |
| 14356 | 201 | return; |
| 202 | ||
|
25818
d087a2754595
Avoid assertion failures on NULL 'from' attributes
Paul Aurich <darkrain42@pidgin.im>
parents:
25817
diff
changeset
|
203 | if(!from) |
| 7170 | 204 | return; |
| 205 | ||
| 206 | if(!(urlnode = xmlnode_get_child(querynode, "url"))) | |
| 207 | return; | |
| 208 | ||
| 209 | url = xmlnode_get_data(urlnode); | |
| 210 | ||
| 211 | jox = g_new0(JabberOOBXfer, 1); | |
|
28206
784ad9a14ee3
Fix crashes when filenames end up being NULL in some prpls. Fixed a minor
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25818
diff
changeset
|
212 | if (!purple_url_parse(url, &jox->address, &jox->port, &jox->page, NULL, NULL)) { |
|
784ad9a14ee3
Fix crashes when filenames end up being NULL in some prpls. Fixed a minor
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25818
diff
changeset
|
213 | g_free(url); |
|
784ad9a14ee3
Fix crashes when filenames end up being NULL in some prpls. Fixed a minor
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25818
diff
changeset
|
214 | return; |
|
784ad9a14ee3
Fix crashes when filenames end up being NULL in some prpls. Fixed a minor
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25818
diff
changeset
|
215 | } |
| 7170 | 216 | g_free(url); |
| 217 | jox->js = js; | |
| 218 | jox->headers = g_string_new(""); | |
|
25817
09d6a40a341d
Pass IQ handlers type, from, id, and the child node
Paul Aurich <darkrain42@pidgin.im>
parents:
19859
diff
changeset
|
219 | jox->iq_id = g_strdup(id); |
| 7170 | 220 | |
|
25817
09d6a40a341d
Pass IQ handlers type, from, id, and the child node
Paul Aurich <darkrain42@pidgin.im>
parents:
19859
diff
changeset
|
221 | xfer = purple_xfer_new(js->gc->account, PURPLE_XFER_RECEIVE, from); |
|
15345
797936e968ff
[gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents:
14697
diff
changeset
|
222 | if (xfer) |
|
797936e968ff
[gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents:
14697
diff
changeset
|
223 | { |
|
32245
6e7b93c200fe
Convert the jabber prpl to use the new API.
Andrew Victor <andrew.victor@mxit.com>
parents:
30708
diff
changeset
|
224 | purple_xfer_set_protocol_data(xfer, jox); |
| 7170 | 225 | |
|
15345
797936e968ff
[gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents:
14697
diff
changeset
|
226 | if(!(filename = g_strdup(g_strrstr(jox->page, "/")))) |
|
797936e968ff
[gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents:
14697
diff
changeset
|
227 | filename = g_strdup(jox->page); |
| 7170 | 228 | |
| 15884 | 229 | purple_xfer_set_filename(xfer, filename); |
| 7170 | 230 | |
|
15345
797936e968ff
[gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents:
14697
diff
changeset
|
231 | g_free(filename); |
| 7170 | 232 | |
| 15884 | 233 | purple_xfer_set_init_fnc(xfer, jabber_oob_xfer_init); |
| 234 | purple_xfer_set_end_fnc(xfer, jabber_oob_xfer_end); | |
| 235 | purple_xfer_set_request_denied_fnc(xfer, jabber_oob_xfer_recv_denied); | |
|
30708
535bec1e66fb
Standardize on "cancelled".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28984
diff
changeset
|
236 | purple_xfer_set_cancel_recv_fnc(xfer, jabber_oob_xfer_recv_cancelled); |
| 15884 | 237 | purple_xfer_set_read_fnc(xfer, jabber_oob_xfer_read); |
| 238 | purple_xfer_set_start_fnc(xfer, jabber_oob_xfer_start); | |
| 7170 | 239 | |
|
15345
797936e968ff
[gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents:
14697
diff
changeset
|
240 | js->oob_file_transfers = g_list_append(js->oob_file_transfers, xfer); |
| 7170 | 241 | |
| 15884 | 242 | purple_xfer_request(xfer); |
|
15345
797936e968ff
[gaim-migrate @ 18073]
Evan Schoenberg <evands@pidgin.im>
parents:
14697
diff
changeset
|
243 | } |
| 7170 | 244 | } |
| 245 | ||
| 246 |