Mercurial > pidgin
diff libpurple/protocols/jabber/jabber.c @ 25050:a03a953ba63d
* moving BOSH interfacing from jabber_send to jabber_send_raw
* sending BOSH stream restart after successful SASL login
author | Tobias Markmann <tfar@soc.pidgin.im> |
---|---|
date | Fri, 15 Aug 2008 16:35:32 +0000 |
parents | f775f6021654 |
children | 907ca9a36fe0 |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/jabber.c Fri Aug 15 14:02:21 2008 +0000 +++ b/libpurple/protocols/jabber/jabber.c Fri Aug 15 16:35:32 2008 +0000 @@ -346,26 +346,35 @@ if (len == -1) len = strlen(data); - if (js->writeh == 0) - ret = jabber_do_send(js, data, len); - else { - ret = -1; - errno = EAGAIN; - } + if (js->use_bosh) { + xmlnode *xnode = xmlnode_from_str(data, len); + if (xnode) jabber_bosh_connection_send(&(js->bosh), xnode); + else { + purple_connection_error_reason(js->gc, PURPLE_CONNECTION_ERROR_OTHER_ERROR, + _("Someone tried to send non-XML in a Jabber world.")); + } + } else { + if (js->writeh == 0) + ret = jabber_do_send(js, data, len); + else { + ret = -1; + errno = EAGAIN; + } - if (ret < 0 && errno != EAGAIN) - purple_connection_error_reason (js->gc, - PURPLE_CONNECTION_ERROR_NETWORK_ERROR, - _("Write error")); - else if (ret < len) { - if (ret < 0) - ret = 0; - if (js->writeh == 0) - js->writeh = purple_input_add( - js->gsc ? js->gsc->fd : js->fd, - PURPLE_INPUT_WRITE, jabber_send_cb, js); - purple_circ_buffer_append(js->write_buffer, - data + ret, len - ret); + if (ret < 0 && errno != EAGAIN) + purple_connection_error_reason (js->gc, + PURPLE_CONNECTION_ERROR_NETWORK_ERROR, + _("Write error")); + else if (ret < len) { + if (ret < 0) + ret = 0; + if (js->writeh == 0) + js->writeh = purple_input_add( + js->gsc ? js->gsc->fd : js->fd, + PURPLE_INPUT_WRITE, jabber_send_cb, js); + purple_circ_buffer_append(js->write_buffer, + data + ret, len - ret); + } } return; } @@ -388,13 +397,9 @@ if(NULL == packet) return; - if (js->use_bosh) { - jabber_bosh_connection_send(&(js->bosh), packet); - } else { - txt = xmlnode_to_str(packet, &len); - jabber_send_raw(js, txt, len); - g_free(txt); - } + txt = xmlnode_to_str(packet, &len); + jabber_send_raw(js, txt, len); + g_free(txt); } static void jabber_pong_cb(JabberStream *js, xmlnode *packet, gpointer timeout)