less calls to xmpp_stanza_release()
Instead of using the "cloning version" `xmpp_stanza_add_child()` use the version that takes ownership, so we don't have to release directly afterwards. Signed-off-by: Steffen Jaeckel <jaeckel-floss@eyet-services.de>
This commit is contained in:
48
src/auth.c
48
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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user