comparison src/protocols/jabber/oob.c @ 8399:681b1661ee8b

[gaim-migrate @ 9128] the /* XXX */ cleanup continues committer: Tailor Script <tailor@pidgin.im>
author Nathan Walp <nwalp@pidgin.im>
date Fri, 05 Mar 2004 16:37:37 +0000
parents 9e2b28acf1cd
children 9171e528d7e5
comparison
equal deleted inserted replaced
8398:66db94ff619c 8399:681b1661ee8b
115 } 115 }
116 116
117 return 0; 117 return 0;
118 } 118 }
119 119
120 static void jabber_oob_xfer_cancel_recv(GaimXfer *xfer) { 120 static void jabber_oob_xfer_recv_error(GaimXfer *xfer, const char *code) {
121 JabberOOBXfer *jox = xfer->data; 121 JabberOOBXfer *jox = xfer->data;
122 JabberIq *iq; 122 JabberIq *iq;
123 xmlnode *y; 123 xmlnode *y, *z;
124 124
125 iq = jabber_iq_new(jox->js, JABBER_IQ_ERROR); 125 iq = jabber_iq_new(jox->js, JABBER_IQ_ERROR);
126 xmlnode_set_attrib(iq->node, "to", xfer->who); 126 xmlnode_set_attrib(iq->node, "to", xfer->who);
127 jabber_iq_set_id(iq, jox->iq_id); 127 jabber_iq_set_id(iq, jox->iq_id);
128 y = xmlnode_new_child(iq->node, "error"); 128 y = xmlnode_new_child(iq->node, "error");
129 /* FIXME: need to handle other kinds of errors here */ 129 xmlnode_set_attrib(y, "code", code);
130 xmlnode_set_attrib(y, "code", "406"); 130 if(!strcmp(code, "406")) {
131 xmlnode_insert_data(y, "File Transfer Refused", -1); 131 z = xmlnode_new_child(y, "not-acceptable");
132 132 xmlnode_set_attrib(y, "type", "modify");
133 xmlnode_set_attrib(z, "xmlns", "urn:ietf:params:xml:ns:xmpp-stanzas");
134 } else if(!strcmp(code, "404")) {
135 z = xmlnode_new_child(y, "not-found");
136 xmlnode_set_attrib(y, "type", "cancel");
137 xmlnode_set_attrib(z, "xmlns", "urn:ietf:params:xml:ns:xmpp-stanzas");
138 }
133 jabber_iq_send(iq); 139 jabber_iq_send(iq);
134 140
135 jabber_oob_xfer_free(xfer); 141 jabber_oob_xfer_free(xfer);
142 }
143
144 static void jabber_oob_xfer_recv_denied(GaimXfer *xfer) {
145 jabber_oob_xfer_recv_error(xfer, "406");
146 }
147
148 static void jabber_oob_xfer_recv_canceled(GaimXfer *xfer) {
149 jabber_oob_xfer_recv_error(xfer, "404");
136 } 150 }
137 151
138 void jabber_oob_parse(JabberStream *js, xmlnode *packet) { 152 void jabber_oob_parse(JabberStream *js, xmlnode *packet) {
139 JabberOOBXfer *jox; 153 JabberOOBXfer *jox;
140 GaimXfer *xfer; 154 GaimXfer *xfer;
168 182
169 g_free(filename); 183 g_free(filename);
170 184
171 gaim_xfer_set_init_fnc(xfer, jabber_oob_xfer_init); 185 gaim_xfer_set_init_fnc(xfer, jabber_oob_xfer_init);
172 gaim_xfer_set_end_fnc(xfer, jabber_oob_xfer_end); 186 gaim_xfer_set_end_fnc(xfer, jabber_oob_xfer_end);
173 gaim_xfer_set_request_denied_fnc(xfer, jabber_oob_xfer_cancel_recv); /* XXX */ 187 gaim_xfer_set_request_denied_fnc(xfer, jabber_oob_xfer_recv_denied);
174 gaim_xfer_set_cancel_recv_fnc(xfer, jabber_oob_xfer_cancel_recv); 188 gaim_xfer_set_cancel_recv_fnc(xfer, jabber_oob_xfer_recv_canceled);
175 gaim_xfer_set_read_fnc(xfer, jabber_oob_xfer_read); 189 gaim_xfer_set_read_fnc(xfer, jabber_oob_xfer_read);
176 gaim_xfer_set_start_fnc(xfer, jabber_oob_xfer_start); 190 gaim_xfer_set_start_fnc(xfer, jabber_oob_xfer_start);
177 191
178 js->oob_file_transfers = g_list_append(js->oob_file_transfers, xfer); 192 js->oob_file_transfers = g_list_append(js->oob_file_transfers, xfer);
179 193