summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/test.c b/test.c
index 201cb61..22684fa 100644
--- a/test.c
+++ b/test.c
@@ -6,6 +6,15 @@
static GMainLoop *loop;
static void
+error_cb(struct pn_session *session,
+ GError **error)
+{
+ g_message("error: %s", (*error)->message);
+ g_clear_error(error);
+ g_main_loop_quit(loop);
+}
+
+static void
signal_handler(int signal)
{
g_main_loop_quit(loop);
@@ -14,6 +23,7 @@ signal_handler(int signal)
int main(int argc, char *argv[])
{
struct pn_session *session;
+ gulong error_handler;
g_type_init();
pn_core_init();
@@ -22,12 +32,14 @@ int main(int argc, char *argv[])
loop = g_main_loop_new(NULL, FALSE);
session = pn_session_new(argv[1], argv[2]);
+ error_handler = g_signal_connect(session, "error", G_CALLBACK(error_cb), NULL);
pn_session_connect(session, "messenger.hotmail.com", 1863);
g_message("connecting");
g_main_loop_run(loop);
+ g_signal_handler_disconnect(session, error_handler);
pn_session_free(session);
g_main_loop_unref(loop);