Added stanza free functions
This commit is contained in:
@@ -218,7 +218,7 @@ server_run(int port)
|
|||||||
static void
|
static void
|
||||||
_shutdown(void)
|
_shutdown(void)
|
||||||
{
|
{
|
||||||
stanza_show_all();
|
// stanza_show_all();
|
||||||
xmppclient_end_session(client);
|
xmppclient_end_session(client);
|
||||||
parser_close();
|
parser_close();
|
||||||
|
|
||||||
@@ -226,5 +226,6 @@ _shutdown(void)
|
|||||||
shutdown(listen_socket, 2);
|
shutdown(listen_socket, 2);
|
||||||
close(listen_socket);
|
close(listen_socket);
|
||||||
|
|
||||||
|
stanza_free_all();
|
||||||
log_close();
|
log_close();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -163,3 +163,33 @@ stanza_get_id(XMPPStanza *stanza)
|
|||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_attrs_free(XMPPAttr *attr)
|
||||||
|
{
|
||||||
|
if (attr) {
|
||||||
|
free(attr->name);
|
||||||
|
free(attr->value);
|
||||||
|
free(attr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static 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)
|
||||||
|
{
|
||||||
|
g_list_free_full(stanzas, (GDestroyNotify)_stanza_free);
|
||||||
|
}
|
||||||
|
|||||||
@@ -2,12 +2,12 @@
|
|||||||
#define __H_STANZA
|
#define __H_STANZA
|
||||||
|
|
||||||
typedef struct xmpp_attr_t {
|
typedef struct xmpp_attr_t {
|
||||||
const char *name;
|
char *name;
|
||||||
const char *value;
|
char *value;
|
||||||
} XMPPAttr;
|
} XMPPAttr;
|
||||||
|
|
||||||
typedef struct xmpp_stanza_t {
|
typedef struct xmpp_stanza_t {
|
||||||
const char *name;
|
char *name;
|
||||||
GList *attrs;
|
GList *attrs;
|
||||||
GList *children;
|
GList *children;
|
||||||
GString *content;
|
GString *content;
|
||||||
@@ -24,4 +24,6 @@ const char* stanza_get_id(XMPPStanza *stanza);
|
|||||||
XMPPStanza* stanza_get_child_by_ns(XMPPStanza *stanza, char *ns);
|
XMPPStanza* stanza_get_child_by_ns(XMPPStanza *stanza, char *ns);
|
||||||
XMPPStanza* stanza_get_child_by_name(XMPPStanza *stanza, char *name);
|
XMPPStanza* stanza_get_child_by_name(XMPPStanza *stanza, char *name);
|
||||||
|
|
||||||
|
void stanza_free_all(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user