summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Contreras <felipe.contreras@gmail.com>2010-06-13 21:08:34 +0300
committerFelipe Contreras <felipe.contreras@gmail.com>2010-06-14 03:33:25 +0300
commitc030eccc7f613e736852ac2d8c9d1120fca67862 (patch)
treee5835018e8f1bb3991e5f60b24601007ea399e99
parente0f2ff68e46fe2b3360908f3fa5f69d6f65f86bb (diff)
test: add error handling
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
-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);