diff --git a/src/auth.c b/src/auth.c index 496648a..442bb3f 100644 --- a/src/auth.c +++ b/src/auth.c @@ -391,8 +391,7 @@ static int _handle_digestmd5_challenge(xmpp_conn_t *conn, xmpp_stanza_set_text(authdata, response); strophe_free(conn->ctx, response); - xmpp_stanza_add_child(auth, authdata); - xmpp_stanza_release(authdata); + xmpp_stanza_add_child_ex(auth, authdata, 0); handler_add(conn, _handle_digestmd5_rspauth, XMPP_NS_SASL, NULL, NULL, NULL); @@ -489,8 +488,7 @@ static int _handle_scram_challenge(xmpp_conn_t *conn, xmpp_stanza_set_text(authdata, response); strophe_free(conn->ctx, response); - xmpp_stanza_add_child(auth, authdata); - xmpp_stanza_release(authdata); + xmpp_stanza_add_child_ex(auth, authdata, 0); send_stanza(conn, auth, XMPP_QUEUE_STROPHE); @@ -684,8 +682,7 @@ static void _auth(xmpp_conn_t *conn) } strophe_free(conn->ctx, str); - xmpp_stanza_add_child(auth, authdata); - xmpp_stanza_release(authdata); + xmpp_stanza_add_child_ex(auth, authdata, 0); handler_add(conn, _handle_sasl_result, XMPP_NS_SASL, NULL, NULL, "EXTERNAL"); @@ -748,8 +745,7 @@ static void _auth(xmpp_conn_t *conn) } xmpp_stanza_set_text(authdata, str); strophe_free(conn->ctx, str); - xmpp_stanza_add_child(auth, authdata); - xmpp_stanza_release(authdata); + xmpp_stanza_add_child_ex(auth, authdata, 0); handler_add(conn, _handle_scram_challenge, XMPP_NS_SASL, NULL, NULL, (void *)scram_ctx); @@ -797,8 +793,7 @@ static void _auth(xmpp_conn_t *conn) strophe_free(conn->ctx, str); strophe_free(conn->ctx, authid); - xmpp_stanza_add_child(auth, authdata); - xmpp_stanza_release(authdata); + xmpp_stanza_add_child_ex(auth, authdata, 0); handler_add(conn, _handle_sasl_result, XMPP_NS_SASL, NULL, NULL, "PLAIN"); @@ -914,15 +909,12 @@ static int _do_bind(xmpp_conn_t *conn, xmpp_stanza_t *bind) return 0; } xmpp_stanza_set_text(text, resource); - xmpp_stanza_add_child(res, text); - xmpp_stanza_release(text); - xmpp_stanza_add_child(bind, res); - xmpp_stanza_release(res); + xmpp_stanza_add_child_ex(res, text, 0); + xmpp_stanza_add_child_ex(bind, res, 0); strophe_free(conn->ctx, resource); } - xmpp_stanza_add_child(iq, bind); - xmpp_stanza_release(bind); + xmpp_stanza_add_child_ex(iq, bind, 0); /* send bind request */ send_stanza(conn, iq, XMPP_QUEUE_STROPHE); @@ -1069,8 +1061,7 @@ _handle_bind(xmpp_conn_t *conn, xmpp_stanza_t *stanza, void *userdata) xmpp_stanza_set_name(session, "session"); xmpp_stanza_set_ns(session, XMPP_NS_SESSION); - xmpp_stanza_add_child(iq, session); - xmpp_stanza_release(session); + xmpp_stanza_add_child_ex(iq, session, 0); /* send session establishment request */ send_stanza(conn, iq, XMPP_QUEUE_STROPHE); @@ -1346,15 +1337,13 @@ static void _auth_legacy(xmpp_conn_t *conn) goto err_free; xmpp_stanza_set_name(query, "query"); xmpp_stanza_set_ns(query, XMPP_NS_AUTH); - xmpp_stanza_add_child(iq, query); - xmpp_stanza_release(query); + xmpp_stanza_add_child_ex(iq, query, 0); child = xmpp_stanza_new(conn->ctx); if (!child) goto err_free; xmpp_stanza_set_name(child, "username"); - xmpp_stanza_add_child(query, child); - xmpp_stanza_release(child); + xmpp_stanza_add_child_ex(query, child, 0); authdata = xmpp_stanza_new(conn->ctx); if (!authdata) @@ -1366,29 +1355,25 @@ static void _auth_legacy(xmpp_conn_t *conn) } xmpp_stanza_set_text(authdata, str); strophe_free(conn->ctx, str); - xmpp_stanza_add_child(child, authdata); - xmpp_stanza_release(authdata); + xmpp_stanza_add_child_ex(child, authdata, 0); child = xmpp_stanza_new(conn->ctx); if (!child) goto err_free; xmpp_stanza_set_name(child, "password"); - xmpp_stanza_add_child(query, child); - xmpp_stanza_release(child); + xmpp_stanza_add_child_ex(query, child, 0); authdata = xmpp_stanza_new(conn->ctx); if (!authdata) goto err_free; xmpp_stanza_set_text(authdata, conn->pass); - xmpp_stanza_add_child(child, authdata); - xmpp_stanza_release(authdata); + xmpp_stanza_add_child_ex(child, authdata, 0); child = xmpp_stanza_new(conn->ctx); if (!child) goto err_free; xmpp_stanza_set_name(child, "resource"); - xmpp_stanza_add_child(query, child); - xmpp_stanza_release(child); + xmpp_stanza_add_child_ex(query, child, 0); authdata = xmpp_stanza_new(conn->ctx); if (!authdata) @@ -1405,8 +1390,7 @@ static void _auth_legacy(xmpp_conn_t *conn) xmpp_disconnect(conn); return; } - xmpp_stanza_add_child(child, authdata); - xmpp_stanza_release(authdata); + xmpp_stanza_add_child_ex(child, authdata, 0); handler_add_id(conn, _handle_legacy, "_xmpp_auth1", NULL); handler_add_timed(conn, _handle_missing_legacy, LEGACY_TIMEOUT, NULL); diff --git a/src/parser_expat.c b/src/parser_expat.c index 6ba6a07..3d20766 100644 --- a/src/parser_expat.c +++ b/src/parser_expat.c @@ -152,8 +152,7 @@ static void complete_inner_text(parser_t *parser) /* FIXME: disconnect on allocation error */ if (stanza) { xmpp_stanza_set_text(stanza, parser->inner_text); - xmpp_stanza_add_child(parser->stanza, stanza); - xmpp_stanza_release(stanza); + xmpp_stanza_add_child_ex(parser->stanza, stanza, 0); } strophe_free(parser->ctx, parser->inner_text); parser->inner_text = NULL; @@ -195,8 +194,7 @@ _start_element(void *userdata, const XML_Char *nsname, const XML_Char **attrs) if (parser->stanza != NULL) { complete_inner_text(parser); - xmpp_stanza_add_child(parser->stanza, child); - xmpp_stanza_release(child); + xmpp_stanza_add_child_ex(parser->stanza, child, 0); } parser->stanza = child; } diff --git a/src/parser_libxml2.c b/src/parser_libxml2.c index c89132a..bc030c0 100644 --- a/src/parser_libxml2.c +++ b/src/parser_libxml2.c @@ -164,10 +164,7 @@ static void _start_element(void *userdata, xmpp_stanza_set_ns(child, (char *)uri); /* add child to parent */ - xmpp_stanza_add_child(parser->stanza, child); - - /* the child is owned by the toplevel stanza now */ - xmpp_stanza_release(child); + xmpp_stanza_add_child_ex(parser->stanza, child, 0); /* make child the current stanza */ parser->stanza = child; @@ -223,8 +220,7 @@ static void _characters(void *userdata, const xmlChar *chr, int len) } xmpp_stanza_set_text_with_size(stanza, (char *)chr, len); - xmpp_stanza_add_child(parser->stanza, stanza); - xmpp_stanza_release(stanza); + xmpp_stanza_add_child_ex(parser->stanza, stanza, 0); } /* create a new parser */ diff --git a/src/stanza.c b/src/stanza.c index 9593cc7..b381a1d 100644 --- a/src/stanza.c +++ b/src/stanza.c @@ -1604,8 +1604,7 @@ xmpp_error_new(xmpp_ctx_t *ctx, xmpp_error_type_t type, const char *text) } xmpp_stanza_set_ns(error_type, XMPP_NS_STREAMS_IETF); - xmpp_stanza_add_child(error, error_type); - xmpp_stanza_release(error_type); + xmpp_stanza_add_child_ex(error, error_type, 0); if (text) { xmpp_stanza_t *error_text = xmpp_stanza_new(ctx); @@ -1615,11 +1614,9 @@ xmpp_error_new(xmpp_ctx_t *ctx, xmpp_error_type_t type, const char *text) xmpp_stanza_set_ns(error_text, XMPP_NS_STREAMS_IETF); xmpp_stanza_set_text(content, text); - xmpp_stanza_add_child(error_text, content); - xmpp_stanza_release(content); + xmpp_stanza_add_child_ex(error_text, content, 0); - xmpp_stanza_add_child(error, error_text); - xmpp_stanza_release(error_text); + xmpp_stanza_add_child_ex(error, error_text, 0); } return error;