Made iq functions take consistent parameters

This commit is contained in:
James Booth
2013-01-23 23:37:25 +00:00
parent e4b653057a
commit a412681375

View File

@@ -83,14 +83,20 @@ static int _chat_message_handler(xmpp_stanza_t * const stanza);
static int _iq_handler(xmpp_conn_t * const conn, static int _iq_handler(xmpp_conn_t * const conn,
xmpp_stanza_t * const stanza, void * const userdata); xmpp_stanza_t * const stanza, void * const userdata);
static int _roster_handler(xmpp_conn_t * const conn, static int _roster_handler(xmpp_conn_t * const conn,
xmpp_stanza_t * const stanza, void * const userdata); xmpp_stanza_t * const stanza, xmpp_ctx_t * const ctx,
static int _caps_response_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, const char * const id, const char * const type, const char * const from);
void * const userdata); static int _caps_response_handler(xmpp_conn_t * const conn,
static int _caps_request_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, xmpp_stanza_t * const stanza, xmpp_ctx_t * const ctx,
void * const userdata); const char * const id, const char * const type, const char * const from);
static int _version_request_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, static int _caps_request_handler(xmpp_conn_t * const conn,
void * const userdata); xmpp_stanza_t * const stanza, xmpp_ctx_t * const ctx,
const char * const id, const char * const type, const char * const from);
static int _version_request_handler(xmpp_conn_t * const conn,
xmpp_stanza_t * const stanza, xmpp_ctx_t * const ctx,
const char * const id, const char * const type, const char * const from);
static int _presence_handler(xmpp_conn_t * const conn, static int _presence_handler(xmpp_conn_t * const conn,
xmpp_stanza_t * const stanza, void * const userdata); xmpp_stanza_t * const stanza, void * const userdata);
static int _ping_timed_handler(xmpp_conn_t * const conn, void * const userdata); static int _ping_timed_handler(xmpp_conn_t * const conn, void * const userdata);
@@ -804,24 +810,26 @@ static int
_iq_handler(xmpp_conn_t * const conn, _iq_handler(xmpp_conn_t * const conn,
xmpp_stanza_t * const stanza, void * const userdata) xmpp_stanza_t * const stanza, void * const userdata)
{ {
xmpp_ctx_t *ctx = (xmpp_ctx_t *)userdata;
char *id = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_ID); char *id = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_ID);
char *type = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_TYPE); char *type = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_TYPE);
char *from = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_FROM);
// handle the initial roster request // handle the initial roster request
if (g_strcmp0(id, "roster") == 0) { if (g_strcmp0(id, "roster") == 0) {
return _roster_handler(conn, stanza, userdata); return _roster_handler(conn, stanza, ctx, id, type, from);
// handle caps responses // handle caps responses
} else if ((id != NULL) && (g_str_has_prefix(id, "disco")) && } else if ((id != NULL) && (g_str_has_prefix(id, "disco")) &&
(g_strcmp0(type, "result") == 0)) { (g_strcmp0(type, "result") == 0)) {
return _caps_response_handler(conn, stanza, userdata); return _caps_response_handler(conn, stanza, ctx, id, type, from);
// handle caps requests // handle caps requests
} else if (stanza_is_caps_request(stanza)) { } else if (stanza_is_caps_request(stanza)) {
return _caps_request_handler(conn, stanza, userdata); return _caps_request_handler(conn, stanza, ctx, id, type, from);
} else if (stanza_is_version_request(stanza)) { } else if (stanza_is_version_request(stanza)) {
return _version_request_handler(conn, stanza, userdata); return _version_request_handler(conn, stanza, ctx, id, type, from);
// handle iq // handle iq
} else { } else {
@@ -913,12 +921,12 @@ _iq_handler(xmpp_conn_t * const conn,
static int static int
_roster_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, _roster_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
void * const userdata) xmpp_ctx_t * const ctx, const char * const id, const char * const type,
const char * const from)
{ {
xmpp_stanza_t *query, *item; xmpp_stanza_t *query, *item;
char *type = xmpp_stanza_get_type(stanza);
if (strcmp(type, STANZA_TYPE_ERROR) == 0) if (g_strcmp0(type, STANZA_TYPE_ERROR) == 0)
log_error("Roster query failed"); log_error("Roster query failed");
else { else {
query = xmpp_stanza_get_child_by_name(stanza, STANZA_NAME_QUERY); query = xmpp_stanza_get_child_by_name(stanza, STANZA_NAME_QUERY);
@@ -931,7 +939,7 @@ _roster_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
gboolean pending_out = FALSE; gboolean pending_out = FALSE;
const char *ask = xmpp_stanza_get_attribute(item, STANZA_ATTR_ASK); const char *ask = xmpp_stanza_get_attribute(item, STANZA_ATTR_ASK);
if ((ask != NULL) && (strcmp(ask, "subscribe") == 0)) { if (g_strcmp0(ask, "subscribe") == 0) {
pending_out = TRUE; pending_out = TRUE;
} }
@@ -957,13 +965,9 @@ _roster_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
static int static int
_version_request_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, _version_request_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
void * const userdata) xmpp_ctx_t * const ctx, const char * const id, const char * const type,
const char * const from)
{ {
xmpp_ctx_t *ctx = (xmpp_ctx_t *)userdata;
char *from = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_FROM);
char *id = xmpp_stanza_get_id(stanza);
if (from != NULL) { if (from != NULL) {
xmpp_stanza_t *response = xmpp_stanza_new(ctx); xmpp_stanza_t *response = xmpp_stanza_new(ctx);
xmpp_stanza_set_name(response, STANZA_NAME_IQ); xmpp_stanza_set_name(response, STANZA_NAME_IQ);
@@ -1007,13 +1011,11 @@ _version_request_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
static int static int
_caps_request_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, _caps_request_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
void * const userdata) xmpp_ctx_t * ctx, const char * const id, const char * const type,
const char * const from)
{ {
xmpp_ctx_t *ctx = (xmpp_ctx_t *)userdata;
xmpp_stanza_t *incoming_query = xmpp_stanza_get_child_by_name(stanza, STANZA_NAME_QUERY); xmpp_stanza_t *incoming_query = xmpp_stanza_get_child_by_name(stanza, STANZA_NAME_QUERY);
char *node_str = xmpp_stanza_get_attribute(incoming_query, STANZA_ATTR_NODE); char *node_str = xmpp_stanza_get_attribute(incoming_query, STANZA_ATTR_NODE);
char *from = xmpp_stanza_get_attribute(stanza, STANZA_ATTR_FROM);
if (from != NULL && node_str != NULL) { if (from != NULL && node_str != NULL) {
xmpp_stanza_t *response = xmpp_stanza_new(ctx); xmpp_stanza_t *response = xmpp_stanza_new(ctx);
@@ -1034,11 +1036,9 @@ _caps_request_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
static int static int
_caps_response_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza, _caps_response_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
void * const userdata) xmpp_ctx_t * ctx, const char * const id, const char * const type,
const char * const from)
{ {
char *type = xmpp_stanza_get_type(stanza);
char *id = xmpp_stanza_get_id(stanza);
if (g_strcmp0(type, STANZA_TYPE_ERROR) == 0) { if (g_strcmp0(type, STANZA_TYPE_ERROR) == 0) {
log_error("Roster query failed"); log_error("Roster query failed");
return 1; return 1;
@@ -1053,7 +1053,7 @@ _caps_response_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
// xep-0115 // xep-0115
if (g_strcmp0(id, "disco") == 0) { if (g_strcmp0(id, "disco") == 0) {
caps_key = node; caps_key = strdup(node);
// validate sha1 // validate sha1
gchar **split = g_strsplit(node, "#", -1); gchar **split = g_strsplit(node, "#", -1);
@@ -1072,7 +1072,7 @@ _caps_response_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
// non supported hash, or legacy caps // non supported hash, or legacy caps
} else { } else {
caps_key = id + 6; caps_key = strdup(id + 6);
} }
// already cached // already cached
@@ -1103,6 +1103,8 @@ _caps_response_handler(xmpp_conn_t * const conn, xmpp_stanza_t * const stanza,
caps_add(caps_key, name); caps_add(caps_key, name);
free(caps_key);
return 1; return 1;
} }
} }