Mercurial > pidgin
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 |