From 527bc0573a52f2af3ecad5b9ef39aeec7b669f77 Mon Sep 17 00:00:00 2001 From: James Booth Date: Sat, 28 Mar 2015 17:37:11 +0000 Subject: [PATCH] Fixed _log_open_tag to remove namespace prefix with libexpat --- src/conn.c | 6 ++++-- src/parser.h | 1 + src/parser_expat.c | 5 +++++ src/parser_libxml2.c | 5 +++++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/conn.c b/src/conn.c index c8e41d1..d72386f 100644 --- a/src/conn.c +++ b/src/conn.c @@ -748,6 +748,7 @@ static void _log_open_tag(xmpp_conn_t *conn, char **attrs) size_t pos; int len; int i; + char *attr; if (!attrs) return; @@ -756,10 +757,11 @@ static void _log_open_tag(xmpp_conn_t *conn, char **attrs) if (len < 0) return; pos += len; - for (i = 0; attrs[i]; i += 2) { + attr = parser_attr_name(conn->ctx, attrs[i]); len = xmpp_snprintf(&buf[pos], 4096 - pos, " %s='%s'", - attrs[i], attrs[i+1]); + attr, attrs[i+1]); + xmpp_free(conn->ctx, attr); if (len < 0) return; pos += len; } diff --git a/src/parser.h b/src/parser.h index b5d3914..063763c 100644 --- a/src/parser.h +++ b/src/parser.h @@ -34,6 +34,7 @@ parser_t *parser_new(xmpp_ctx_t *ctx, parser_stanza_callback stanzacb, void *userdata); void parser_free(parser_t * const parser); +char* parser_attr_name(xmpp_ctx_t *ctx, char *nsname); int parser_reset(parser_t *parser); int parser_feed(parser_t *parser, char *chunk, int len); diff --git a/src/parser_expat.c b/src/parser_expat.c index 27e2744..639242a 100644 --- a/src/parser_expat.c +++ b/src/parser_expat.c @@ -220,6 +220,11 @@ parser_t *parser_new(xmpp_ctx_t *ctx, return parser; } +char* parser_attr_name(xmpp_ctx_t *ctx, char *nsname) +{ + return _xml_name(ctx, nsname); +} + /* free a parser */ void parser_free(parser_t *parser) { diff --git a/src/parser_libxml2.c b/src/parser_libxml2.c index 9018419..15656f9 100644 --- a/src/parser_libxml2.c +++ b/src/parser_libxml2.c @@ -238,6 +238,11 @@ parser_t *parser_new(xmpp_ctx_t *ctx, return parser; } +char* parser_attr_name(xmpp_ctx_t *ctx, char *nsname) +{ + return xmpp_strdup(ctx, nsname); +} + /* free a parser */ void parser_free(parser_t *parser) {