Mercurial > pidgin.yaz
diff 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 |
line wrap: on
line diff
--- a/src/protocols/jabber/oob.c Fri Mar 05 16:24:05 2004 +0000 +++ b/src/protocols/jabber/oob.c Fri Mar 05 16:37:37 2004 +0000 @@ -117,24 +117,38 @@ return 0; } -static void jabber_oob_xfer_cancel_recv(GaimXfer *xfer) { +static void jabber_oob_xfer_recv_error(GaimXfer *xfer, const char *code) { JabberOOBXfer *jox = xfer->data; JabberIq *iq; - xmlnode *y; + xmlnode *y, *z; iq = jabber_iq_new(jox->js, JABBER_IQ_ERROR); xmlnode_set_attrib(iq->node, "to", xfer->who); jabber_iq_set_id(iq, jox->iq_id); y = xmlnode_new_child(iq->node, "error"); - /* FIXME: need to handle other kinds of errors here */ - xmlnode_set_attrib(y, "code", "406"); - xmlnode_insert_data(y, "File Transfer Refused", -1); - + xmlnode_set_attrib(y, "code", code); + if(!strcmp(code, "406")) { + z = xmlnode_new_child(y, "not-acceptable"); + xmlnode_set_attrib(y, "type", "modify"); + xmlnode_set_attrib(z, "xmlns", "urn:ietf:params:xml:ns:xmpp-stanzas"); + } else if(!strcmp(code, "404")) { + z = xmlnode_new_child(y, "not-found"); + xmlnode_set_attrib(y, "type", "cancel"); + xmlnode_set_attrib(z, "xmlns", "urn:ietf:params:xml:ns:xmpp-stanzas"); + } jabber_iq_send(iq); jabber_oob_xfer_free(xfer); } +static void jabber_oob_xfer_recv_denied(GaimXfer *xfer) { + jabber_oob_xfer_recv_error(xfer, "406"); +} + +static void jabber_oob_xfer_recv_canceled(GaimXfer *xfer) { + jabber_oob_xfer_recv_error(xfer, "404"); +} + void jabber_oob_parse(JabberStream *js, xmlnode *packet) { JabberOOBXfer *jox; GaimXfer *xfer; @@ -170,8 +184,8 @@ gaim_xfer_set_init_fnc(xfer, jabber_oob_xfer_init); gaim_xfer_set_end_fnc(xfer, jabber_oob_xfer_end); - gaim_xfer_set_request_denied_fnc(xfer, jabber_oob_xfer_cancel_recv); /* XXX */ - gaim_xfer_set_cancel_recv_fnc(xfer, jabber_oob_xfer_cancel_recv); + gaim_xfer_set_request_denied_fnc(xfer, jabber_oob_xfer_recv_denied); + gaim_xfer_set_cancel_recv_fnc(xfer, jabber_oob_xfer_recv_canceled); gaim_xfer_set_read_fnc(xfer, jabber_oob_xfer_read); gaim_xfer_set_start_fnc(xfer, jabber_oob_xfer_start);