# HG changeset patch # User Nathan Walp # Date 1069867693 0 # Node ID 9008b5be42755fefe4c7d306829d90ada0963ee0 # Parent a80010831ff8fd75bdaa3e8267039c7b2ea321b8 [gaim-migrate @ 8285] let the xmlnode stuff handle embedded NULLs (i'll need this later) committer: Tailor Script diff -r a80010831ff8 -r 9008b5be4275 src/gtkblist.c --- a/src/gtkblist.c Wed Nov 26 16:33:40 2003 +0000 +++ b/src/gtkblist.c Wed Nov 26 17:28:13 2003 +0000 @@ -1113,7 +1113,7 @@ memcpy(&n, sd->data, sizeof(n)); if(gtk_tree_view_get_dest_row_at_pos(GTK_TREE_VIEW(widget), x, y, &path, &position)) { /* if we're here, I think it means the drop is ok */ - GtkTreeIter iter; + GtkTreeIter iter; GaimBlistNode *node; GValue val = {0}; struct _gaim_gtk_blist_node *gtknode; diff -r a80010831ff8 -r 9008b5be4275 src/protocols/jabber/auth.c --- a/src/protocols/jabber/auth.c Wed Nov 26 16:33:40 2003 +0000 +++ b/src/protocols/jabber/auth.c Wed Nov 26 17:28:13 2003 +0000 @@ -46,7 +46,7 @@ if(gaim_account_get_bool(js->gc->account, "use_tls", TRUE) && gaim_ssl_is_supported()) { jabber_send_raw(js, - ""); + "", -1); return; } else if(xmlnode_get_child(starttls, "required")) { gaim_connection_error(js->gc, _("Server requires SSL for login")); @@ -78,8 +78,9 @@ if(digest_md5) { xmlnode_set_attrib(auth, "mechanism", "DIGEST-MD5"); js->auth_type = JABBER_AUTH_DIGEST_MD5; - /* + /* } else if(plain) { + xmlnode_set_attrib(auth, "mechanism", "PLAIN"); js->auth_type = JABBER_AUTH_PLAIN; */ } else { @@ -297,7 +298,8 @@ if(rspauth && js->expected_rspauth && !strcmp(rspauth, js->expected_rspauth)) { jabber_send_raw(js, - ""); + "", + -1); } else { gaim_connection_error(js->gc, _("Invalid challenge from server")); } @@ -358,7 +360,7 @@ buf = g_strdup_printf("%s", enc_out); - jabber_send_raw(js, buf); + jabber_send_raw(js, buf, -1); g_free(buf); diff -r a80010831ff8 -r 9008b5be4275 src/protocols/jabber/buddy.c --- a/src/protocols/jabber/buddy.c Wed Nov 26 16:33:40 2003 +0000 +++ b/src/protocols/jabber/buddy.c Wed Nov 26 17:28:13 2003 +0000 @@ -422,7 +422,7 @@ } } - p = xmlnode_to_str(vc_node); + p = xmlnode_to_str(vc_node, NULL); xmlnode_free(vc_node); account = gaim_connection_get_account(gc); diff -r a80010831ff8 -r 9008b5be4275 src/protocols/jabber/jabber.c --- a/src/protocols/jabber/jabber.c Wed Nov 26 16:33:40 2003 +0000 +++ b/src/protocols/jabber/jabber.c Wed Nov 26 17:28:13 2003 +0000 @@ -56,7 +56,7 @@ "version='1.0'>", js->user->domain); - jabber_send_raw(js, open_stream); + jabber_send_raw(js, open_stream, -1); g_free(open_stream); } @@ -215,7 +215,7 @@ } } -void jabber_send_raw(JabberStream *js, const char *data) +void jabber_send_raw(JabberStream *js, const char *data, int len) { int ret; @@ -225,9 +225,9 @@ js->gsc ? " (ssl)" : "", data); if(js->gsc) { - ret = gaim_ssl_write(js->gsc, data, strlen(data)); + ret = gaim_ssl_write(js->gsc, data, len == -1 ? strlen(data) : len); } else { - ret = write(js->fd, data, strlen(data)); + ret = write(js->fd, data, len == -1 ? strlen(data) : len); } if(ret < 0) @@ -238,15 +238,16 @@ void jabber_send(JabberStream *js, xmlnode *packet) { char *txt; + int len; - txt = xmlnode_to_str(packet); - jabber_send_raw(js, txt); + txt = xmlnode_to_str(packet, &len); + jabber_send_raw(js, txt, len); g_free(txt); } static void jabber_keepalive(GaimConnection *gc) { - jabber_send_raw(gc->proto_data, "\t"); + jabber_send_raw(gc->proto_data, "\t", -1); } static void @@ -307,7 +308,7 @@ js->gsc = gsc; if(js->state == JABBER_STREAM_CONNECTING) - jabber_send_raw(js, ""); + jabber_send_raw(js, "", -1); jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING); gaim_ssl_input_add(gsc, jabber_recv_cb_ssl, gc); @@ -328,7 +329,7 @@ js->fd = source; if(js->state == JABBER_STREAM_CONNECTING) - jabber_send_raw(js, ""); + jabber_send_raw(js, "", -1); jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING); gc->inpa = gaim_input_add(js->fd, GAIM_INPUT_READ, jabber_recv_cb, gc); @@ -722,7 +723,7 @@ { JabberStream *js = gc->proto_data; - jabber_send_raw(js, ""); + jabber_send_raw(js, "", -1); if(js->gsc) { gaim_ssl_close(js->gsc); diff -r a80010831ff8 -r 9008b5be4275 src/protocols/jabber/jabber.h --- a/src/protocols/jabber/jabber.h Wed Nov 26 16:33:40 2003 +0000 +++ b/src/protocols/jabber/jabber.h Wed Nov 26 17:28:13 2003 +0000 @@ -82,7 +82,7 @@ void jabber_process_packet(JabberStream *js, xmlnode *packet); void jabber_send(JabberStream *js, xmlnode *data); -void jabber_send_raw(JabberStream *js, const char *data); +void jabber_send_raw(JabberStream *js, const char *data, int len); void jabber_stream_set_state(JabberStream *js, JabberStreamState state); diff -r a80010831ff8 -r 9008b5be4275 src/protocols/jabber/message.c --- a/src/protocols/jabber/message.c Wed Nov 26 16:33:40 2003 +0000 +++ b/src/protocols/jabber/message.c Wed Nov 26 17:28:13 2003 +0000 @@ -278,7 +278,7 @@ jm->body = xmlnode_get_data(child); } else if(!strcmp(child->name, "html")) { if(!jm->xhtml) - jm->xhtml = xmlnode_to_str(child); + jm->xhtml = xmlnode_to_str(child, NULL); } else if(!strcmp(child->name, "error")) { const char *code = xmlnode_get_attrib(child, "code"); char *code_txt = NULL; diff -r a80010831ff8 -r 9008b5be4275 src/xmlnode.c --- a/src/xmlnode.c Wed Nov 26 16:33:40 2003 +0000 +++ b/src/xmlnode.c Wed Nov 26 17:28:13 2003 +0000 @@ -233,7 +233,7 @@ return ret; } -char *xmlnode_to_str(xmlnode *node) +char *xmlnode_to_str(xmlnode *node, int *len) { char *ret; GString *text = g_string_new(""); @@ -264,12 +264,13 @@ for(c = node->child; c; c = c->next) { if(c->type == NODE_TYPE_TAG) { - esc = xmlnode_to_str(c); - g_string_append_printf(text, "%s", esc); + int esc_len; + esc = xmlnode_to_str(c, &esc_len); + text = g_string_append_len(text, esc, esc_len); g_free(esc); } else if(c->type == NODE_TYPE_DATA) { esc = g_markup_escape_text(c->data, c->data_sz); - g_string_append_printf(text, "%s", esc); + text = g_string_append(text, esc); g_free(esc); } } @@ -282,6 +283,8 @@ g_free(node_name); ret = text->str; + if(len) + *len = text->len; g_string_free(text, FALSE); return ret; } diff -r a80010831ff8 -r 9008b5be4275 src/xmlnode.h --- a/src/xmlnode.h Wed Nov 26 16:33:40 2003 +0000 +++ b/src/xmlnode.h Wed Nov 26 17:28:13 2003 +0000 @@ -49,7 +49,7 @@ void xmlnode_set_attrib(xmlnode *node, const char *attr, const char *value); const char *xmlnode_get_attrib(xmlnode *node, const char *attr); void xmlnode_remove_attrib(xmlnode *node, const char *attr); -char *xmlnode_to_str(xmlnode *node); +char *xmlnode_to_str(xmlnode *node, int *len); xmlnode *xmlnode_from_str(const char *str, size_t size); void xmlnode_free(xmlnode *node);