diff --git a/src/server/stanza.c b/src/server/stanza.c index bc65212..564212a 100644 --- a/src/server/stanza.c +++ b/src/server/stanza.c @@ -258,6 +258,30 @@ stanza_get_query_request(XMPPStanza *stanza) return xmlns; } +static void +_attrs_free(XMPPAttr *attr) +{ + if (attr) { + free(attr->name); + free(attr->value); + free(attr); + } +} + +void +stanza_free(XMPPStanza *stanza) +{ + if (stanza) { + free(stanza->name); + if (stanza->content) { + g_string_free(stanza->content, TRUE); + } + g_list_free_full(stanza->attrs, (GDestroyNotify)_attrs_free); + g_list_free_full(stanza->children, (GDestroyNotify)stanza_free); + free(stanza); + } +} + static void start_element(void *data, const char *element, const char **attributes) { diff --git a/src/server/stanza.h b/src/server/stanza.h index e547b4f..34c9306 100644 --- a/src/server/stanza.h +++ b/src/server/stanza.h @@ -48,5 +48,6 @@ const char* stanza_get_id(XMPPStanza *stanza); void stanza_set_id(XMPPStanza *stanza, const char *id); const char* stanza_get_attr(XMPPStanza *stanza, const char *name); const char *stanza_get_query_request(XMPPStanza *stanza); +void stanza_free(XMPPStanza *stanza); #endif diff --git a/src/server/stanzas.c b/src/server/stanzas.c index 5cf3e49..04bc5c9 100644 --- a/src/server/stanzas.c +++ b/src/server/stanzas.c @@ -197,30 +197,6 @@ stanza_verify_last(XMPPStanza *stanza) } } -static void -_attrs_free(XMPPAttr *attr) -{ - if (attr) { - free(attr->name); - free(attr->value); - free(attr); - } -} - -void -stanza_free(XMPPStanza *stanza) -{ - if (stanza) { - free(stanza->name); - if (stanza->content) { - g_string_free(stanza->content, TRUE); - } - g_list_free_full(stanza->attrs, (GDestroyNotify)_attrs_free); - g_list_free_full(stanza->children, (GDestroyNotify)stanza_free); - free(stanza); - } -} - void stanza_free_all(void) { diff --git a/src/server/stanzas.h b/src/server/stanzas.h index 1391a30..1b37354 100644 --- a/src/server/stanzas.h +++ b/src/server/stanzas.h @@ -34,7 +34,6 @@ int stanza_verify_last(XMPPStanza *stanza); int stanzas_contains_id(char *id); -void stanza_free(XMPPStanza *stanza); void stanza_free_all(void); #endif