diff options
-rw-r--r-- | test.c | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -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); |