# HG changeset patch # User Mikael Hallendal # Date 1223464262 -7200 # Node ID cdd6a0c5b439f464cad222ede003b536f2f97282 # Parent 6fabea75bea7e2428761dcdaae95486124e31f07 Went over all of the files and made sure they all were indented the same way. This means from now on use 4 space instead of tabs everywhere for indentation. diff -r 6fabea75bea7 -r cdd6a0c5b439 examples/lm-change-password.c --- a/examples/lm-change-password.c Wed Oct 08 12:44:10 2008 +0200 +++ b/examples/lm-change-password.c Wed Oct 08 13:11:02 2008 +0200 @@ -27,132 +27,132 @@ static LmSSLResponse ssl_func (LmSSL *ssl, - LmSSLStatus status, - gpointer user_data) + LmSSLStatus status, + gpointer user_data) { - return LM_SSL_RESPONSE_CONTINUE; + return LM_SSL_RESPONSE_CONTINUE; } static void print_usage (const gchar *exec_name) { - g_print ("Usage: %s [--ssl] [--host ]\n", - exec_name); + g_print ("Usage: %s [--ssl] [--host ]\n", + exec_name); } int main (int argc, char **argv) { - LmConnection *connection; - const gchar *server; - const gchar *username; - const gchar *old_pass; - const gchar *new_pass; - const gchar *host; - GError *error = NULL; - LmMessage *m; - LmMessage *reply; - LmMessageNode *query; - gboolean use_ssl = FALSE; - - - if (argc < 5) { - print_usage (argv[0]); - return -1; - } + LmConnection *connection; + const gchar *server; + const gchar *username; + const gchar *old_pass; + const gchar *new_pass; + const gchar *host; + GError *error = NULL; + LmMessage *m; + LmMessage *reply; + LmMessageNode *query; + gboolean use_ssl = FALSE; + + + if (argc < 5) { + print_usage (argv[0]); + return -1; + } - server = argv[1]; - username = argv[2]; - old_pass = argv[3]; - new_pass = argv[4]; - host = NULL; + server = argv[1]; + username = argv[2]; + old_pass = argv[3]; + new_pass = argv[4]; + host = NULL; - if (argc >= 5) { - int i; + if (argc >= 5) { + int i; - for (i = 5; i < argc; ++i) { - if (strcmp (argv[i], "-s") == 0 || - strcmp (argv[i], "--ssl") == 0) { - use_ssl = TRUE; - } - else if (strcmp (argv[i], "-h") == 0 || - strcmp (argv[i], "--host") == 0) { - if (++i >= argc) { - print_usage (argv[0]); - return -1; - } + for (i = 5; i < argc; ++i) { + if (strcmp (argv[i], "-s") == 0 || + strcmp (argv[i], "--ssl") == 0) { + use_ssl = TRUE; + } + else if (strcmp (argv[i], "-h") == 0 || + strcmp (argv[i], "--host") == 0) { + if (++i >= argc) { + print_usage (argv[0]); + return -1; + } - host = argv[i]; - g_print ("HOST: %s\n", host); - } - } - } + host = argv[i]; + g_print ("HOST: %s\n", host); + } + } + } - connection = lm_connection_new (server); + connection = lm_connection_new (server); - if (host) { - gchar *jid; + if (host) { + gchar *jid; - jid = g_strdup_printf ("%s@%s", username, host); - g_print ("Setting jid to %s\n", jid); - lm_connection_set_jid (connection, jid); - g_free (jid); - } - - if (use_ssl) { - LmSSL *ssl; + jid = g_strdup_printf ("%s@%s", username, host); + g_print ("Setting jid to %s\n", jid); + lm_connection_set_jid (connection, jid); + g_free (jid); + } + + if (use_ssl) { + LmSSL *ssl; - if (!lm_ssl_is_supported ()) { - g_print ("This loudmouth installation doesn't support SSL\n"); - return 1; - } + if (!lm_ssl_is_supported ()) { + g_print ("This loudmouth installation doesn't support SSL\n"); + return 1; + } - g_print ("Setting ssl\n"); - ssl = lm_ssl_new (NULL, ssl_func, NULL, NULL); - lm_connection_set_ssl (connection, ssl); - lm_ssl_unref (ssl); + g_print ("Setting ssl\n"); + ssl = lm_ssl_new (NULL, ssl_func, NULL, NULL); + lm_connection_set_ssl (connection, ssl); + lm_ssl_unref (ssl); - lm_connection_set_port (connection, - LM_CONNECTION_DEFAULT_PORT_SSL); - } + lm_connection_set_port (connection, + LM_CONNECTION_DEFAULT_PORT_SSL); + } - if (!lm_connection_open_and_block (connection, &error)) { - g_error ("Failed to open: %s\n", error->message); - } + if (!lm_connection_open_and_block (connection, &error)) { + g_error ("Failed to open: %s\n", error->message); + } - if (!lm_connection_authenticate_and_block (connection, - username, old_pass, - "Password changer", - &error)) { - g_error ("Failed to authenticate: %s\n", error->message); - } + if (!lm_connection_authenticate_and_block (connection, + username, old_pass, + "Password changer", + &error)) { + g_error ("Failed to authenticate: %s\n", error->message); + } - m = lm_message_new_with_sub_type (NULL, LM_MESSAGE_TYPE_IQ, - LM_MESSAGE_SUB_TYPE_SET); - - query = lm_message_node_add_child (m->node, "query", NULL); - - lm_message_node_set_attributes (query, "xmlns", "jabber:iq:register", - NULL); - lm_message_node_add_child (query, "username", username); - lm_message_node_add_child (query, "password", new_pass); + m = lm_message_new_with_sub_type (NULL, LM_MESSAGE_TYPE_IQ, + LM_MESSAGE_SUB_TYPE_SET); + + query = lm_message_node_add_child (m->node, "query", NULL); + + lm_message_node_set_attributes (query, "xmlns", "jabber:iq:register", + NULL); + lm_message_node_add_child (query, "username", username); + lm_message_node_add_child (query, "password", new_pass); - reply = lm_connection_send_with_reply_and_block (connection, m, &error); - if (!reply) { - g_error ("Failed to change password: %s\n", error->message); - } + reply = lm_connection_send_with_reply_and_block (connection, m, &error); + if (!reply) { + g_error ("Failed to change password: %s\n", error->message); + } - if (lm_message_get_sub_type (reply) == LM_MESSAGE_SUB_TYPE_RESULT) { - g_print ("Password changed\n"); - } else { - g_print ("Failed to change password\n"); - /* If this wasn't only an example we should check error code - * here to tell the user why it failed */ - } - - lm_connection_close (connection, NULL); + if (lm_message_get_sub_type (reply) == LM_MESSAGE_SUB_TYPE_RESULT) { + g_print ("Password changed\n"); + } else { + g_print ("Failed to change password\n"); + /* If this wasn't only an example we should check error code + * here to tell the user why it failed */ + } + + lm_connection_close (connection, NULL); - return 0; + return 0; } diff -r 6fabea75bea7 -r cdd6a0c5b439 examples/lm-register.c --- a/examples/lm-register.c Wed Oct 08 12:44:10 2008 +0200 +++ b/examples/lm-register.c Wed Oct 08 13:11:02 2008 +0200 @@ -27,114 +27,114 @@ static LmSSLResponse ssl_func (LmSSL *ssl, - LmSSLStatus status, - gpointer user_data) + LmSSLStatus status, + gpointer user_data) { - return LM_SSL_RESPONSE_CONTINUE; + return LM_SSL_RESPONSE_CONTINUE; } static void print_usage (const gchar *exec_name) { - g_print ("Usage: %s [--ssl]\n", - exec_name); + g_print ("Usage: %s [--ssl]\n", + exec_name); } int main (int argc, char **argv) { - LmConnection *connection; - const gchar *server; - const gchar *username; - const gchar *pass; - GError *error = NULL; - LmMessage *m, *reply; - LmMessageNode *query, *node; - gboolean use_ssl = FALSE; + LmConnection *connection; + const gchar *server; + const gchar *username; + const gchar *pass; + GError *error = NULL; + LmMessage *m, *reply; + LmMessageNode *query, *node; + gboolean use_ssl = FALSE; + + if (argc < 4) { + print_usage (argv[0]); + return -1; + } + + server = argv[1]; + username = argv[2]; + pass = argv[3]; - if (argc < 4) { - print_usage (argv[0]); - return -1; + if (argc >= 4) { + int i; + + for (i = 4; i < argc; ++i) { + if (strcmp (argv[i], "-s") == 0 || + strcmp (argv[i], "--ssl") == 0) { + use_ssl = TRUE; + break; + } + } + } + + connection = lm_connection_new (server); + + if (use_ssl) { + LmSSL *ssl; + + if (!lm_ssl_is_supported ()) { + g_print ("This loudmouth installation doesn't support SSL\n"); + return 1; } - server = argv[1]; - username = argv[2]; - pass = argv[3]; - - if (argc >= 4) { - int i; + g_print ("Setting ssl\n"); + ssl = lm_ssl_new (NULL, ssl_func, NULL, NULL); + lm_connection_set_ssl (connection, ssl); + lm_ssl_unref (ssl); - for (i = 4; i < argc; ++i) { - if (strcmp (argv[i], "-s") == 0 || - strcmp (argv[i], "--ssl") == 0) { - use_ssl = TRUE; - break; - } - } - } - - connection = lm_connection_new (server); + lm_connection_set_port (connection, + LM_CONNECTION_DEFAULT_PORT_SSL); + } - if (use_ssl) { - LmSSL *ssl; + if (!lm_connection_open_and_block (connection, &error)) { + g_error ("Failed to open: %s\n", error->message); + } - if (!lm_ssl_is_supported ()) { - g_print ("This loudmouth installation doesn't support SSL\n"); - return 1; - } + m = lm_message_new_with_sub_type (NULL, LM_MESSAGE_TYPE_IQ, + LM_MESSAGE_SUB_TYPE_SET); - g_print ("Setting ssl\n"); - ssl = lm_ssl_new (NULL, ssl_func, NULL, NULL); - lm_connection_set_ssl (connection, ssl); - lm_ssl_unref (ssl); + query = lm_message_node_add_child (m->node, "query", NULL); - lm_connection_set_port (connection, - LM_CONNECTION_DEFAULT_PORT_SSL); - } - - if (!lm_connection_open_and_block (connection, &error)) { - g_error ("Failed to open: %s\n", error->message); - } + lm_message_node_set_attributes (query, "xmlns", "jabber:iq:register", + NULL); + lm_message_node_add_child (query, "username", username); + lm_message_node_add_child (query, "password", pass); - m = lm_message_new_with_sub_type (NULL, LM_MESSAGE_TYPE_IQ, - LM_MESSAGE_SUB_TYPE_SET); - - query = lm_message_node_add_child (m->node, "query", NULL); - - lm_message_node_set_attributes (query, "xmlns", "jabber:iq:register", - NULL); - lm_message_node_add_child (query, "username", username); - lm_message_node_add_child (query, "password", pass); - - reply = lm_connection_send_with_reply_and_block (connection, - m, &error); - - if (!reply) { - g_error ("Failed to send registration request: %s\n", - error->message); - } + reply = lm_connection_send_with_reply_and_block (connection, + m, &error); + + if (!reply) { + g_error ("Failed to send registration request: %s\n", + error->message); + } - switch (lm_message_get_sub_type (reply)) { - case LM_MESSAGE_SUB_TYPE_RESULT: - g_print ("Succeeded in register account '%s@%s'\n", - username, server); - break; - case LM_MESSAGE_SUB_TYPE_ERROR: - default: - g_print ("Failed to register account '%s@%s' due to: ", - username, server); - - node = lm_message_node_find_child (reply->node, "error"); - if (node) { - g_print ("%s\n", lm_message_node_get_value (node)); - } else { - g_print ("Unknown error\n"); - } - break; - } + switch (lm_message_get_sub_type (reply)) { + case LM_MESSAGE_SUB_TYPE_RESULT: + g_print ("Succeeded in register account '%s@%s'\n", + username, server); + break; + case LM_MESSAGE_SUB_TYPE_ERROR: + default: + g_print ("Failed to register account '%s@%s' due to: ", + username, server); + + node = lm_message_node_find_child (reply->node, "error"); + if (node) { + g_print ("%s\n", lm_message_node_get_value (node)); + } else { + g_print ("Unknown error\n"); + } + break; + } - lm_connection_close (connection, NULL); + lm_connection_close (connection, NULL); - return 0; + return 0; } diff -r 6fabea75bea7 -r cdd6a0c5b439 examples/lm-send-async.c --- a/examples/lm-send-async.c Wed Oct 08 12:44:10 2008 +0200 +++ b/examples/lm-send-async.c Wed Oct 08 13:11:02 2008 +0200 @@ -47,93 +47,93 @@ static GOptionEntry entries[] = { - { "server", 's', 0, G_OPTION_ARG_STRING, &server, - "Server to connect to", NULL }, - { "port", 'P', 0, G_OPTION_ARG_INT, &port, - "Port to connect to [default=5222]", NULL }, - { "username", 'u', 0, G_OPTION_ARG_STRING, &username, - "Username to connect with (user@server.org)", NULL }, - { "password", 'p', 0, G_OPTION_ARG_STRING, &password, - "Password to try", NULL }, - { "resource", 'r', 0, G_OPTION_ARG_STRING, &resource, - "Resource connect with [default=lm-send-async]", NULL }, - { "recipient", 'R', 0, G_OPTION_ARG_STRING, &recipient, - "Recipient to send the message to (e.g. user@server.org)", NULL }, - { "fingerprint", 'f', 0, G_OPTION_ARG_STRING, &fingerprint, - "SSL Fingerprint to use", NULL }, - { "message", 'm', 0, G_OPTION_ARG_STRING, &message, - "Message to send to recipient [default=test message]", NULL }, - { NULL } + { "server", 's', 0, G_OPTION_ARG_STRING, &server, + "Server to connect to", NULL }, + { "port", 'P', 0, G_OPTION_ARG_INT, &port, + "Port to connect to [default=5222]", NULL }, + { "username", 'u', 0, G_OPTION_ARG_STRING, &username, + "Username to connect with (user@server.org)", NULL }, + { "password", 'p', 0, G_OPTION_ARG_STRING, &password, + "Password to try", NULL }, + { "resource", 'r', 0, G_OPTION_ARG_STRING, &resource, + "Resource connect with [default=lm-send-async]", NULL }, + { "recipient", 'R', 0, G_OPTION_ARG_STRING, &recipient, + "Recipient to send the message to (e.g. user@server.org)", NULL }, + { "fingerprint", 'f', 0, G_OPTION_ARG_STRING, &fingerprint, + "SSL Fingerprint to use", NULL }, + { "message", 'm', 0, G_OPTION_ARG_STRING, &message, + "Message to send to recipient [default=test message]", NULL }, + { NULL } }; static gchar * get_part_name (const gchar *username) { - const gchar *ch; + const gchar *ch; - g_return_val_if_fail (username != NULL, NULL); + g_return_val_if_fail (username != NULL, NULL); - ch = strchr (username, '@'); - if (!ch) { - return NULL; - } + ch = strchr (username, '@'); + if (!ch) { + return NULL; + } - return g_strndup (username, ch - username); + return g_strndup (username, ch - username); } static void print_finger (const char *fpr, - unsigned int size) + unsigned int size) { - gint i; - for (i = 0; i < size-1; i++) { - g_printerr ("%02X:", fpr[i]); - } - - g_printerr ("%02X", fpr[size-1]); + gint i; + for (i = 0; i < size-1; i++) { + g_printerr ("%02X:", fpr[i]); + } + + g_printerr ("%02X", fpr[size-1]); } static LmSSLResponse ssl_cb (LmSSL *ssl, - LmSSLStatus status, - gpointer ud) + LmSSLStatus status, + gpointer ud) { - g_print ("LmSendAsync: SSL status:%d\n", status); + g_print ("LmSendAsync: SSL status:%d\n", status); - switch (status) { - case LM_SSL_STATUS_NO_CERT_FOUND: - g_printerr ("LmSendAsync: No certificate found!\n"); - break; - case LM_SSL_STATUS_UNTRUSTED_CERT: - g_printerr ("LmSendAsync: Certificate is not trusted!\n"); - break; - case LM_SSL_STATUS_CERT_EXPIRED: - g_printerr ("LmSendAsync: Certificate has expired!\n"); - break; - case LM_SSL_STATUS_CERT_NOT_ACTIVATED: - g_printerr ("LmSendAsync: Certificate has not been activated!\n"); - break; - case LM_SSL_STATUS_CERT_HOSTNAME_MISMATCH: - g_printerr ("LmSendAsync: Certificate hostname does not match expected hostname!\n"); - break; - case LM_SSL_STATUS_CERT_FINGERPRINT_MISMATCH: { - const char *fpr = lm_ssl_get_fingerprint (ssl); - g_printerr ("LmSendAsync: Certificate fingerprint does not match expected fingerprint!\n"); - g_printerr ("LmSendAsync: Remote fingerprint: "); - print_finger (fpr, 16); + switch (status) { + case LM_SSL_STATUS_NO_CERT_FOUND: + g_printerr ("LmSendAsync: No certificate found!\n"); + break; + case LM_SSL_STATUS_UNTRUSTED_CERT: + g_printerr ("LmSendAsync: Certificate is not trusted!\n"); + break; + case LM_SSL_STATUS_CERT_EXPIRED: + g_printerr ("LmSendAsync: Certificate has expired!\n"); + break; + case LM_SSL_STATUS_CERT_NOT_ACTIVATED: + g_printerr ("LmSendAsync: Certificate has not been activated!\n"); + break; + case LM_SSL_STATUS_CERT_HOSTNAME_MISMATCH: + g_printerr ("LmSendAsync: Certificate hostname does not match expected hostname!\n"); + break; + case LM_SSL_STATUS_CERT_FINGERPRINT_MISMATCH: { + const char *fpr = lm_ssl_get_fingerprint (ssl); + g_printerr ("LmSendAsync: Certificate fingerprint does not match expected fingerprint!\n"); + g_printerr ("LmSendAsync: Remote fingerprint: "); + print_finger (fpr, 16); - g_printerr ("\n" - "LmSendAsync: Expected fingerprint: "); - print_finger (expected_fingerprint, 16); - g_printerr ("\n"); - break; - } - case LM_SSL_STATUS_GENERIC_ERROR: - g_printerr ("LmSendAsync: Generic SSL error!\n"); - break; - } + g_printerr ("\n" + "LmSendAsync: Expected fingerprint: "); + print_finger (expected_fingerprint, 16); + g_printerr ("\n"); + break; + } + case LM_SSL_STATUS_GENERIC_ERROR: + g_printerr ("LmSendAsync: Generic SSL error!\n"); + break; + } - return LM_SSL_RESPONSE_CONTINUE; + return LM_SSL_RESPONSE_CONTINUE; } static void @@ -141,121 +141,121 @@ gboolean success, gpointer user_data) { - if (success) { - GError *error = NULL; - LmMessage *m; + if (success) { + GError *error = NULL; + LmMessage *m; - g_print ("LmSendAsync: Authenticated successfully\n"); - - m = lm_message_new (recipient, LM_MESSAGE_TYPE_MESSAGE); - lm_message_node_add_child (m->node, "body", message); - - if (!lm_connection_send (connection, m, &error)) { - g_printerr ("LmSendAsync: Failed to send message:'%s'\n", - lm_message_node_to_string (m->node)); - } else { - g_print ("LmSendAsync: Sent message:'%s'\n", - lm_message_node_to_string (m->node)); - test_success = TRUE; - } - - lm_message_unref (m); - } else { - g_printerr ("LmSendAsync: Failed to authenticate\n"); - } + g_print ("LmSendAsync: Authenticated successfully\n"); + + m = lm_message_new (recipient, LM_MESSAGE_TYPE_MESSAGE); + lm_message_node_add_child (m->node, "body", message); + + if (!lm_connection_send (connection, m, &error)) { + g_printerr ("LmSendAsync: Failed to send message:'%s'\n", + lm_message_node_to_string (m->node)); + } else { + g_print ("LmSendAsync: Sent message:'%s'\n", + lm_message_node_to_string (m->node)); + test_success = TRUE; + } + + lm_message_unref (m); + } else { + g_printerr ("LmSendAsync: Failed to authenticate\n"); + } - lm_connection_close (connection, NULL); - g_main_loop_quit (main_loop); + lm_connection_close (connection, NULL); + g_main_loop_quit (main_loop); } static void connection_open_cb (LmConnection *connection, - gboolean success, - gpointer user_data) + gboolean success, + gpointer user_data) { - if (success) { - gchar *user; + if (success) { + gchar *user; - user = get_part_name (username); - if (!lm_connection_authenticate (connection, user, - password, resource, - connection_auth_cb, - NULL, FALSE, NULL)) { - g_free (user); - g_printerr ("LmSendAsync: Failed to send authentication\n"); - g_main_loop_quit (main_loop); - return; - } + user = get_part_name (username); + if (!lm_connection_authenticate (connection, user, + password, resource, + connection_auth_cb, + NULL, FALSE, NULL)) { + g_free (user); + g_printerr ("LmSendAsync: Failed to send authentication\n"); + g_main_loop_quit (main_loop); + return; + } - g_free (user); + g_free (user); - g_print ("LmSendAsync: Sent authentication message\n"); - } else { - g_printerr ("LmSendAsync: Failed to connect\n"); - g_main_loop_quit (main_loop); - } + g_print ("LmSendAsync: Sent authentication message\n"); + } else { + g_printerr ("LmSendAsync: Failed to connect\n"); + g_main_loop_quit (main_loop); + } } int main (int argc, char **argv) { - GMainContext *main_context; - GOptionContext *context; - LmConnection *connection; + GMainContext *main_context; + GOptionContext *context; + LmConnection *connection; - context = g_option_context_new ("- test send message asynchronously"); - g_option_context_add_main_entries (context, entries, NULL); - g_option_context_parse (context, &argc, &argv, NULL); - g_option_context_free (context); - - if (!username || !password || !recipient) { - g_printerr ("For usage, try %s --help\n", argv[0]); - return EXIT_FAILURE; - } - - if (username && strchr (username, '@') == NULL) { - g_printerr ("LmSendAsync: Username must have an '@' included\n"); - return EXIT_FAILURE; - } - - main_context = g_main_context_new (); - connection = lm_connection_new_with_context (server, main_context); - lm_connection_set_port (connection, port); - lm_connection_set_jid (connection, username); + context = g_option_context_new ("- test send message asynchronously"); + g_option_context_add_main_entries (context, entries, NULL); + g_option_context_parse (context, &argc, &argv, NULL); + g_option_context_free (context); + + if (!username || !password || !recipient) { + g_printerr ("For usage, try %s --help\n", argv[0]); + return EXIT_FAILURE; + } - if (fingerprint) { - LmSSL *ssl; - char *p; - int i; - - if (port == LM_CONNECTION_DEFAULT_PORT) { - lm_connection_set_port (connection, - LM_CONNECTION_DEFAULT_PORT_SSL); - } + if (username && strchr (username, '@') == NULL) { + g_printerr ("LmSendAsync: Username must have an '@' included\n"); + return EXIT_FAILURE; + } - for (i = 0, p = fingerprint; *p && *(p+1); i++, p += 3) { - expected_fingerprint[i] = (unsigned char) g_ascii_strtoull (p, NULL, 16); - } - - ssl = lm_ssl_new (expected_fingerprint, - (LmSSLFunction) ssl_cb, - NULL, NULL); - - lm_ssl_use_starttls (ssl, TRUE, FALSE); + main_context = g_main_context_new (); + connection = lm_connection_new_with_context (server, main_context); + lm_connection_set_port (connection, port); + lm_connection_set_jid (connection, username); - lm_connection_set_ssl (connection, ssl); - lm_ssl_unref (ssl); - } - - if (!lm_connection_open (connection, - (LmResultFunction) connection_open_cb, - NULL, NULL, NULL)) { - g_printerr ("LmSendAsync: Could not open a connection\n"); - return EXIT_FAILURE; + if (fingerprint) { + LmSSL *ssl; + char *p; + int i; + + if (port == LM_CONNECTION_DEFAULT_PORT) { + lm_connection_set_port (connection, + LM_CONNECTION_DEFAULT_PORT_SSL); } - main_loop = g_main_loop_new (main_context, FALSE); - g_main_loop_run (main_loop); + for (i = 0, p = fingerprint; *p && *(p+1); i++, p += 3) { + expected_fingerprint[i] = (unsigned char) g_ascii_strtoull (p, NULL, 16); + } + + ssl = lm_ssl_new (expected_fingerprint, + (LmSSLFunction) ssl_cb, + NULL, NULL); + + lm_ssl_use_starttls (ssl, TRUE, FALSE); - return (test_success ? EXIT_SUCCESS : EXIT_FAILURE); + lm_connection_set_ssl (connection, ssl); + lm_ssl_unref (ssl); + } + + if (!lm_connection_open (connection, + (LmResultFunction) connection_open_cb, + NULL, NULL, NULL)) { + g_printerr ("LmSendAsync: Could not open a connection\n"); + return EXIT_FAILURE; + } + + main_loop = g_main_loop_new (main_context, FALSE); + g_main_loop_run (main_loop); + + return (test_success ? EXIT_SUCCESS : EXIT_FAILURE); } diff -r 6fabea75bea7 -r cdd6a0c5b439 examples/test-http-proxy.c --- a/examples/test-http-proxy.c Wed Oct 08 12:44:10 2008 +0200 +++ b/examples/test-http-proxy.c Wed Oct 08 13:11:02 2008 +0200 @@ -29,48 +29,48 @@ #endif typedef struct { - gchar *name; - gchar *passwd; + gchar *name; + gchar *passwd; } UserInfo; static void free_user_info (UserInfo *info) { - g_free (info->name); - g_free (info->passwd); + g_free (info->name); + g_free (info->passwd); - g_free (info); + g_free (info); } static void authentication_cb (LmConnection *connection, gboolean result, gpointer ud) { - g_print ("Auth: %d\n", result); - free_user_info ((UserInfo *) ud); + g_print ("Auth: %d\n", result); + free_user_info ((UserInfo *) ud); - if (result == TRUE) { - LmMessage *m; + if (result == TRUE) { + LmMessage *m; - m = lm_message_new_with_sub_type (NULL, - LM_MESSAGE_TYPE_PRESENCE, - LM_MESSAGE_SUB_TYPE_AVAILABLE); - g_print (":: %s\n", lm_message_node_to_string (m->node)); + m = lm_message_new_with_sub_type (NULL, + LM_MESSAGE_TYPE_PRESENCE, + LM_MESSAGE_SUB_TYPE_AVAILABLE); + g_print (":: %s\n", lm_message_node_to_string (m->node)); - lm_connection_send (connection, m, NULL); - lm_message_unref (m); - } + lm_connection_send (connection, m, NULL); + lm_message_unref (m); + } } static void connection_open_cb (LmConnection *connection, gboolean result, UserInfo *info) { - g_print ("Connected callback\n"); - lm_connection_authenticate (connection, - info->name, info->passwd, "TestLM", - authentication_cb, info, FALSE, NULL); - g_print ("Sent auth message\n"); + g_print ("Connected callback\n"); + lm_connection_authenticate (connection, + info->name, info->passwd, "TestLM", + authentication_cb, info, FALSE, NULL); + g_print ("Sent auth message\n"); } static LmHandlerResult @@ -79,61 +79,61 @@ LmMessage *m, gpointer user_data) { - g_print ("Incoming message from: %s\n", - lm_message_node_get_attribute (m->node, "from")); + g_print ("Incoming message from: %s\n", + lm_message_node_get_attribute (m->node, "from")); - return LM_HANDLER_RESULT_REMOVE_MESSAGE; + return LM_HANDLER_RESULT_REMOVE_MESSAGE; } int main (int argc, char **argv) { - GMainLoop *main_loop; - LmConnection *connection; - LmMessageHandler *handler; - gboolean result; - UserInfo *info; - LmProxy *proxy; - guint proxy_port; + GMainLoop *main_loop; + LmConnection *connection; + LmMessageHandler *handler; + gboolean result; + UserInfo *info; + LmProxy *proxy; + guint proxy_port; - if (argc < 6) { - g_print ("Usage: %s \n", argv[0]); - return 1; - } + if (argc < 6) { + g_print ("Usage: %s \n", argv[0]); + return 1; + } - connection = lm_connection_new (argv[1]); + connection = lm_connection_new (argv[1]); - proxy = lm_proxy_new (LM_PROXY_TYPE_HTTP); - lm_proxy_set_server (proxy, argv[4]); + proxy = lm_proxy_new (LM_PROXY_TYPE_HTTP); + lm_proxy_set_server (proxy, argv[4]); - proxy_port = strtol (argv[5], (char **) NULL, 10); - lm_proxy_set_port (proxy, proxy_port); - lm_connection_set_proxy (connection, proxy); - lm_proxy_unref (proxy); + proxy_port = strtol (argv[5], (char **) NULL, 10); + lm_proxy_set_port (proxy, proxy_port); + lm_connection_set_proxy (connection, proxy); + lm_proxy_unref (proxy); - handler = lm_message_handler_new (handle_messages, NULL, NULL); - lm_connection_register_message_handler (connection, handler, - LM_MESSAGE_TYPE_MESSAGE, - LM_HANDLER_PRIORITY_NORMAL); + handler = lm_message_handler_new (handle_messages, NULL, NULL); + lm_connection_register_message_handler (connection, handler, + LM_MESSAGE_TYPE_MESSAGE, + LM_HANDLER_PRIORITY_NORMAL); - lm_message_handler_unref (handler); + lm_message_handler_unref (handler); - info = g_new0 (UserInfo, 1); - info->name = g_strdup (argv[2]); - info->passwd = g_strdup (argv[3]); + info = g_new0 (UserInfo, 1); + info->name = g_strdup (argv[2]); + info->passwd = g_strdup (argv[3]); - result = lm_connection_open (connection, - (LmResultFunction) connection_open_cb, - info, NULL, NULL); + result = lm_connection_open (connection, + (LmResultFunction) connection_open_cb, + info, NULL, NULL); - if (!result) { - g_print ("Opening connection failed: %d\n", result); - } else { - g_print ("Returned from the connection_open\n"); - } + if (!result) { + g_print ("Opening connection failed: %d\n", result); + } else { + g_print ("Returned from the connection_open\n"); + } - main_loop = g_main_loop_new (NULL, FALSE); - g_main_loop_run (main_loop); + main_loop = g_main_loop_new (NULL, FALSE); + g_main_loop_run (main_loop); - return 0; + return 0; } diff -r 6fabea75bea7 -r cdd6a0c5b439 examples/test-lm.c --- a/examples/test-lm.c Wed Oct 08 12:44:10 2008 +0200 +++ b/examples/test-lm.c Wed Oct 08 13:11:02 2008 +0200 @@ -40,260 +40,260 @@ static GOptionEntry entries[] = { - { "server", 's', 0, G_OPTION_ARG_STRING, &server, - "Server to connect to", NULL }, - { "port", 'P', 0, G_OPTION_ARG_INT, &port, - "Port to connect to [default=5222]", NULL }, - { "username", 'u', 0, G_OPTION_ARG_STRING, &username, - "Username to connect with (user@server.org)", NULL }, - { "password", 'p', 0, G_OPTION_ARG_STRING, &password, - "Password to try", NULL }, - { "resource", 'r', 0, G_OPTION_ARG_STRING, &resource, - "Resource connect with [default=test-lm]", NULL }, - { "fingerprint", 'f', 0, G_OPTION_ARG_STRING, &fingerprint, - "SSL Fingerprint to use", NULL }, - { NULL } + { "server", 's', 0, G_OPTION_ARG_STRING, &server, + "Server to connect to", NULL }, + { "port", 'P', 0, G_OPTION_ARG_INT, &port, + "Port to connect to [default=5222]", NULL }, + { "username", 'u', 0, G_OPTION_ARG_STRING, &username, + "Username to connect with (user@server.org)", NULL }, + { "password", 'p', 0, G_OPTION_ARG_STRING, &password, + "Password to try", NULL }, + { "resource", 'r', 0, G_OPTION_ARG_STRING, &resource, + "Resource connect with [default=test-lm]", NULL }, + { "fingerprint", 'f', 0, G_OPTION_ARG_STRING, &fingerprint, + "SSL Fingerprint to use", NULL }, + { NULL } }; static gchar * get_part_name (const gchar *username) { - const gchar *ch; + const gchar *ch; - g_return_val_if_fail (username != NULL, NULL); + g_return_val_if_fail (username != NULL, NULL); - ch = strchr (username, '@'); - if (!ch) { - return NULL; - } + ch = strchr (username, '@'); + if (!ch) { + return NULL; + } - return g_strndup (username, ch - username); + return g_strndup (username, ch - username); } static void print_finger (const char *fpr, - unsigned int size) + unsigned int size) { - gint i; - for (i = 0; i < size-1; i++) { - g_printerr ("%02X:", fpr[i]); - } - - g_printerr ("%02X", fpr[size-1]); + gint i; + for (i = 0; i < size-1; i++) { + g_printerr ("%02X:", fpr[i]); + } + + g_printerr ("%02X", fpr[size-1]); } static LmSSLResponse ssl_cb (LmSSL *ssl, - LmSSLStatus status, - gpointer ud) + LmSSLStatus status, + gpointer ud) { - g_print ("TestLM: SSL status:%d\n", status); + g_print ("TestLM: SSL status:%d\n", status); - switch (status) { - case LM_SSL_STATUS_NO_CERT_FOUND: - g_printerr ("TestLM: No certificate found!\n"); - break; - case LM_SSL_STATUS_UNTRUSTED_CERT: - g_printerr ("TestLM: Certificate is not trusted!\n"); - break; - case LM_SSL_STATUS_CERT_EXPIRED: - g_printerr ("TestLM: Certificate has expired!\n"); - break; - case LM_SSL_STATUS_CERT_NOT_ACTIVATED: - g_printerr ("TestLM: Certificate has not been activated!\n"); - break; - case LM_SSL_STATUS_CERT_HOSTNAME_MISMATCH: - g_printerr ("TestLM: Certificate hostname does not match expected hostname!\n"); - break; - case LM_SSL_STATUS_CERT_FINGERPRINT_MISMATCH: { - const char *fpr = lm_ssl_get_fingerprint (ssl); - g_printerr ("TestLM: Certificate fingerprint does not match expected fingerprint!\n"); - g_printerr ("TestLM: Remote fingerprint: "); - print_finger (fpr, 16); + switch (status) { + case LM_SSL_STATUS_NO_CERT_FOUND: + g_printerr ("TestLM: No certificate found!\n"); + break; + case LM_SSL_STATUS_UNTRUSTED_CERT: + g_printerr ("TestLM: Certificate is not trusted!\n"); + break; + case LM_SSL_STATUS_CERT_EXPIRED: + g_printerr ("TestLM: Certificate has expired!\n"); + break; + case LM_SSL_STATUS_CERT_NOT_ACTIVATED: + g_printerr ("TestLM: Certificate has not been activated!\n"); + break; + case LM_SSL_STATUS_CERT_HOSTNAME_MISMATCH: + g_printerr ("TestLM: Certificate hostname does not match expected hostname!\n"); + break; + case LM_SSL_STATUS_CERT_FINGERPRINT_MISMATCH: { + const char *fpr = lm_ssl_get_fingerprint (ssl); + g_printerr ("TestLM: Certificate fingerprint does not match expected fingerprint!\n"); + g_printerr ("TestLM: Remote fingerprint: "); + print_finger (fpr, 16); - g_printerr ("\n" - "TestLM: Expected fingerprint: "); - print_finger (expected_fingerprint, 16); - g_printerr ("\n"); - break; - } - case LM_SSL_STATUS_GENERIC_ERROR: - g_printerr ("TestLM: Generic SSL error!\n"); - break; - } + g_printerr ("\n" + "TestLM: Expected fingerprint: "); + print_finger (expected_fingerprint, 16); + g_printerr ("\n"); + break; + } + case LM_SSL_STATUS_GENERIC_ERROR: + g_printerr ("TestLM: Generic SSL error!\n"); + break; + } - return LM_SSL_RESPONSE_CONTINUE; + return LM_SSL_RESPONSE_CONTINUE; } static void connection_auth_cb (LmConnection *connection, - gboolean success, - gpointer user_data) + gboolean success, + gpointer user_data) { - if (success) { - LmMessage *m; - - test_success = TRUE; - g_print ("TestLM: Authenticated successfully\n"); + if (success) { + LmMessage *m; + + test_success = TRUE; + g_print ("TestLM: Authenticated successfully\n"); - m = lm_message_new_with_sub_type (NULL, - LM_MESSAGE_TYPE_PRESENCE, - LM_MESSAGE_SUB_TYPE_AVAILABLE); - lm_connection_send (connection, m, NULL); - g_print ("TestLM: Sent presence message:'%s'\n", - lm_message_node_to_string (m->node)); + m = lm_message_new_with_sub_type (NULL, + LM_MESSAGE_TYPE_PRESENCE, + LM_MESSAGE_SUB_TYPE_AVAILABLE); + lm_connection_send (connection, m, NULL); + g_print ("TestLM: Sent presence message:'%s'\n", + lm_message_node_to_string (m->node)); - lm_message_unref (m); - } else { - g_printerr ("TestLM: Failed to authenticate\n"); - g_main_loop_quit (main_loop); - } + lm_message_unref (m); + } else { + g_printerr ("TestLM: Failed to authenticate\n"); + g_main_loop_quit (main_loop); + } } static void connection_open_cb (LmConnection *connection, - gboolean success, - gpointer user_data) + gboolean success, + gpointer user_data) { - if (success) { - gchar *user; + if (success) { + gchar *user; - user = get_part_name (username); - lm_connection_authenticate (connection, user, - password, resource, - connection_auth_cb, - NULL, FALSE, NULL); - g_free (user); - - g_print ("TestLM: Sent authentication message\n"); - } else { - g_printerr ("TestLM: Failed to connect\n"); - g_main_loop_quit (main_loop); - } + user = get_part_name (username); + lm_connection_authenticate (connection, user, + password, resource, + connection_auth_cb, + NULL, FALSE, NULL); + g_free (user); + + g_print ("TestLM: Sent authentication message\n"); + } else { + g_printerr ("TestLM: Failed to connect\n"); + g_main_loop_quit (main_loop); + } } static void connection_close_cb (LmConnection *connection, - LmDisconnectReason reason, - gpointer user_data) + LmDisconnectReason reason, + gpointer user_data) { - const char *str; - - switch (reason) { - case LM_DISCONNECT_REASON_OK: - str = "LM_DISCONNECT_REASON_OK"; - break; - case LM_DISCONNECT_REASON_PING_TIME_OUT: - str = "LM_DISCONNECT_REASON_PING_TIME_OUT"; - break; - case LM_DISCONNECT_REASON_HUP: - str = "LM_DISCONNECT_REASON_HUP"; - break; - case LM_DISCONNECT_REASON_ERROR: - str = "LM_DISCONNECT_REASON_ERROR"; - break; - case LM_DISCONNECT_REASON_UNKNOWN: - default: - str = "LM_DISCONNECT_REASON_UNKNOWN"; - break; - } + const char *str; + + switch (reason) { + case LM_DISCONNECT_REASON_OK: + str = "LM_DISCONNECT_REASON_OK"; + break; + case LM_DISCONNECT_REASON_PING_TIME_OUT: + str = "LM_DISCONNECT_REASON_PING_TIME_OUT"; + break; + case LM_DISCONNECT_REASON_HUP: + str = "LM_DISCONNECT_REASON_HUP"; + break; + case LM_DISCONNECT_REASON_ERROR: + str = "LM_DISCONNECT_REASON_ERROR"; + break; + case LM_DISCONNECT_REASON_UNKNOWN: + default: + str = "LM_DISCONNECT_REASON_UNKNOWN"; + break; + } - g_print ("TestLM: Disconnected, reason:%d->'%s'\n", reason, str); + g_print ("TestLM: Disconnected, reason:%d->'%s'\n", reason, str); } static LmHandlerResult handle_messages (LmMessageHandler *handler, - LmConnection *connection, - LmMessage *m, - gpointer user_data) + LmConnection *connection, + LmMessage *m, + gpointer user_data) { - g_print ("TestLM: Incoming message from: %s\n", - lm_message_node_get_attribute (m->node, "from")); + g_print ("TestLM: Incoming message from: %s\n", + lm_message_node_get_attribute (m->node, "from")); - return LM_HANDLER_RESULT_REMOVE_MESSAGE; + return LM_HANDLER_RESULT_REMOVE_MESSAGE; } int main (int argc, char **argv) { - GOptionContext *context; - LmConnection *connection; - LmMessageHandler *handler; - gboolean result; - GError *error = NULL; - - context = g_option_context_new ("- test Loudmouth"); - g_option_context_add_main_entries (context, entries, NULL); - g_option_context_parse (context, &argc, &argv, NULL); - g_option_context_free (context); - - if (!server || !username || !password) { - g_printerr ("For usage, try %s --help\n", argv[0]); - return EXIT_FAILURE; - } + GOptionContext *context; + LmConnection *connection; + LmMessageHandler *handler; + gboolean result; + GError *error = NULL; + + context = g_option_context_new ("- test Loudmouth"); + g_option_context_add_main_entries (context, entries, NULL); + g_option_context_parse (context, &argc, &argv, NULL); + g_option_context_free (context); + + if (!server || !username || !password) { + g_printerr ("For usage, try %s --help\n", argv[0]); + return EXIT_FAILURE; + } - if (fingerprint && !lm_ssl_is_supported ()) { - g_printerr ("TestLM: SSL is not supported in this build\n"); - return EXIT_FAILURE; - } + if (fingerprint && !lm_ssl_is_supported ()) { + g_printerr ("TestLM: SSL is not supported in this build\n"); + return EXIT_FAILURE; + } - if (username && strchr (username, '@') == NULL) { - g_printerr ("TestLM: Username must have an '@' included\n"); - return EXIT_FAILURE; - } + if (username && strchr (username, '@') == NULL) { + g_printerr ("TestLM: Username must have an '@' included\n"); + return EXIT_FAILURE; + } - connection = lm_connection_new (server); - lm_connection_set_port (connection, port); - lm_connection_set_jid (connection, username); + connection = lm_connection_new (server); + lm_connection_set_port (connection, port); + lm_connection_set_jid (connection, username); - handler = lm_message_handler_new (handle_messages, NULL, NULL); - lm_connection_register_message_handler (connection, handler, - LM_MESSAGE_TYPE_MESSAGE, - LM_HANDLER_PRIORITY_NORMAL); - - lm_message_handler_unref (handler); - - lm_connection_set_disconnect_function (connection, - connection_close_cb, - NULL, NULL); + handler = lm_message_handler_new (handle_messages, NULL, NULL); + lm_connection_register_message_handler (connection, handler, + LM_MESSAGE_TYPE_MESSAGE, + LM_HANDLER_PRIORITY_NORMAL); + + lm_message_handler_unref (handler); + + lm_connection_set_disconnect_function (connection, + connection_close_cb, + NULL, NULL); - if (fingerprint) { - LmSSL *ssl; - char *p; - int i; - - if (port == LM_CONNECTION_DEFAULT_PORT) { - lm_connection_set_port (connection, - LM_CONNECTION_DEFAULT_PORT_SSL); - } + if (fingerprint) { + LmSSL *ssl; + char *p; + int i; + + if (port == LM_CONNECTION_DEFAULT_PORT) { + lm_connection_set_port (connection, + LM_CONNECTION_DEFAULT_PORT_SSL); + } - for (i = 0, p = fingerprint; *p && *(p+1); i++, p += 3) { - expected_fingerprint[i] = (unsigned char) g_ascii_strtoull (p, NULL, 16); - } - - ssl = lm_ssl_new (expected_fingerprint, - (LmSSLFunction) ssl_cb, - NULL, NULL); + for (i = 0, p = fingerprint; *p && *(p+1); i++, p += 3) { + expected_fingerprint[i] = (unsigned char) g_ascii_strtoull (p, NULL, 16); + } + + ssl = lm_ssl_new (expected_fingerprint, + (LmSSLFunction) ssl_cb, + NULL, NULL); - lm_ssl_use_starttls (ssl, TRUE, FALSE); - - lm_connection_set_ssl (connection, ssl); - lm_ssl_unref (ssl); - } + lm_ssl_use_starttls (ssl, TRUE, FALSE); + + lm_connection_set_ssl (connection, ssl); + lm_ssl_unref (ssl); + } - result = lm_connection_open (connection, - (LmResultFunction) connection_open_cb, - NULL, NULL, &error); + result = lm_connection_open (connection, + (LmResultFunction) connection_open_cb, + NULL, NULL, &error); - if (!result) { - g_printerr ("TestLM: Opening connection failed, error:%d->'%s'\n", - error->code, error->message); - g_free (error); - return EXIT_FAILURE; - } - - main_loop = g_main_loop_new (NULL, FALSE); - g_main_loop_run (main_loop); + if (!result) { + g_printerr ("TestLM: Opening connection failed, error:%d->'%s'\n", + error->code, error->message); + g_free (error); + return EXIT_FAILURE; + } + + main_loop = g_main_loop_new (NULL, FALSE); + g_main_loop_run (main_loop); - return (test_success ? EXIT_SUCCESS : EXIT_FAILURE); + return (test_success ? EXIT_SUCCESS : EXIT_FAILURE); } diff -r 6fabea75bea7 -r cdd6a0c5b439 examples/test-tunnel.c --- a/examples/test-tunnel.c Wed Oct 08 12:44:10 2008 +0200 +++ b/examples/test-tunnel.c Wed Oct 08 13:11:02 2008 +0200 @@ -29,48 +29,48 @@ #endif typedef struct { - gchar *name; - gchar *passwd; + gchar *name; + gchar *passwd; } UserInfo; static void free_user_info (UserInfo *info) { - g_free (info->name); - g_free (info->passwd); + g_free (info->name); + g_free (info->passwd); - g_free (info); + g_free (info); } static void authentication_cb (LmConnection *connection, gboolean result, gpointer ud) { - g_print ("Auth: %d\n", result); - free_user_info ((UserInfo *) ud); + g_print ("Auth: %d\n", result); + free_user_info ((UserInfo *) ud); - if (result == TRUE) { - LmMessage *m; + if (result == TRUE) { + LmMessage *m; - m = lm_message_new_with_sub_type (NULL, - LM_MESSAGE_TYPE_PRESENCE, - LM_MESSAGE_SUB_TYPE_AVAILABLE); - g_print (":: %s\n", lm_message_node_to_string (m->node)); + m = lm_message_new_with_sub_type (NULL, + LM_MESSAGE_TYPE_PRESENCE, + LM_MESSAGE_SUB_TYPE_AVAILABLE); + g_print (":: %s\n", lm_message_node_to_string (m->node)); - lm_connection_send (connection, m, NULL); - lm_message_unref (m); - } + lm_connection_send (connection, m, NULL); + lm_message_unref (m); + } } static void connection_open_cb (LmConnection *connection, gboolean result, UserInfo *info) { - g_print ("Connected callback\n"); - lm_connection_authenticate (connection, - info->name, info->passwd, "TestLM", - authentication_cb, info, FALSE, NULL); - g_print ("Sent auth message\n"); + g_print ("Connected callback\n"); + lm_connection_authenticate (connection, + info->name, info->passwd, "TestLM", + authentication_cb, info, FALSE, NULL); + g_print ("Sent auth message\n"); } static LmHandlerResult @@ -79,58 +79,58 @@ LmMessage *m, gpointer user_data) { - g_print ("Incoming message from: %s\n", - lm_message_node_get_attribute (m->node, "from")); + g_print ("Incoming message from: %s\n", + lm_message_node_get_attribute (m->node, "from")); - return LM_HANDLER_RESULT_REMOVE_MESSAGE; + return LM_HANDLER_RESULT_REMOVE_MESSAGE; } int main (int argc, char **argv) { - GMainLoop *main_loop; - LmConnection *connection; - LmMessageHandler *handler; - gboolean result; - UserInfo *info; - gchar *jid; + GMainLoop *main_loop; + LmConnection *connection; + LmMessageHandler *handler; + gboolean result; + UserInfo *info; + gchar *jid; - if (argc < 6) { - g_print ("Usage: %s \n", argv[0]); - return 1; - } + if (argc < 6) { + g_print ("Usage: %s \n", argv[0]); + return 1; + } - connection = lm_connection_new (argv[4]); + connection = lm_connection_new (argv[4]); - jid = g_strdup_printf ("%s@%s", argv[2], argv[1]); - lm_connection_set_jid (connection, jid); - g_free (jid); + jid = g_strdup_printf ("%s@%s", argv[2], argv[1]); + lm_connection_set_jid (connection, jid); + g_free (jid); - lm_connection_set_port (connection, strtol (argv[5], (char **) NULL, 10)); + lm_connection_set_port (connection, strtol (argv[5], (char **) NULL, 10)); - handler = lm_message_handler_new (handle_messages, NULL, NULL); - lm_connection_register_message_handler (connection, handler, - LM_MESSAGE_TYPE_MESSAGE, - LM_HANDLER_PRIORITY_NORMAL); + handler = lm_message_handler_new (handle_messages, NULL, NULL); + lm_connection_register_message_handler (connection, handler, + LM_MESSAGE_TYPE_MESSAGE, + LM_HANDLER_PRIORITY_NORMAL); - lm_message_handler_unref (handler); + lm_message_handler_unref (handler); - info = g_new0 (UserInfo, 1); - info->name = g_strdup (argv[2]); - info->passwd = g_strdup (argv[3]); + info = g_new0 (UserInfo, 1); + info->name = g_strdup (argv[2]); + info->passwd = g_strdup (argv[3]); - result = lm_connection_open (connection, - (LmResultFunction) connection_open_cb, - info, NULL, NULL); + result = lm_connection_open (connection, + (LmResultFunction) connection_open_cb, + info, NULL, NULL); - if (!result) { - g_print ("Opening connection failed: %d\n", result); - } else { - g_print ("Returned from the connection_open\n"); - } + if (!result) { + g_print ("Opening connection failed: %d\n", result); + } else { + g_print ("Returned from the connection_open\n"); + } - main_loop = g_main_loop_new (NULL, FALSE); - g_main_loop_run (main_loop); + main_loop = g_main_loop_new (NULL, FALSE); + g_main_loop_run (main_loop); - return 0; + return 0; } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/asyncns.c --- a/loudmouth/asyncns.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/asyncns.c Wed Oct 08 13:11:02 2008 +0200 @@ -1,22 +1,23 @@ +/* -*- mode: c; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* $Id: asyncns.c 27 2007-02-16 13:51:03Z lennart $ */ /*** - This file is part of libasyncns. + This file is part of libasyncns. - libasyncns is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + libasyncns is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. - libasyncns is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + libasyncns is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. - You should have received a copy of the GNU Lesser General Public - License along with libasyncns; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - USA. + You should have received a copy of the GNU Lesser General Public + License along with libasyncns; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA. ***/ /*#undef HAVE_PTHREAD */ @@ -291,86 +292,86 @@ assert(length == req->length); switch (req->type) { - case REQUEST_ADDRINFO: { - struct addrinfo ai, *result = NULL; - const addrinfo_request_t *ai_req = (const addrinfo_request_t*) req; - const char *node, *service; - int ret; + case REQUEST_ADDRINFO: { + struct addrinfo ai, *result = NULL; + const addrinfo_request_t *ai_req = (const addrinfo_request_t*) req; + const char *node, *service; + int ret; - assert(length >= sizeof(addrinfo_request_t)); - assert(length == sizeof(addrinfo_request_t) + ai_req->node_len + ai_req->service_len); + assert(length >= sizeof(addrinfo_request_t)); + assert(length == sizeof(addrinfo_request_t) + ai_req->node_len + ai_req->service_len); - memset(&ai, 0, sizeof(ai)); - ai.ai_flags = ai_req->ai_flags; - ai.ai_family = ai_req->ai_family; - ai.ai_socktype = ai_req->ai_socktype; - ai.ai_protocol = ai_req->ai_protocol; + memset(&ai, 0, sizeof(ai)); + ai.ai_flags = ai_req->ai_flags; + ai.ai_family = ai_req->ai_family; + ai.ai_socktype = ai_req->ai_socktype; + ai.ai_protocol = ai_req->ai_protocol; - node = ai_req->node_len ? (const char*) req + sizeof(addrinfo_request_t) : NULL; - service = ai_req->service_len ? (const char*) req + sizeof(addrinfo_request_t) + ai_req->node_len : NULL; + node = ai_req->node_len ? (const char*) req + sizeof(addrinfo_request_t) : NULL; + service = ai_req->service_len ? (const char*) req + sizeof(addrinfo_request_t) + ai_req->node_len : NULL; - /*printf("[getaddrinfo for '%s']\n", node);*/ - ret = getaddrinfo(node, service, - ai_req->hints_is_null ? NULL : &ai, - &result); - /*printf("[return value: %d: '%s']\n", ret, gai_strerror(ret));*/ + /*printf("[getaddrinfo for '%s']\n", node);*/ + ret = getaddrinfo(node, service, + ai_req->hints_is_null ? NULL : &ai, + &result); + /*printf("[return value: %d: '%s']\n", ret, gai_strerror(ret));*/ - /* send_addrinfo_reply() frees result */ - return send_addrinfo_reply(out_fd, req->id, ret, result); - } + /* send_addrinfo_reply() frees result */ + return send_addrinfo_reply(out_fd, req->id, ret, result); + } - case REQUEST_NAMEINFO: { - int ret; - const nameinfo_request_t *ni_req = (const nameinfo_request_t*) req; - char hostbuf[NI_MAXHOST], servbuf[NI_MAXSERV]; - const struct sockaddr *sa; + case REQUEST_NAMEINFO: { + int ret; + const nameinfo_request_t *ni_req = (const nameinfo_request_t*) req; + char hostbuf[NI_MAXHOST], servbuf[NI_MAXSERV]; + const struct sockaddr *sa; - assert(length >= sizeof(nameinfo_request_t)); - assert(length == sizeof(nameinfo_request_t) + ni_req->sockaddr_len); + assert(length >= sizeof(nameinfo_request_t)); + assert(length == sizeof(nameinfo_request_t) + ni_req->sockaddr_len); - sa = (const struct sockaddr*) ((const char*) req + sizeof(nameinfo_request_t)); + sa = (const struct sockaddr*) ((const char*) req + sizeof(nameinfo_request_t)); - ret = getnameinfo(sa, ni_req->sockaddr_len, - ni_req->gethost ? hostbuf : NULL, ni_req->gethost ? sizeof(hostbuf) : 0, - ni_req->getserv ? servbuf : NULL, ni_req->getserv ? sizeof(servbuf) : 0, - ni_req->flags); + ret = getnameinfo(sa, ni_req->sockaddr_len, + ni_req->gethost ? hostbuf : NULL, ni_req->gethost ? sizeof(hostbuf) : 0, + ni_req->getserv ? servbuf : NULL, ni_req->getserv ? sizeof(servbuf) : 0, + ni_req->flags); - return send_nameinfo_reply(out_fd, req->id, ret, - ret == 0 && ni_req->gethost ? hostbuf : NULL, - ret == 0 && ni_req->getserv ? servbuf : NULL); - } + return send_nameinfo_reply(out_fd, req->id, ret, + ret == 0 && ni_req->gethost ? hostbuf : NULL, + ret == 0 && ni_req->getserv ? servbuf : NULL); + } - case REQUEST_RES_QUERY: - case REQUEST_RES_SEARCH: { - int ret; - unsigned char answer[BUFSIZE]; - const res_request_t *res_req = (const res_request_t *)req; - const char *dname; + case REQUEST_RES_QUERY: + case REQUEST_RES_SEARCH: { + int ret; + unsigned char answer[BUFSIZE]; + const res_request_t *res_req = (const res_request_t *)req; + const char *dname; - assert(length >= sizeof(res_request_t)); - assert(length == sizeof(res_request_t) + res_req->dlen + 1); + assert(length >= sizeof(res_request_t)); + assert(length == sizeof(res_request_t) + res_req->dlen + 1); - dname = (const char *) req + sizeof(res_request_t); + dname = (const char *) req + sizeof(res_request_t); - if (req->type == REQUEST_RES_QUERY) { - /*printf("[res query for '%s']\n", dname);*/ - ret = res_query(dname, res_req->class, res_req->type, - answer, BUFSIZE); - /*printf("[return value: %d]\n", ret);*/ - } else { - ret = res_search(dname, res_req->class, res_req->type, - answer, BUFSIZE); - } - return send_res_reply(out_fd, req->id, answer, ret); + if (req->type == REQUEST_RES_QUERY) { + /*printf("[res query for '%s']\n", dname);*/ + ret = res_query(dname, res_req->class, res_req->type, + answer, BUFSIZE); + /*printf("[return value: %d]\n", ret);*/ + } else { + ret = res_search(dname, res_req->class, res_req->type, + answer, BUFSIZE); } + return send_res_reply(out_fd, req->id, answer, ret); + } - case REQUEST_TERMINATE: { - /* Quit */ - return -1; - } + case REQUEST_TERMINATE: { + /* Quit */ + return -1; + } - default: - ; + default: + ; } return 0; @@ -545,7 +546,7 @@ return asyncns; -fail: + fail: if (asyncns) asyncns_free(asyncns); @@ -671,7 +672,7 @@ return (uint8_t*) p + l; -fail: + fail: if (ai) asyncns_freeaddrinfo(ai); @@ -689,76 +690,76 @@ return 0; switch (resp->type) { - case RESPONSE_ADDRINFO: { - const addrinfo_response_t *ai_resp = (addrinfo_response_t*) resp; - void *p; - size_t l; - struct addrinfo *prev = NULL; + case RESPONSE_ADDRINFO: { + const addrinfo_response_t *ai_resp = (addrinfo_response_t*) resp; + void *p; + size_t l; + struct addrinfo *prev = NULL; - assert(length >= sizeof(addrinfo_response_t)); - assert(q->type == REQUEST_ADDRINFO); + assert(length >= sizeof(addrinfo_response_t)); + assert(q->type == REQUEST_ADDRINFO); - q->ret = ai_resp->ret; - l = length - sizeof(addrinfo_response_t); - p = (uint8_t*) resp + sizeof(addrinfo_response_t); + q->ret = ai_resp->ret; + l = length - sizeof(addrinfo_response_t); + p = (uint8_t*) resp + sizeof(addrinfo_response_t); - while (l > 0 && p) { - struct addrinfo *ai = NULL; - p = unserialize_addrinfo(p, &ai, &l); + while (l > 0 && p) { + struct addrinfo *ai = NULL; + p = unserialize_addrinfo(p, &ai, &l); - if (!ai) - break; + if (!ai) + break; - if (prev) - prev->ai_next = ai; - else - q->addrinfo = ai; + if (prev) + prev->ai_next = ai; + else + q->addrinfo = ai; - prev = ai; - } - - complete_query(asyncns, q); - break; + prev = ai; } - case RESPONSE_NAMEINFO: { - const nameinfo_response_t *ni_resp = (nameinfo_response_t*) resp; + complete_query(asyncns, q); + break; + } - assert(length >= sizeof(nameinfo_response_t)); - assert(q->type == REQUEST_NAMEINFO); + case RESPONSE_NAMEINFO: { + const nameinfo_response_t *ni_resp = (nameinfo_response_t*) resp; - q->ret = ni_resp->ret; + assert(length >= sizeof(nameinfo_response_t)); + assert(q->type == REQUEST_NAMEINFO); + + q->ret = ni_resp->ret; - if (ni_resp->hostlen) - q->host = g_strndup((const char*) ni_resp + sizeof(nameinfo_response_t), (gsize)ni_resp->hostlen-1); + if (ni_resp->hostlen) + q->host = g_strndup((const char*) ni_resp + sizeof(nameinfo_response_t), (gsize)ni_resp->hostlen-1); - if (ni_resp->servlen) - q->serv = g_strndup((const char*) ni_resp + sizeof(nameinfo_response_t) + ni_resp->hostlen, (gsize)ni_resp->servlen-1); + if (ni_resp->servlen) + q->serv = g_strndup((const char*) ni_resp + sizeof(nameinfo_response_t) + ni_resp->hostlen, (gsize)ni_resp->servlen-1); - complete_query(asyncns, q); - break; + complete_query(asyncns, q); + break; + } + + case RESPONSE_RES: { + const res_response_t *res_resp = (res_response_t *)resp; + + assert(length >= sizeof(res_response_t)); + assert(q->type == REQUEST_RES_QUERY || q->type == REQUEST_RES_SEARCH); + + q->ret = res_resp->ret; + + if (res_resp->ret >= 0) { + q->serv = malloc(res_resp->ret); + memcpy(q->serv, (char *)resp + sizeof(res_response_t), res_resp->ret); } - case RESPONSE_RES: { - const res_response_t *res_resp = (res_response_t *)resp; - - assert(length >= sizeof(res_response_t)); - assert(q->type == REQUEST_RES_QUERY || q->type == REQUEST_RES_SEARCH); - - q->ret = res_resp->ret; - - if (res_resp->ret >= 0) { - q->serv = malloc(res_resp->ret); - memcpy(q->serv, (char *)resp + sizeof(res_response_t), res_resp->ret); - } - - complete_query(asyncns, q); - break; - } + complete_query(asyncns, q); + break; + } - default: - ; + default: + ; } return 0; @@ -871,7 +872,7 @@ return q; -fail: + fail: if (q) asyncns_cancel(asyncns, q); @@ -929,7 +930,7 @@ return q; -fail: + fail: if (q) asyncns_cancel(asyncns, q); @@ -1000,7 +1001,7 @@ return q; -fail: + fail: if (q) asyncns_cancel(asyncns, q); diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/asyncns.h --- a/loudmouth/asyncns.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/asyncns.h Wed Oct 08 13:11:02 2008 +0200 @@ -1,25 +1,26 @@ +/* -*- mode: c; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ #ifndef fooasyncnshfoo #define fooasyncnshfoo /* $Id: asyncns.h 23 2007-02-16 12:49:17Z lennart $ */ /*** - This file is part of libasyncns. + This file is part of libasyncns. - libasyncns is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. + libasyncns is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. - libasyncns is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + libasyncns is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. - You should have received a copy of the GNU Lesser General Public - License along with libasyncns; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - USA. + You should have received a copy of the GNU Lesser General Public + License along with libasyncns; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA. ***/ #include @@ -49,36 +50,36 @@ #endif /** An opaque libasyncns session structure */ -typedef struct asyncns asyncns_t; + typedef struct asyncns asyncns_t; /** An opaque libasyncns query structure */ -typedef struct asyncns_query asyncns_query_t; + typedef struct asyncns_query asyncns_query_t; /** Allocate a new libasyncns session with n_proc worker processes */ -asyncns_t* asyncns_new(unsigned n_proc); + asyncns_t* asyncns_new(unsigned n_proc); /** Free a libasyncns session. This destroys all attached * asyncns_query_t objects automatically */ -void asyncns_free(asyncns_t *asyncns); + void asyncns_free(asyncns_t *asyncns); /** Return the UNIX file descriptor to select() for readability * on. Use this function to integrate libasyncns with your custom main * loop. */ -int asyncns_fd(asyncns_t *asyncns); + int asyncns_fd(asyncns_t *asyncns); /** Process pending responses. After this function is called you can * get the next completed query object(s) using asyncns_getnext(). If * block is non-zero wait until at least one response has been * processed. If block is zero, process all pending responses and * return. */ -int asyncns_wait(asyncns_t *asyncns, int block); + int asyncns_wait(asyncns_t *asyncns, int block); /** Issue a name to address query on the specified session. The * arguments are compatible with the ones of libc's * getaddrinfo(3). The function returns a new query object. When the * query is completed you may retrieve the results using * asyncns_getaddrinfo_done().*/ -asyncns_query_t* asyncns_getaddrinfo(asyncns_t *asyncns, const char *node, const char *service, const struct addrinfo *hints); + asyncns_query_t* asyncns_getaddrinfo(asyncns_t *asyncns, const char *node, const char *service, const struct addrinfo *hints); /** Retrieve the results of a preceding asyncns_getaddrinfo() * call. Returns a addrinfo structure and a return value compatible @@ -87,71 +88,71 @@ * returned addrinfo structure with asyncns_freeaddrinfo() and not * libc's freeaddrinfo(3)! If the query is not completed yet EAI_AGAIN * is returned.*/ -int asyncns_getaddrinfo_done(asyncns_t *asyncns, asyncns_query_t* q, struct addrinfo **ret_res); + int asyncns_getaddrinfo_done(asyncns_t *asyncns, asyncns_query_t* q, struct addrinfo **ret_res); /** Issue an address to name query on the specified session. The -arguments are compatible with the ones of libc's getnameinfo(3). The -function returns a new query object. When the query is completed you -may retrieve the results using asyncns_getnameinfo_done(). Set gethost -(resp. getserv) to non-zero if you want to query the hostname -(resp. the service name). */ -asyncns_query_t* asyncns_getnameinfo(asyncns_t *asyncns, const struct sockaddr *sa, socklen_t salen, int flags, int gethost, int getserv); + arguments are compatible with the ones of libc's getnameinfo(3). The + function returns a new query object. When the query is completed you + may retrieve the results using asyncns_getnameinfo_done(). Set gethost + (resp. getserv) to non-zero if you want to query the hostname + (resp. the service name). */ + asyncns_query_t* asyncns_getnameinfo(asyncns_t *asyncns, const struct sockaddr *sa, socklen_t salen, int flags, int gethost, int getserv); /** Retrieve the results of a preceding asyncns_getnameinfo)( * call. Returns the hostname and the service name in ret_host and * ret_serv. The query object q is destroyed by this call and may not * be used any further. If the query is not completed yet EAI_AGAIN is * returned. */ -int asyncns_getnameinfo_done(asyncns_t *asyncns, asyncns_query_t* q, char *ret_host, size_t hostlen, char *ret_serv, size_t servlen); + int asyncns_getnameinfo_done(asyncns_t *asyncns, asyncns_query_t* q, char *ret_host, size_t hostlen, char *ret_serv, size_t servlen); /** Issue an resolver query on the specified session. The arguments are * compatible with the ones of libc's res_query(3). The function returns a new * query object. When the query is completed you may retrieve the results using * asyncns_res_done(). */ -asyncns_query_t* asyncns_res_query(asyncns_t *asyncns, const char *dname, int class, int type); + asyncns_query_t* asyncns_res_query(asyncns_t *asyncns, const char *dname, int class, int type); /** Issue an resolver query on the specified session. The arguments are * compatible with the ones of libc's res_search(3). The function returns a new * query object. When the query is completed you may retrieve the results using * asyncns_res_done(). */ -asyncns_query_t* asyncns_res_search(asyncns_t *asyncns, const char *dname, int class, int type); + asyncns_query_t* asyncns_res_search(asyncns_t *asyncns, const char *dname, int class, int type); /** Retrieve the results of a preceding asyncns_res_query)( or * asyncns_res_search call. The query object q is destroyed by this call and * may not be used any further. Returns a pointer to the answer of the * res_query call. If the query is not completed yet -EAGAIN is returned, on * failure -errno is returned otherwise the length of answer is returned. */ -int asyncns_res_done(asyncns_t *asyncns, asyncns_query_t* q, unsigned char -**answer); + int asyncns_res_done(asyncns_t *asyncns, asyncns_query_t* q, unsigned char + **answer); /** Return the next completed query object. If no query has been * completed yet, return NULL. Please note that you need to run * asyncns_wait() before this function will return sensible data. */ -asyncns_query_t* asyncns_getnext(asyncns_t *asyncns); + asyncns_query_t* asyncns_getnext(asyncns_t *asyncns); /** Return the number of query objects (completed or not) attached to * this session */ -int asyncns_getnqueries(asyncns_t *asyncns); + int asyncns_getnqueries(asyncns_t *asyncns); /** Cancel a currently running query. q is is destroyed by this call * and may not be used any futher. */ -void asyncns_cancel(asyncns_t *asyncns, asyncns_query_t* q); + void asyncns_cancel(asyncns_t *asyncns, asyncns_query_t* q); /** Free the addrinfo structure as returned by -asyncns_getaddrinfo_done(). Make sure to use this functions instead of -the libc's freeaddrinfo()! */ -void asyncns_freeaddrinfo(struct addrinfo *ai); + asyncns_getaddrinfo_done(). Make sure to use this functions instead of + the libc's freeaddrinfo()! */ + void asyncns_freeaddrinfo(struct addrinfo *ai); /** Returns non-zero when the query operation specified by q has been completed */ -int asyncns_isdone(asyncns_t *asyncns, asyncns_query_t*q); + int asyncns_isdone(asyncns_t *asyncns, asyncns_query_t*q); /** Assign some opaque userdata with a query object */ -void asyncns_setuserdata(asyncns_t *asyncns, asyncns_query_t *q, void *userdata); + void asyncns_setuserdata(asyncns_t *asyncns, asyncns_query_t *q, void *userdata); /** Return userdata assigned to a query object. Use * asyncns_setuserdata() to set this data. If no data has been set * prior to this call it returns NULL. */ -void* asyncns_getuserdata(asyncns_t *asyncns, asyncns_query_t *q); + void* asyncns_getuserdata(asyncns_t *asyncns, asyncns_query_t *q); #ifdef __cplusplus } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-asyncns-resolver.c --- a/loudmouth/lm-asyncns-resolver.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-asyncns-resolver.c Wed Oct 08 13:11:02 2008 +0200 @@ -42,10 +42,10 @@ typedef struct LmAsyncnsResolverPriv LmAsyncnsResolverPriv; struct LmAsyncnsResolverPriv { - GSource *watch_resolv; - asyncns_query_t *resolv_query; - asyncns_t *asyncns_ctx; - GIOChannel *resolv_channel; + GSource *watch_resolv; + asyncns_query_t *resolv_query; + asyncns_t *asyncns_ctx; + GIOChannel *resolv_channel; }; static void asyncns_resolver_finalize (GObject *object); @@ -57,84 +57,84 @@ static void lm_asyncns_resolver_class_init (LmAsyncnsResolverClass *class) { - GObjectClass *object_class = G_OBJECT_CLASS (class); - LmResolverClass *resolver_class = LM_RESOLVER_CLASS (class); + GObjectClass *object_class = G_OBJECT_CLASS (class); + LmResolverClass *resolver_class = LM_RESOLVER_CLASS (class); - object_class->finalize = asyncns_resolver_finalize; + object_class->finalize = asyncns_resolver_finalize; - resolver_class->lookup = asyncns_resolver_lookup; - resolver_class->cancel = asyncns_resolver_cancel; + resolver_class->lookup = asyncns_resolver_lookup; + resolver_class->cancel = asyncns_resolver_cancel; - g_type_class_add_private (object_class, sizeof (LmAsyncnsResolverPriv)); + g_type_class_add_private (object_class, sizeof (LmAsyncnsResolverPriv)); } static void lm_asyncns_resolver_init (LmAsyncnsResolver *asyncns_resolver) { - LmAsyncnsResolverPriv *priv; + LmAsyncnsResolverPriv *priv; - priv = GET_PRIV (asyncns_resolver); + priv = GET_PRIV (asyncns_resolver); } static void asyncns_resolver_finalize (GObject *object) { - LmAsyncnsResolverPriv *priv; + LmAsyncnsResolverPriv *priv; - priv = GET_PRIV (object); + priv = GET_PRIV (object); - (G_OBJECT_CLASS (lm_asyncns_resolver_parent_class)->finalize) (object); + (G_OBJECT_CLASS (lm_asyncns_resolver_parent_class)->finalize) (object); } static void asyncns_resolver_cleanup (LmResolver *resolver) { - LmAsyncnsResolverPriv *priv = GET_PRIV (resolver); + LmAsyncnsResolverPriv *priv = GET_PRIV (resolver); - if (priv->resolv_channel != NULL) { - g_io_channel_unref (priv->resolv_channel); - priv->resolv_channel = NULL; - } + if (priv->resolv_channel != NULL) { + g_io_channel_unref (priv->resolv_channel); + priv->resolv_channel = NULL; + } - if (priv->watch_resolv) { - g_source_destroy (priv->watch_resolv); - priv->watch_resolv = NULL; - } + if (priv->watch_resolv) { + g_source_destroy (priv->watch_resolv); + priv->watch_resolv = NULL; + } - if (priv->asyncns_ctx) { - asyncns_free (priv->asyncns_ctx); - priv->asyncns_ctx = NULL; - } + if (priv->asyncns_ctx) { + asyncns_free (priv->asyncns_ctx); + priv->asyncns_ctx = NULL; + } - priv->resolv_query = NULL; + priv->resolv_query = NULL; } static void asyncns_resolver_done (LmResolver *resolver) { - LmAsyncnsResolverPriv *priv = GET_PRIV (resolver); - struct addrinfo *ans; - int err; + LmAsyncnsResolverPriv *priv = GET_PRIV (resolver); + struct addrinfo *ans; + int err; - err = asyncns_getaddrinfo_done (priv->asyncns_ctx, priv->resolv_query, &ans); - priv->resolv_query = NULL; - /* Signal that we are done */ + err = asyncns_getaddrinfo_done (priv->asyncns_ctx, priv->resolv_query, &ans); + priv->resolv_query = NULL; + /* Signal that we are done */ - g_object_ref (resolver); + g_object_ref (resolver); - if (err) { - _lm_resolver_set_result (resolver, - LM_RESOLVER_RESULT_FAILED, - NULL); - } else { - _lm_resolver_set_result (resolver, - LM_RESOLVER_RESULT_OK, - ans); - } + if (err) { + _lm_resolver_set_result (resolver, + LM_RESOLVER_RESULT_FAILED, + NULL); + } else { + _lm_resolver_set_result (resolver, + LM_RESOLVER_RESULT_OK, + ans); + } - asyncns_resolver_cleanup (resolver); + asyncns_resolver_cleanup (resolver); - g_object_unref (resolver); + g_object_unref (resolver); } typedef gboolean (* LmAsyncnsResolverCallback) (LmResolver *resolver); @@ -144,213 +144,213 @@ GIOCondition condition, LmResolver *resolver) { - LmAsyncnsResolverPriv *priv = GET_PRIV (resolver); - LmAsyncnsResolverCallback func; + LmAsyncnsResolverPriv *priv = GET_PRIV (resolver); + LmAsyncnsResolverCallback func; - asyncns_wait (priv->asyncns_ctx, FALSE); + asyncns_wait (priv->asyncns_ctx, FALSE); - if (!asyncns_isdone (priv->asyncns_ctx, priv->resolv_query)) { - return TRUE; - } + if (!asyncns_isdone (priv->asyncns_ctx, priv->resolv_query)) { + return TRUE; + } - func = (LmAsyncnsResolverCallback) asyncns_getuserdata (priv->asyncns_ctx, - priv->resolv_query); - return func (resolver); + func = (LmAsyncnsResolverCallback) asyncns_getuserdata (priv->asyncns_ctx, + priv->resolv_query); + return func (resolver); } static gboolean asyncns_resolver_prep (LmResolver *resolver, GError **error) { - LmAsyncnsResolverPriv *priv = GET_PRIV (resolver); - GMainContext *context; + LmAsyncnsResolverPriv *priv = GET_PRIV (resolver); + GMainContext *context; - if (priv->asyncns_ctx) { - return TRUE; - } + if (priv->asyncns_ctx) { + return TRUE; + } - priv->asyncns_ctx = asyncns_new (1); - if (priv->asyncns_ctx == NULL) { - g_set_error (error, - LM_ERROR, - LM_ERROR_CONNECTION_FAILED, - "can't initialise libasyncns"); - return FALSE; - } + priv->asyncns_ctx = asyncns_new (1); + if (priv->asyncns_ctx == NULL) { + g_set_error (error, + LM_ERROR, + LM_ERROR_CONNECTION_FAILED, + "can't initialise libasyncns"); + return FALSE; + } - priv->resolv_channel = - g_io_channel_unix_new (asyncns_fd (priv->asyncns_ctx)); + priv->resolv_channel = + g_io_channel_unix_new (asyncns_fd (priv->asyncns_ctx)); - g_object_get (resolver, "context", &context, NULL); + g_object_get (resolver, "context", &context, NULL); - g_print ("Setting up io watch\n"); + g_print ("Setting up io watch\n"); - priv->watch_resolv = - lm_misc_add_io_watch (context, - priv->resolv_channel, - G_IO_IN, - (GIOFunc) asyncns_resolver_io_cb, - resolver); + priv->watch_resolv = + lm_misc_add_io_watch (context, + priv->resolv_channel, + G_IO_IN, + (GIOFunc) asyncns_resolver_io_cb, + resolver); - return TRUE; + return TRUE; } static void asyncns_resolver_lookup_host (LmResolver *resolver) { - LmAsyncnsResolverPriv *priv = GET_PRIV (resolver); - gchar *host; - struct addrinfo req; + LmAsyncnsResolverPriv *priv = GET_PRIV (resolver); + gchar *host; + struct addrinfo req; - g_object_get (resolver, "host", &host, NULL); + g_object_get (resolver, "host", &host, NULL); - memset (&req, 0, sizeof(req)); - req.ai_family = AF_UNSPEC; - req.ai_socktype = SOCK_STREAM; - req.ai_protocol = IPPROTO_TCP; + memset (&req, 0, sizeof(req)); + req.ai_family = AF_UNSPEC; + req.ai_socktype = SOCK_STREAM; + req.ai_protocol = IPPROTO_TCP; - if (!asyncns_resolver_prep (resolver, NULL)) { - g_warning ("Signal error\n"); - return; - } + if (!asyncns_resolver_prep (resolver, NULL)) { + g_warning ("Signal error\n"); + return; + } - priv->resolv_query = - asyncns_getaddrinfo (priv->asyncns_ctx, - host, - NULL, - &req); + priv->resolv_query = + asyncns_getaddrinfo (priv->asyncns_ctx, + host, + NULL, + &req); - asyncns_setuserdata (priv->asyncns_ctx, - priv->resolv_query, - (gpointer) asyncns_resolver_done); + asyncns_setuserdata (priv->asyncns_ctx, + priv->resolv_query, + (gpointer) asyncns_resolver_done); } static void asyncns_resolver_srv_done (LmResolver *resolver) { - LmAsyncnsResolverPriv *priv = GET_PRIV (resolver); - unsigned char *srv_ans; - int srv_len; - gboolean result = FALSE; + LmAsyncnsResolverPriv *priv = GET_PRIV (resolver); + unsigned char *srv_ans; + int srv_len; + gboolean result = FALSE; - g_print ("srv_done callback\n"); + g_print ("srv_done callback\n"); - srv_len = asyncns_res_done (priv->asyncns_ctx, - priv->resolv_query, &srv_ans); + srv_len = asyncns_res_done (priv->asyncns_ctx, + priv->resolv_query, &srv_ans); - priv->resolv_query = NULL; + priv->resolv_query = NULL; - if (srv_len <= 0) { - /* FIXME: Report error */ - g_warning ("Failed to read srv request results"); - } else { - gchar *new_server; - guint new_port; + if (srv_len <= 0) { + /* FIXME: Report error */ + g_warning ("Failed to read srv request results"); + } else { + gchar *new_server; + guint new_port; - g_print ("trying to parse srv response\n"); + g_print ("trying to parse srv response\n"); - result = _lm_resolver_parse_srv_response (srv_ans, srv_len, - &new_server, - &new_port); - if (result == TRUE) { - g_print ("worked, new host/post is %s/%d\n", - new_server, new_port); + result = _lm_resolver_parse_srv_response (srv_ans, srv_len, + &new_server, + &new_port); + if (result == TRUE) { + g_print ("worked, new host/post is %s/%d\n", + new_server, new_port); - g_object_set (resolver, - "host", new_server, - "port", new_port, - NULL); - } - - g_free (new_server); - /* TODO: Check whether srv_ans needs freeing */ + g_object_set (resolver, + "host", new_server, + "port", new_port, + NULL); } - asyncns_resolver_cleanup (resolver); + g_free (new_server); + /* TODO: Check whether srv_ans needs freeing */ + } - if (result == TRUE) { - asyncns_resolver_lookup_host (resolver); - } + asyncns_resolver_cleanup (resolver); + + if (result == TRUE) { + asyncns_resolver_lookup_host (resolver); + } } static void asyncns_resolver_lookup_service (LmResolver *resolver) { - LmAsyncnsResolverPriv *priv = GET_PRIV (resolver); - gchar *domain; - gchar *service; - gchar *protocol; - gchar *srv; + LmAsyncnsResolverPriv *priv = GET_PRIV (resolver); + gchar *domain; + gchar *service; + gchar *protocol; + gchar *srv; - g_object_get (resolver, - "domain", &domain, - "service", &service, - "protocol", &protocol, - NULL); + g_object_get (resolver, + "domain", &domain, + "service", &service, + "protocol", &protocol, + NULL); - srv = _lm_resolver_create_srv_string (domain, service, protocol); + srv = _lm_resolver_create_srv_string (domain, service, protocol); - g_print ("Looking up service: %s %s %s\n[%s]", domain, service, protocol, srv); + g_print ("Looking up service: %s %s %s\n[%s]", domain, service, protocol, srv); - if (!asyncns_resolver_prep (resolver, /* Use GError? */ NULL)) { - g_warning ("Failed to initiate the asyncns library"); - /* FIXME: Signal error */ - return; - } + if (!asyncns_resolver_prep (resolver, /* Use GError? */ NULL)) { + g_warning ("Failed to initiate the asyncns library"); + /* FIXME: Signal error */ + return; + } - priv->resolv_query = - asyncns_res_query (priv->asyncns_ctx, srv, C_IN, T_SRV); + priv->resolv_query = + asyncns_res_query (priv->asyncns_ctx, srv, C_IN, T_SRV); - asyncns_setuserdata (priv->asyncns_ctx, - priv->resolv_query, - (gpointer) asyncns_resolver_srv_done); + asyncns_setuserdata (priv->asyncns_ctx, + priv->resolv_query, + (gpointer) asyncns_resolver_srv_done); - g_free (srv); - g_free (domain); - g_free (service); - g_free (protocol); + g_free (srv); + g_free (domain); + g_free (service); + g_free (protocol); } static void asyncns_resolver_lookup (LmResolver *resolver) { - gint type; + gint type; - /* Start the DNS querying */ + /* Start the DNS querying */ - /* Decide if we are going to lookup a srv or host */ - g_object_get (resolver, "type", &type, NULL); + /* Decide if we are going to lookup a srv or host */ + g_object_get (resolver, "type", &type, NULL); - switch (type) { - case LM_RESOLVER_HOST: - asyncns_resolver_lookup_host (resolver); - break; - case LM_RESOLVER_SRV: - asyncns_resolver_lookup_service (resolver); - break; - }; + switch (type) { + case LM_RESOLVER_HOST: + asyncns_resolver_lookup_host (resolver); + break; + case LM_RESOLVER_SRV: + asyncns_resolver_lookup_service (resolver); + break; + }; - /* End of DNS querying */ + /* End of DNS querying */ } static void asyncns_resolver_cancel (LmResolver *resolver) { - LmAsyncnsResolverPriv *priv; + LmAsyncnsResolverPriv *priv; - g_return_if_fail (LM_IS_ASYNCNS_RESOLVER (resolver)); + g_return_if_fail (LM_IS_ASYNCNS_RESOLVER (resolver)); - priv = GET_PRIV (resolver); + priv = GET_PRIV (resolver); - if (priv->asyncns_ctx) { - if (priv->resolv_query) { - asyncns_cancel (priv->asyncns_ctx, priv->resolv_query); - priv->resolv_query = NULL; - } + if (priv->asyncns_ctx) { + if (priv->resolv_query) { + asyncns_cancel (priv->asyncns_ctx, priv->resolv_query); + priv->resolv_query = NULL; + } - _lm_resolver_set_result (resolver, - LM_RESOLVER_RESULT_CANCELLED, - NULL); - } + _lm_resolver_set_result (resolver, + LM_RESOLVER_RESULT_CANCELLED, + NULL); + } } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-asyncns-resolver.h --- a/loudmouth/lm-asyncns-resolver.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-asyncns-resolver.h Wed Oct 08 13:11:02 2008 +0200 @@ -38,11 +38,11 @@ typedef struct LmAsyncnsResolverClass LmAsyncnsResolverClass; struct LmAsyncnsResolver { - LmResolver parent; + LmResolver parent; }; struct LmAsyncnsResolverClass { - LmResolverClass parent_class; + LmResolverClass parent_class; }; GType lm_asyncns_resolver_get_type (void); diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-blocking-resolver.c --- a/loudmouth/lm-blocking-resolver.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-blocking-resolver.c Wed Oct 08 13:11:02 2008 +0200 @@ -43,7 +43,7 @@ typedef struct LmBlockingResolverPriv LmBlockingResolverPriv; struct LmBlockingResolverPriv { - GSource *idle_source; + GSource *idle_source; }; static void blocking_resolver_finalize (GObject *object); @@ -55,187 +55,187 @@ static void lm_blocking_resolver_class_init (LmBlockingResolverClass *class) { - GObjectClass *object_class = G_OBJECT_CLASS (class); - LmResolverClass *resolver_class = LM_RESOLVER_CLASS (class); + GObjectClass *object_class = G_OBJECT_CLASS (class); + LmResolverClass *resolver_class = LM_RESOLVER_CLASS (class); - object_class->finalize = blocking_resolver_finalize; + object_class->finalize = blocking_resolver_finalize; - resolver_class->lookup = blocking_resolver_lookup; - resolver_class->cancel = blocking_resolver_cancel; - - g_type_class_add_private (object_class, - sizeof (LmBlockingResolverPriv)); + resolver_class->lookup = blocking_resolver_lookup; + resolver_class->cancel = blocking_resolver_cancel; + + g_type_class_add_private (object_class, + sizeof (LmBlockingResolverPriv)); } static void lm_blocking_resolver_init (LmBlockingResolver *blocking_resolver) { - LmBlockingResolverPriv *priv; + LmBlockingResolverPriv *priv; - priv = GET_PRIV (blocking_resolver); + priv = GET_PRIV (blocking_resolver); } static void blocking_resolver_finalize (GObject *object) { - LmBlockingResolverPriv *priv; + LmBlockingResolverPriv *priv; - priv = GET_PRIV (object); + priv = GET_PRIV (object); - /* Ensure we don't have an idle around */ - blocking_resolver_cancel (LM_RESOLVER (object)); + /* Ensure we don't have an idle around */ + blocking_resolver_cancel (LM_RESOLVER (object)); - (G_OBJECT_CLASS (lm_blocking_resolver_parent_class)->finalize) (object); + (G_OBJECT_CLASS (lm_blocking_resolver_parent_class)->finalize) (object); } static void blocking_resolver_lookup_host (LmBlockingResolver *resolver) { - gchar *host; - struct addrinfo req; - struct addrinfo *ans; - int err; + gchar *host; + struct addrinfo req; + struct addrinfo *ans; + int err; - g_object_get (resolver, "host", &host, NULL); + g_object_get (resolver, "host", &host, NULL); - /* Lookup */ + /* Lookup */ - memset (&req, 0, sizeof(req)); - req.ai_family = AF_UNSPEC; - req.ai_socktype = SOCK_STREAM; - req.ai_protocol = IPPROTO_TCP; + memset (&req, 0, sizeof(req)); + req.ai_family = AF_UNSPEC; + req.ai_socktype = SOCK_STREAM; + req.ai_protocol = IPPROTO_TCP; - err = getaddrinfo (host, NULL, &req, &ans); + err = getaddrinfo (host, NULL, &req, &ans); - if (err != 0) { - /* FIXME: Report error */ - g_print ("ERROR: %d in %s\n", err, G_STRFUNC); - return; - } + if (err != 0) { + /* FIXME: Report error */ + g_print ("ERROR: %d in %s\n", err, G_STRFUNC); + return; + } - if (ans == NULL) { - /* Couldn't find any results */ - /* FIXME: Report no results */ - g_print ("No results in %s\n", G_STRFUNC); - } + if (ans == NULL) { + /* Couldn't find any results */ + /* FIXME: Report no results */ + g_print ("No results in %s\n", G_STRFUNC); + } - /* FIXME: How to set and iterate the results */ - /*priv->results = ans; - priv->cur_result = ans; */ + /* FIXME: How to set and iterate the results */ + /*priv->results = ans; + priv->cur_result = ans; */ - g_print ("Found result for %s\n", host); + g_print ("Found result for %s\n", host); - g_object_ref (resolver); + g_object_ref (resolver); - _lm_resolver_set_result (LM_RESOLVER (resolver), LM_RESOLVER_RESULT_OK, - ans); + _lm_resolver_set_result (LM_RESOLVER (resolver), LM_RESOLVER_RESULT_OK, + ans); - g_object_unref (resolver); + g_object_unref (resolver); - g_free (host); + g_free (host); } static void blocking_resolver_lookup_service (LmBlockingResolver *resolver) { - gchar *domain; - gchar *service; - gchar *protocol; - gchar *srv; - gchar *new_server = NULL; - guint new_port = 0; - gboolean result; - unsigned char srv_ans[SRV_LEN]; - int len; + gchar *domain; + gchar *service; + gchar *protocol; + gchar *srv; + gchar *new_server = NULL; + guint new_port = 0; + gboolean result; + unsigned char srv_ans[SRV_LEN]; + int len; - g_object_get (resolver, - "domain", &domain, - "service", &service, - "protocol", &protocol, - NULL); + g_object_get (resolver, + "domain", &domain, + "service", &service, + "protocol", &protocol, + NULL); - srv = _lm_resolver_create_srv_string (domain, service, protocol); + srv = _lm_resolver_create_srv_string (domain, service, protocol); - res_init (); + res_init (); - len = res_query (srv, C_IN, T_SRV, srv_ans, SRV_LEN); + len = res_query (srv, C_IN, T_SRV, srv_ans, SRV_LEN); - result = _lm_resolver_parse_srv_response (srv_ans, len, - &new_server, &new_port); - if (result == FALSE) { - g_print ("Error while parsing srv response in %s\n", - G_STRFUNC); - /* FIXME: Report error */ - } + result = _lm_resolver_parse_srv_response (srv_ans, len, + &new_server, &new_port); + if (result == FALSE) { + g_print ("Error while parsing srv response in %s\n", + G_STRFUNC); + /* FIXME: Report error */ + } - g_object_set (resolver, - "host", new_server, - "port", new_port, - NULL); + g_object_set (resolver, + "host", new_server, + "port", new_port, + NULL); - /* Lookup the new server and the new port */ - blocking_resolver_lookup_host (resolver); + /* Lookup the new server and the new port */ + blocking_resolver_lookup_host (resolver); - g_free (new_server); - g_free (srv); - g_free (domain); - g_free (service); - g_free (protocol); + g_free (new_server); + g_free (srv); + g_free (domain); + g_free (service); + g_free (protocol); } static gboolean blocking_resolver_idle_lookup (LmBlockingResolver *resolver) { - LmBlockingResolverPriv *priv = GET_PRIV (resolver); - gint type; + LmBlockingResolverPriv *priv = GET_PRIV (resolver); + gint type; - /* Start the DNS querying */ + /* Start the DNS querying */ - /* Decide if we are going to lookup a srv or host */ - g_object_get (resolver, "type", &type, NULL); + /* Decide if we are going to lookup a srv or host */ + g_object_get (resolver, "type", &type, NULL); - switch (type) { - case LM_RESOLVER_HOST: - blocking_resolver_lookup_host (resolver); - break; - case LM_RESOLVER_SRV: - blocking_resolver_lookup_service (resolver); - break; - }; + switch (type) { + case LM_RESOLVER_HOST: + blocking_resolver_lookup_host (resolver); + break; + case LM_RESOLVER_SRV: + blocking_resolver_lookup_service (resolver); + break; + }; - /* End of DNS querying */ - priv->idle_source = NULL; - return FALSE; + /* End of DNS querying */ + priv->idle_source = NULL; + return FALSE; } static void blocking_resolver_lookup (LmResolver *resolver) { - LmBlockingResolverPriv *priv; - GMainContext *context; + LmBlockingResolverPriv *priv; + GMainContext *context; - g_return_if_fail (LM_IS_BLOCKING_RESOLVER (resolver)); + g_return_if_fail (LM_IS_BLOCKING_RESOLVER (resolver)); - priv = GET_PRIV (resolver); + priv = GET_PRIV (resolver); - g_object_get (resolver, "context", &context, NULL); + g_object_get (resolver, "context", &context, NULL); - priv->idle_source = lm_misc_add_idle (context, - (GSourceFunc) blocking_resolver_idle_lookup, - resolver); + priv->idle_source = lm_misc_add_idle (context, + (GSourceFunc) blocking_resolver_idle_lookup, + resolver); } static void blocking_resolver_cancel (LmResolver *resolver) { - LmBlockingResolverPriv *priv; + LmBlockingResolverPriv *priv; - g_return_if_fail (LM_IS_BLOCKING_RESOLVER (resolver)); + g_return_if_fail (LM_IS_BLOCKING_RESOLVER (resolver)); - priv = GET_PRIV (resolver); + priv = GET_PRIV (resolver); - if (priv->idle_source) { - g_source_destroy (priv->idle_source); - priv->idle_source = NULL; - } + if (priv->idle_source) { + g_source_destroy (priv->idle_source); + priv->idle_source = NULL; + } } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-blocking-resolver.h --- a/loudmouth/lm-blocking-resolver.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-blocking-resolver.h Wed Oct 08 13:11:02 2008 +0200 @@ -38,11 +38,11 @@ typedef struct LmBlockingResolverClass LmBlockingResolverClass; struct LmBlockingResolver { - LmResolver parent; + LmResolver parent; }; struct LmBlockingResolverClass { - LmResolverClass parent_class; + LmResolverClass parent_class; }; GType lm_blocking_resolver_get_type (void); diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-connection.c --- a/loudmouth/lm-connection.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-connection.c Wed Oct 08 13:11:02 2008 +0200 @@ -33,7 +33,7 @@ * LmConnection *connection; * GError *error = NULL; * gint i; - * LmMessage *m; + * LmMessage *m; * * connection = lm_connection_new ("myserver"); * @@ -42,24 +42,24 @@ * } * * if (!lm_connection_authenticate_and_block (connection, - * "username", "password", - * "resource", - * &error)) { - * g_error ("Failed to authenticate: %s\n", error->message); - * } - * - * m = lm_message_new ("recipient", LM_MESSAGE_TYPE_MESSAGE); - * lm_message_node_add_child (m->node, "body", "message"); - * - * if (!lm_connection_send (connection, m, &error)) { - * g_error ("Send failed: %s\n", error->message); - * } + * "username", "password", + * "resource", + * &error)) { + * g_error ("Failed to authenticate: %s\n", error->message); + * } + * + * m = lm_message_new ("recipient", LM_MESSAGE_TYPE_MESSAGE); + * lm_message_node_add_child (m->node, "body", "message"); + * + * if (!lm_connection_send (connection, m, &error)) { + * g_error ("Send failed: %s\n", error->message); + * } * - * lm_message_unref (m); + * lm_message_unref (m); * - * lm_connection_close (connection, NULL); - * lm_connection_unref (connection); - * + * lm_connection_close (connection, NULL); + * lm_connection_unref (connection); + * * return 0; * } * @@ -101,63 +101,63 @@ #define SRV_LEN 8192 typedef struct { - LmHandlerPriority priority; - LmMessageHandler *handler; + LmHandlerPriority priority; + LmMessageHandler *handler; } HandlerData; struct _LmConnection { - /* Parameters */ - GMainContext *context; - gchar *server; - gchar *jid; - gchar *effective_jid; - guint port; - gboolean use_srv; + /* Parameters */ + GMainContext *context; + gchar *server; + gchar *jid; + gchar *effective_jid; + guint port; + gboolean use_srv; - LmOldSocket *socket; - LmSSL *ssl; - LmProxy *proxy; - LmParser *parser; + LmOldSocket *socket; + LmSSL *ssl; + LmProxy *proxy; + LmParser *parser; - gchar *stream_id; + gchar *stream_id; - GHashTable *id_handlers; - GSList *handlers[LM_MESSAGE_TYPE_UNKNOWN]; + GHashTable *id_handlers; + GSList *handlers[LM_MESSAGE_TYPE_UNKNOWN]; - /* XMPP1.0 stuff (SASL, resource binding, StartTLS) */ - gboolean use_sasl; - LmSASL *sasl; - gchar *resource; - LmMessageHandler *features_cb; - LmMessageHandler *starttls_cb; - gboolean tls_started; + /* XMPP1.0 stuff (SASL, resource binding, StartTLS) */ + gboolean use_sasl; + LmSASL *sasl; + gchar *resource; + LmMessageHandler *features_cb; + LmMessageHandler *starttls_cb; + gboolean tls_started; - /* Communication */ - guint open_id; - LmCallback *open_cb; + /* Communication */ + guint open_id; + LmCallback *open_cb; - gboolean async_connect_waiting; - gboolean blocking; + gboolean async_connect_waiting; + gboolean blocking; - gboolean cancel_open; - LmCallback *auth_cb; + gboolean cancel_open; + LmCallback *auth_cb; - LmCallback *disconnect_cb; + LmCallback *disconnect_cb; - LmMessageQueue *queue; + LmMessageQueue *queue; - LmConnectionState state; + LmConnectionState state; - guint keep_alive_rate; - LmFeaturePing *feature_ping; + guint keep_alive_rate; + LmFeaturePing *feature_ping; - gint ref_count; + gint ref_count; }; typedef enum { - AUTH_TYPE_PLAIN = 1, - AUTH_TYPE_DIGEST = 2, - AUTH_TYPE_0K = 4 + AUTH_TYPE_PLAIN = 1, + AUTH_TYPE_DIGEST = 2, + AUTH_TYPE_0K = 4 } AuthType; #define XMPP_NS_BIND "urn:ietf:params:xml:ns:xmpp-bind" @@ -166,12 +166,12 @@ static void connection_free (LmConnection *connection); static void connection_handle_message (LmConnection *connection, - LmMessage *message); + LmMessage *message); static void connection_new_message_cb (LmParser *parser, - LmMessage *message, - LmConnection *connection); + LmMessage *message, + LmConnection *connection); static gboolean connection_do_open (LmConnection *connection, - GError **error); + GError **error); void connection_do_close (LmConnection *connection); static LmMessage * connection_create_auth_req_msg (const gchar *username); @@ -239,265 +239,265 @@ static void connection_free_handlers (LmConnection *connection) { - int i; + int i; - /* Unref handlers */ - for (i = 0; i < LM_MESSAGE_TYPE_UNKNOWN; ++i) { - GSList *l; + /* Unref handlers */ + for (i = 0; i < LM_MESSAGE_TYPE_UNKNOWN; ++i) { + GSList *l; - for (l = connection->handlers[i]; l; l = l->next) { - HandlerData *hd = (HandlerData *) l->data; - - lm_message_handler_unref (hd->handler); - g_free (hd); - } + for (l = connection->handlers[i]; l; l = l->next) { + HandlerData *hd = (HandlerData *) l->data; + + lm_message_handler_unref (hd->handler); + g_free (hd); + } - g_slist_free (connection->handlers[i]); - } + g_slist_free (connection->handlers[i]); + } } static void connection_free (LmConnection *connection) { - g_free (connection->server); - g_free (connection->jid); - g_free (connection->effective_jid); - g_free (connection->stream_id); - g_free (connection->resource); + g_free (connection->server); + g_free (connection->jid); + g_free (connection->effective_jid); + g_free (connection->stream_id); + g_free (connection->resource); - if (connection->sasl) { - lm_sasl_free (connection->sasl); - } + if (connection->sasl) { + lm_sasl_free (connection->sasl); + } - if (connection->parser) { - lm_parser_free (connection->parser); - } + if (connection->parser) { + lm_parser_free (connection->parser); + } - connection_free_handlers (connection); - - g_hash_table_destroy (connection->id_handlers); - if (connection->state >= LM_CONNECTION_STATE_OPENING) { - connection_do_close (connection); - } + connection_free_handlers (connection); + + g_hash_table_destroy (connection->id_handlers); + if (connection->state >= LM_CONNECTION_STATE_OPENING) { + connection_do_close (connection); + } - if (connection->open_cb) { - _lm_utils_free_callback (connection->open_cb); - } - - if (connection->auth_cb) { - _lm_utils_free_callback (connection->auth_cb); - } + if (connection->open_cb) { + _lm_utils_free_callback (connection->open_cb); + } + + if (connection->auth_cb) { + _lm_utils_free_callback (connection->auth_cb); + } - lm_connection_set_disconnect_function (connection, NULL, NULL, NULL); + lm_connection_set_disconnect_function (connection, NULL, NULL, NULL); - if (connection->proxy) { - lm_proxy_unref (connection->proxy); - } + if (connection->proxy) { + lm_proxy_unref (connection->proxy); + } - lm_message_queue_unref (connection->queue); + lm_message_queue_unref (connection->queue); - if (connection->context) { - g_main_context_unref (connection->context); - } + if (connection->context) { + g_main_context_unref (connection->context); + } - if (connection->socket) { - lm_old_socket_unref (connection->socket); - } + if (connection->socket) { + lm_old_socket_unref (connection->socket); + } - g_slice_free (LmConnection, connection); + g_slice_free (LmConnection, connection); } static LmHandlerResult connection_run_message_handler (LmConnection *connection, LmMessage *m) { - LmMessageHandler *handler; - const gchar *id; - LmHandlerResult result = LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; + LmMessageHandler *handler; + const gchar *id; + LmHandlerResult result = LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; - id = lm_message_node_get_attribute (m->node, "id"); - if (!id) { - return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; - } + id = lm_message_node_get_attribute (m->node, "id"); + if (!id) { + return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; + } - handler = g_hash_table_lookup (connection->id_handlers, id); - if (handler) { - result = _lm_message_handler_handle_message (handler, - connection, - m); - g_hash_table_remove (connection->id_handlers, - id); - } + handler = g_hash_table_lookup (connection->id_handlers, id); + if (handler) { + result = _lm_message_handler_handle_message (handler, + connection, + m); + g_hash_table_remove (connection->id_handlers, + id); + } - return result; + return result; } static void connection_handle_message (LmConnection *connection, LmMessage *m) { - GSList *l; - LmHandlerResult result = LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; + GSList *l; + LmHandlerResult result = LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; - lm_connection_ref (connection); + lm_connection_ref (connection); - if (lm_message_get_type (m) == LM_MESSAGE_TYPE_STREAM) { - connection_stream_received (connection, m); - goto out; - } + if (lm_message_get_type (m) == LM_MESSAGE_TYPE_STREAM) { + connection_stream_received (connection, m); + goto out; + } - result = connection_run_message_handler (connection, m); - if (result == LM_HANDLER_RESULT_REMOVE_MESSAGE) { - goto out; - } + result = connection_run_message_handler (connection, m); + if (result == LM_HANDLER_RESULT_REMOVE_MESSAGE) { + goto out; + } - for (l = connection->handlers[lm_message_get_type (m)]; - l && result == LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; - l = l->next) { - HandlerData *hd = (HandlerData *) l->data; - - result = _lm_message_handler_handle_message (hd->handler, - connection, - m); - } + for (l = connection->handlers[lm_message_get_type (m)]; + l && result == LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; + l = l->next) { + HandlerData *hd = (HandlerData *) l->data; + + result = _lm_message_handler_handle_message (hd->handler, + connection, + m); + } - if (lm_message_get_type (m) == LM_MESSAGE_TYPE_STREAM_ERROR) { - connection_stream_error (connection, m); - goto out; - } - -out: - lm_connection_unref (connection); - - return; + if (lm_message_get_type (m) == LM_MESSAGE_TYPE_STREAM_ERROR) { + connection_stream_error (connection, m); + goto out; + } + + out: + lm_connection_unref (connection); + + return; } static void connection_new_message_cb (LmParser *parser, - LmMessage *m, - LmConnection *connection) + LmMessage *m, + LmConnection *connection) { - const gchar *from; - - lm_message_ref (m); + const gchar *from; + + lm_message_ref (m); - from = lm_message_node_get_attribute (m->node, "from"); - if (!from) { - from = "unknown"; - } - - lm_verbose ("New message with type=\"%s\" from: %s\n", - _lm_message_type_to_string (lm_message_get_type (m)), - from); + from = lm_message_node_get_attribute (m->node, "from"); + if (!from) { + from = "unknown"; + } + + lm_verbose ("New message with type=\"%s\" from: %s\n", + _lm_message_type_to_string (lm_message_get_type (m)), + from); - lm_message_queue_push_tail (connection->queue, m); + lm_message_queue_push_tail (connection->queue, m); } static void connection_ping_timed_out (LmFeaturePing *fp, LmConnection *connection) { - connection_do_close (connection); - connection_signal_disconnect (connection, - LM_DISCONNECT_REASON_PING_TIME_OUT); + connection_do_close (connection); + connection_signal_disconnect (connection, + LM_DISCONNECT_REASON_PING_TIME_OUT); } static void connection_start_keep_alive (LmConnection *connection) { - if (connection->feature_ping) { - connection_stop_keep_alive (connection); - } + if (connection->feature_ping) { + connection_stop_keep_alive (connection); + } - connection->feature_ping = g_object_new (LM_TYPE_FEATURE_PING, - "connection", connection, - "rate", connection->keep_alive_rate, - NULL); + connection->feature_ping = g_object_new (LM_TYPE_FEATURE_PING, + "connection", connection, + "rate", connection->keep_alive_rate, + NULL); - g_signal_connect (connection->feature_ping, "timed-out", - G_CALLBACK (connection_ping_timed_out), - connection); + g_signal_connect (connection->feature_ping, "timed-out", + G_CALLBACK (connection_ping_timed_out), + connection); - lm_feature_ping_start (connection->feature_ping); + lm_feature_ping_start (connection->feature_ping); } static void connection_stop_keep_alive (LmConnection *connection) { - if (connection->feature_ping) { - lm_feature_ping_stop (connection->feature_ping); - g_signal_handlers_disconnect_by_func (connection->feature_ping, - G_CALLBACK (connection_ping_timed_out), - connection); - g_object_unref (connection->feature_ping); - } + if (connection->feature_ping) { + lm_feature_ping_stop (connection->feature_ping); + g_signal_handlers_disconnect_by_func (connection->feature_ping, + G_CALLBACK (connection_ping_timed_out), + connection); + g_object_unref (connection->feature_ping); + } - connection->feature_ping = NULL; + connection->feature_ping = NULL; } static void connection_log_send (LmConnection *connection, - const gchar *str, - gint len) + const gchar *str, + gint len) { - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, "\nSEND:\n"); - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, - "-----------------------------------\n"); - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, "%s\n", str); - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, - "-----------------------------------\n"); + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, "\nSEND:\n"); + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, + "-----------------------------------\n"); + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, "%s\n", str); + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, + "-----------------------------------\n"); } static gboolean connection_send (LmConnection *connection, - const gchar *str, - gint len, - GError **error) + const gchar *str, + gint len, + GError **error) { - gint b_written; + gint b_written; - if (connection->state < LM_CONNECTION_STATE_OPENING) { - g_log (LM_LOG_DOMAIN,LM_LOG_LEVEL_NET, - "Connection is not open.\n"); + if (connection->state < LM_CONNECTION_STATE_OPENING) { + g_log (LM_LOG_DOMAIN,LM_LOG_LEVEL_NET, + "Connection is not open.\n"); - g_set_error (error, - LM_ERROR, - LM_ERROR_CONNECTION_NOT_OPEN, - "Connection is not open, call lm_connection_open() first"); - return FALSE; - } + g_set_error (error, + LM_ERROR, + LM_ERROR_CONNECTION_NOT_OPEN, + "Connection is not open, call lm_connection_open() first"); + return FALSE; + } - if (len == -1) { - len = strlen (str); - } + if (len == -1) { + len = strlen (str); + } - connection_log_send (connection, str, len); + connection_log_send (connection, str, len); - /* Check to see if there already is an output buffer, if so, add to the - buffer and return */ + /* Check to see if there already is an output buffer, if so, add to the + buffer and return */ - b_written = lm_old_socket_write (connection->socket, str, len); + b_written = lm_old_socket_write (connection->socket, str, len); - if (b_written < 0) { - g_set_error (error, - LM_ERROR, - LM_ERROR_CONNECTION_FAILED, - "Server closed the connection"); - return FALSE; - } + if (b_written < 0) { + g_set_error (error, + LM_ERROR, + LM_ERROR_CONNECTION_FAILED, + "Server closed the connection"); + return FALSE; + } - return TRUE; + return TRUE; } static void connection_message_queue_cb (LmMessageQueue *queue, LmConnection *connection) { - LmMessage *m; + LmMessage *m; - m = lm_message_queue_pop_nth (connection->queue, 0); + m = lm_message_queue_pop_nth (connection->queue, 0); - if (m) { - connection_handle_message (connection, m); - lm_message_unref (m); - } + if (m) { + connection_handle_message (connection, m); + lm_message_unref (m); + } } /* Returns directly */ @@ -505,612 +505,612 @@ static gboolean connection_do_open (LmConnection *connection, GError **error) { - gchar *domain = NULL; + gchar *domain = NULL; - if (lm_connection_is_open (connection)) { - g_set_error (error, - LM_ERROR, - LM_ERROR_CONNECTION_NOT_OPEN, - "Connection is already open, call lm_connection_close() first"); - return FALSE; - } + if (lm_connection_is_open (connection)) { + g_set_error (error, + LM_ERROR, + LM_ERROR_CONNECTION_NOT_OPEN, + "Connection is already open, call lm_connection_close() first"); + return FALSE; + } - domain = _lm_connection_get_server (connection); + domain = _lm_connection_get_server (connection); - lm_verbose ("Connecting to: %s:%d\n", connection->server, connection->port); + lm_verbose ("Connecting to: %s:%d\n", connection->server, connection->port); - connection->socket = lm_old_socket_create (connection->context, - (IncomingDataFunc) connection_incoming_data, - (SocketClosedFunc) connection_socket_closed_cb, - (ConnectResultFunc) connection_socket_connect_cb, - connection, - connection, - connection->blocking, - connection->server, - domain, - connection->port, - connection->ssl, - connection->proxy, - error); + connection->socket = lm_old_socket_create (connection->context, + (IncomingDataFunc) connection_incoming_data, + (SocketClosedFunc) connection_socket_closed_cb, + (ConnectResultFunc) connection_socket_connect_cb, + connection, + connection, + connection->blocking, + connection->server, + domain, + connection->port, + connection->ssl, + connection->proxy, + error); - g_free (domain); + g_free (domain); - if (!connection->socket) { - return FALSE; - } + if (!connection->socket) { + return FALSE; + } - lm_message_queue_attach (connection->queue, connection->context); - - connection->state = LM_CONNECTION_STATE_OPENING; - connection->async_connect_waiting = FALSE; + lm_message_queue_attach (connection->queue, connection->context); + + connection->state = LM_CONNECTION_STATE_OPENING; + connection->async_connect_waiting = FALSE; - return TRUE; + return TRUE; } - + void connection_do_close (LmConnection *connection) { - connection_stop_keep_alive (connection); + connection_stop_keep_alive (connection); - if (connection->socket) { - lm_old_socket_close (connection->socket); - } + if (connection->socket) { + lm_old_socket_close (connection->socket); + } - lm_message_queue_detach (connection->queue); - - if (!lm_connection_is_open (connection)) { - /* lm_connection_is_open is FALSE for state OPENING as well */ - connection->state = LM_CONNECTION_STATE_CLOSED; - connection->async_connect_waiting = FALSE; - return; - } - - connection->state = LM_CONNECTION_STATE_CLOSED; - connection->async_connect_waiting = FALSE; + lm_message_queue_detach (connection->queue); + + if (!lm_connection_is_open (connection)) { + /* lm_connection_is_open is FALSE for state OPENING as well */ + connection->state = LM_CONNECTION_STATE_CLOSED; + connection->async_connect_waiting = FALSE; + return; + } + + connection->state = LM_CONNECTION_STATE_CLOSED; + connection->async_connect_waiting = FALSE; - if (connection->sasl) { - lm_sasl_free (connection->sasl); - connection->sasl = NULL; - } + if (connection->sasl) { + lm_sasl_free (connection->sasl); + connection->sasl = NULL; + } } typedef struct { - gchar *username; - gchar *password; - gchar *resource; + gchar *username; + gchar *password; + gchar *resource; } AuthReqData; static void auth_req_data_free (AuthReqData *data) { - g_free (data->username); - g_free (data->password); - g_free (data->resource); - g_free (data); + g_free (data->username); + g_free (data->password); + g_free (data->resource); + g_free (data); } static LmMessage * connection_create_auth_req_msg (const gchar *username) { - LmMessage *m; - LmMessageNode *q_node; - - m = lm_message_new_with_sub_type (NULL, LM_MESSAGE_TYPE_IQ, - LM_MESSAGE_SUB_TYPE_GET); - q_node = lm_message_node_add_child (m->node, "query", NULL); - lm_message_node_set_attributes (q_node, - "xmlns", "jabber:iq:auth", - NULL); - lm_message_node_add_child (q_node, "username", username); + LmMessage *m; + LmMessageNode *q_node; + + m = lm_message_new_with_sub_type (NULL, LM_MESSAGE_TYPE_IQ, + LM_MESSAGE_SUB_TYPE_GET); + q_node = lm_message_node_add_child (m->node, "query", NULL); + lm_message_node_set_attributes (q_node, + "xmlns", "jabber:iq:auth", + NULL); + lm_message_node_add_child (q_node, "username", username); - return m; + return m; } static LmMessage * connection_create_auth_msg (LmConnection *connection, - const gchar *username, - const gchar *password, - const gchar *resource, - gint auth_type) + const gchar *username, + const gchar *password, + const gchar *resource, + gint auth_type) { - LmMessage *auth_msg; - LmMessageNode *q_node; + LmMessage *auth_msg; + LmMessageNode *q_node; - auth_msg = lm_message_new_with_sub_type (NULL, LM_MESSAGE_TYPE_IQ, - LM_MESSAGE_SUB_TYPE_SET); - - q_node = lm_message_node_add_child (auth_msg->node, "query", NULL); - - lm_message_node_set_attributes (q_node, - "xmlns", "jabber:iq:auth", - NULL); + auth_msg = lm_message_new_with_sub_type (NULL, LM_MESSAGE_TYPE_IQ, + LM_MESSAGE_SUB_TYPE_SET); + + q_node = lm_message_node_add_child (auth_msg->node, "query", NULL); + + lm_message_node_set_attributes (q_node, + "xmlns", "jabber:iq:auth", + NULL); - lm_message_node_add_child (q_node, "username", username); - - if (auth_type & AUTH_TYPE_0K) { - lm_verbose ("Using 0k auth (not implemented yet)\n"); - /* TODO: Should probably use this? */ - } + lm_message_node_add_child (q_node, "username", username); + + if (auth_type & AUTH_TYPE_0K) { + lm_verbose ("Using 0k auth (not implemented yet)\n"); + /* TODO: Should probably use this? */ + } - if (auth_type & AUTH_TYPE_DIGEST) { - gchar *str; - gchar *digest; + if (auth_type & AUTH_TYPE_DIGEST) { + gchar *str; + gchar *digest; - lm_verbose ("Using digest\n"); - str = g_strconcat (connection->stream_id, password, NULL); - digest = lm_sha_hash (str); - g_free (str); - lm_message_node_add_child (q_node, "digest", digest); - g_free (digest); - } - else if (auth_type & AUTH_TYPE_PLAIN) { - lm_verbose ("Using plaintext auth\n"); - lm_message_node_add_child (q_node, "password", password); - } else { - /* TODO: Report error somehow */ - } - - lm_message_node_add_child (q_node, "resource", resource); + lm_verbose ("Using digest\n"); + str = g_strconcat (connection->stream_id, password, NULL); + digest = lm_sha_hash (str); + g_free (str); + lm_message_node_add_child (q_node, "digest", digest); + g_free (digest); + } + else if (auth_type & AUTH_TYPE_PLAIN) { + lm_verbose ("Using plaintext auth\n"); + lm_message_node_add_child (q_node, "password", password); + } else { + /* TODO: Report error somehow */ + } + + lm_message_node_add_child (q_node, "resource", resource); - return auth_msg; + return auth_msg; } static LmHandlerResult connection_auth_req_reply (LmMessageHandler *handler, - LmConnection *connection, - LmMessage *m, - gpointer user_data) + LmConnection *connection, + LmMessage *m, + gpointer user_data) { - int auth_type; - LmMessage *auth_msg; - LmMessageHandler *auth_handler; - AuthReqData *data = (AuthReqData *) user_data; - gboolean result; - - auth_type = connection_check_auth_type (m); + int auth_type; + LmMessage *auth_msg; + LmMessageHandler *auth_handler; + AuthReqData *data = (AuthReqData *) user_data; + gboolean result; + + auth_type = connection_check_auth_type (m); - auth_msg = connection_create_auth_msg (connection, - data->username, - data->password, - data->resource, - auth_type); + auth_msg = connection_create_auth_msg (connection, + data->username, + data->password, + data->resource, + auth_type); - auth_handler = lm_message_handler_new (connection_auth_reply, - NULL, NULL); - result = lm_connection_send_with_reply (connection, auth_msg, - auth_handler, NULL); - lm_message_handler_unref (auth_handler); - lm_message_unref (auth_msg); - - return LM_HANDLER_RESULT_REMOVE_MESSAGE; + auth_handler = lm_message_handler_new (connection_auth_reply, + NULL, NULL); + result = lm_connection_send_with_reply (connection, auth_msg, + auth_handler, NULL); + lm_message_handler_unref (auth_handler); + lm_message_unref (auth_msg); + + return LM_HANDLER_RESULT_REMOVE_MESSAGE; } static int connection_check_auth_type (LmMessage *auth_req_rpl) { - LmMessageNode *q_node; - gint ret_val = 0; + LmMessageNode *q_node; + gint ret_val = 0; - q_node = lm_message_node_get_child (auth_req_rpl->node, "query"); - - if (!q_node) { - return AUTH_TYPE_PLAIN; - } + q_node = lm_message_node_get_child (auth_req_rpl->node, "query"); + + if (!q_node) { + return AUTH_TYPE_PLAIN; + } - if (lm_message_node_get_child (q_node, "password")) { - ret_val |= AUTH_TYPE_PLAIN; - } + if (lm_message_node_get_child (q_node, "password")) { + ret_val |= AUTH_TYPE_PLAIN; + } - if (lm_message_node_get_child (q_node, "digest")) { - ret_val |= AUTH_TYPE_DIGEST; - } + if (lm_message_node_get_child (q_node, "digest")) { + ret_val |= AUTH_TYPE_DIGEST; + } - if (lm_message_node_get_child (q_node, "sequence") && - lm_message_node_get_child (q_node, "token")) { - ret_val |= AUTH_TYPE_0K; - } + if (lm_message_node_get_child (q_node, "sequence") && + lm_message_node_get_child (q_node, "token")) { + ret_val |= AUTH_TYPE_0K; + } - return ret_val; + return ret_val; } static LmHandlerResult connection_auth_reply (LmMessageHandler *handler, - LmConnection *connection, - LmMessage *m, - gpointer user_data) + LmConnection *connection, + LmMessage *m, + gpointer user_data) { - const gchar *type; - gboolean result = TRUE; - - g_return_val_if_fail (connection != NULL, - LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS); - + const gchar *type; + gboolean result = TRUE; + + g_return_val_if_fail (connection != NULL, + LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS); + - type = lm_message_node_get_attribute (m->node, "type"); - if (strcmp (type, "result") == 0) { - result = TRUE; - connection->state = LM_CONNECTION_STATE_AUTHENTICATED; - } - else if (strcmp (type, "error") == 0) { - result = FALSE; - connection->state = LM_CONNECTION_STATE_OPEN; - } - - lm_verbose ("AUTH reply: %d\n", result); - - if (connection->auth_cb) { - LmCallback *cb = connection->auth_cb; + type = lm_message_node_get_attribute (m->node, "type"); + if (strcmp (type, "result") == 0) { + result = TRUE; + connection->state = LM_CONNECTION_STATE_AUTHENTICATED; + } + else if (strcmp (type, "error") == 0) { + result = FALSE; + connection->state = LM_CONNECTION_STATE_OPEN; + } + + lm_verbose ("AUTH reply: %d\n", result); + + if (connection->auth_cb) { + LmCallback *cb = connection->auth_cb; - connection->auth_cb = NULL; + connection->auth_cb = NULL; - if (cb->func) { - (* ((LmResultFunction) cb->func)) (connection, - result, - cb->user_data); - } + if (cb->func) { + (* ((LmResultFunction) cb->func)) (connection, + result, + cb->user_data); + } - _lm_utils_free_callback (cb); - } - - return LM_HANDLER_RESULT_REMOVE_MESSAGE; + _lm_utils_free_callback (cb); + } + + return LM_HANDLER_RESULT_REMOVE_MESSAGE; } static LmHandlerResult _lm_connection_starttls_cb (LmMessageHandler *handler, - LmConnection *connection, - LmMessage *message, - gpointer user_data) + LmConnection *connection, + LmMessage *message, + gpointer user_data) { - if (lm_old_socket_starttls (connection->socket)) { - connection->tls_started = TRUE; - connection_send_stream_header (connection); - } else { - connection_do_close (connection); - connection_signal_disconnect (connection, - LM_DISCONNECT_REASON_ERROR); - } + if (lm_old_socket_starttls (connection->socket)) { + connection->tls_started = TRUE; + connection_send_stream_header (connection); + } else { + connection_do_close (connection); + connection_signal_disconnect (connection, + LM_DISCONNECT_REASON_ERROR); + } - return LM_HANDLER_RESULT_REMOVE_MESSAGE; + return LM_HANDLER_RESULT_REMOVE_MESSAGE; } static void connection_possibly_register_starttls_handler (LmConnection *connection) { - /* if we'd like to use tls and we didn't already start - * it, prepare for it now */ - if (connection->ssl && - lm_old_socket_get_use_starttls (connection->socket) && - !connection->starttls_cb) { - connection->starttls_cb = - lm_message_handler_new (_lm_connection_starttls_cb, - NULL, NULL); - lm_connection_register_message_handler (connection, - connection->starttls_cb, - LM_MESSAGE_TYPE_PROCEED, - LM_HANDLER_PRIORITY_FIRST); - } + /* if we'd like to use tls and we didn't already start + * it, prepare for it now */ + if (connection->ssl && + lm_old_socket_get_use_starttls (connection->socket) && + !connection->starttls_cb) { + connection->starttls_cb = + lm_message_handler_new (_lm_connection_starttls_cb, + NULL, NULL); + lm_connection_register_message_handler (connection, + connection->starttls_cb, + LM_MESSAGE_TYPE_PROCEED, + LM_HANDLER_PRIORITY_FIRST); + } } static void connection_stream_received (LmConnection *connection, LmMessage *m) { - gboolean result; - const char *xmpp_version; - - g_return_if_fail (connection != NULL); - g_return_if_fail (m != NULL); - - connection->stream_id = g_strdup (lm_message_node_get_attribute (m->node, - "id"));; + gboolean result; + const char *xmpp_version; + + g_return_if_fail (connection != NULL); + g_return_if_fail (m != NULL); + + connection->stream_id = g_strdup (lm_message_node_get_attribute (m->node, + "id"));; - xmpp_version = lm_message_node_get_attribute (m->node, "version"); - if (xmpp_version && strcmp (xmpp_version, "1.0") == 0) { - lm_verbose ("XMPP 1.0 stream received: %s\n", - connection->stream_id); + xmpp_version = lm_message_node_get_attribute (m->node, "version"); + if (xmpp_version && strcmp (xmpp_version, "1.0") == 0) { + lm_verbose ("XMPP 1.0 stream received: %s\n", + connection->stream_id); - connection->use_sasl = TRUE; - - /* stream is started multiple times, but we only want - * one sasl mechanism */ - if (!connection->sasl) { - connection->sasl = lm_sasl_new(connection); - } + connection->use_sasl = TRUE; + + /* stream is started multiple times, but we only want + * one sasl mechanism */ + if (!connection->sasl) { + connection->sasl = lm_sasl_new(connection); + } - connection_possibly_register_starttls_handler (connection); - } else { - lm_verbose ("Old Jabber stream received: %s\n", - connection->stream_id); - } - - if (connection->state < LM_CONNECTION_STATE_OPEN) { - connection->state = LM_CONNECTION_STATE_OPEN; - } - - /* Check to see if the stream is correctly set up */ - result = TRUE; + connection_possibly_register_starttls_handler (connection); + } else { + lm_verbose ("Old Jabber stream received: %s\n", + connection->stream_id); + } + + if (connection->state < LM_CONNECTION_STATE_OPEN) { + connection->state = LM_CONNECTION_STATE_OPEN; + } + + /* Check to see if the stream is correctly set up */ + result = TRUE; - connection_start_keep_alive (connection); + connection_start_keep_alive (connection); - if (connection->open_cb) { - LmCallback *cb = connection->open_cb; + if (connection->open_cb) { + LmCallback *cb = connection->open_cb; - connection->open_cb = NULL; - - if (cb->func) { - (* ((LmResultFunction) cb->func)) (connection, result, - cb->user_data); - } - _lm_utils_free_callback (cb); - } + connection->open_cb = NULL; + + if (cb->func) { + (* ((LmResultFunction) cb->func)) (connection, result, + cb->user_data); + } + _lm_utils_free_callback (cb); + } } static void connection_stream_error (LmConnection *connection, LmMessage *m) { - LmMessageNode *node, *reason_node; - LmDisconnectReason reason; + LmMessageNode *node, *reason_node; + LmDisconnectReason reason; - g_return_if_fail (connection != NULL); - g_return_if_fail (m != NULL); + g_return_if_fail (connection != NULL); + g_return_if_fail (m != NULL); - node = m->node; + node = m->node; - /* Resource conflict */ - reason_node = lm_message_node_get_child (node, "conflict"); - if (reason_node) { - lm_verbose ("Stream error: Conflict (resource connected elsewhere)\n"); - reason = LM_DISCONNECT_REASON_RESOURCE_CONFLICT; - return; - } + /* Resource conflict */ + reason_node = lm_message_node_get_child (node, "conflict"); + if (reason_node) { + lm_verbose ("Stream error: Conflict (resource connected elsewhere)\n"); + reason = LM_DISCONNECT_REASON_RESOURCE_CONFLICT; + return; + } - /* XML is crack */ - reason_node = lm_message_node_get_child (node, "xml-not-well-formed"); - if (reason_node) { - lm_verbose ("Stream error: XML not well formed\n"); - reason = LM_DISCONNECT_REASON_INVALID_XML; - return; - } + /* XML is crack */ + reason_node = lm_message_node_get_child (node, "xml-not-well-formed"); + if (reason_node) { + lm_verbose ("Stream error: XML not well formed\n"); + reason = LM_DISCONNECT_REASON_INVALID_XML; + return; + } - lm_verbose ("Stream error: Unrecognised error\n"); - reason = LM_DISCONNECT_REASON_ERROR; - connection->stream_id = g_strdup (lm_message_node_get_attribute (m->node, - "id"));; - connection_do_close (connection); - connection_signal_disconnect (connection, reason); + lm_verbose ("Stream error: Unrecognised error\n"); + reason = LM_DISCONNECT_REASON_ERROR; + connection->stream_id = g_strdup (lm_message_node_get_attribute (m->node, + "id"));; + connection_do_close (connection); + connection_signal_disconnect (connection, reason); } static gint connection_handler_compare_func (HandlerData *a, HandlerData *b) { - return b->priority - a->priority; + return b->priority - a->priority; } static void connection_signal_disconnect (LmConnection *connection, - LmDisconnectReason reason) + LmDisconnectReason reason) { - if (connection->disconnect_cb && connection->disconnect_cb->func) { - LmCallback *cb = connection->disconnect_cb; - - lm_connection_ref (connection); - (* ((LmDisconnectFunction) cb->func)) (connection, - reason, - cb->user_data); - lm_connection_unref (connection); - } + if (connection->disconnect_cb && connection->disconnect_cb->func) { + LmCallback *cb = connection->disconnect_cb; + + lm_connection_ref (connection); + (* ((LmDisconnectFunction) cb->func)) (connection, + reason, + cb->user_data); + lm_connection_unref (connection); + } } static void connection_incoming_data (LmOldSocket *socket, - const gchar *buf, - LmConnection *connection) + const gchar *buf, + LmConnection *connection) { - lm_parser_parse (connection->parser, buf); + lm_parser_parse (connection->parser, buf); } static void connection_socket_closed_cb (LmOldSocket *socket, - LmDisconnectReason reason, - LmConnection *connection) + LmDisconnectReason reason, + LmConnection *connection) { - connection_do_close (connection); - connection_signal_disconnect (connection, reason); + connection_do_close (connection); + connection_signal_disconnect (connection, reason); } static void connection_socket_connect_cb (LmOldSocket *socket, - gboolean result, - LmConnection *connection) + gboolean result, + LmConnection *connection) { - if (result == FALSE) { - connection_do_close (connection); + if (result == FALSE) { + connection_do_close (connection); - if (connection->open_cb) { - LmCallback *cb = connection->open_cb; + if (connection->open_cb) { + LmCallback *cb = connection->open_cb; - connection->open_cb = NULL; - - (* ((LmResultFunction) cb->func)) (connection, FALSE, - cb->user_data); - _lm_utils_free_callback (cb); - } - - return; - } - - /* FIXME: Set up according to XMPP 1.0 specification */ - /* StartTLS and the like */ - if (!connection_send (connection, - "", -1, - NULL)) { - lm_verbose ("Failed to send xml version and encoding\n"); - connection_do_close (connection); + connection->open_cb = NULL; + + (* ((LmResultFunction) cb->func)) (connection, FALSE, + cb->user_data); + _lm_utils_free_callback (cb); + } + + return; + } + + /* FIXME: Set up according to XMPP 1.0 specification */ + /* StartTLS and the like */ + if (!connection_send (connection, + "", -1, + NULL)) { + lm_verbose ("Failed to send xml version and encoding\n"); + connection_do_close (connection); - return; - } + return; + } - connection_send_stream_header (connection); + connection_send_stream_header (connection); } static gboolean connection_get_server_from_jid (const gchar *jid, - gchar **server) + gchar **server) { - gchar *ch; - gchar *ch_end; + gchar *ch; + gchar *ch_end; - if (jid != NULL && (ch = strchr (jid, '@')) != NULL) { - ch_end = strchr(ch + 1, '/'); - if (ch_end != NULL) { - *server = g_strndup (ch + 1, ch_end - ch - 1); - } else { - *server = g_strdup (ch + 1); - } + if (jid != NULL && (ch = strchr (jid, '@')) != NULL) { + ch_end = strchr(ch + 1, '/'); + if (ch_end != NULL) { + *server = g_strndup (ch + 1, ch_end - ch - 1); + } else { + *server = g_strdup (ch + 1); + } - return TRUE; - } - - return FALSE; + return TRUE; + } + + return FALSE; } static void connection_send_stream_header (LmConnection *connection) { - LmMessage *m; - gchar *server_from_jid; + LmMessage *m; + gchar *server_from_jid; - lm_verbose ("Sending stream header\n"); + lm_verbose ("Sending stream header\n"); - server_from_jid = _lm_connection_get_server (connection); + server_from_jid = _lm_connection_get_server (connection); - m = lm_message_new (server_from_jid, LM_MESSAGE_TYPE_STREAM); - lm_message_node_set_attributes (m->node, - "xmlns:stream", - "http://etherx.jabber.org/streams", - "xmlns", "jabber:client", - "version", "1.0", - NULL); - - g_free (server_from_jid); + m = lm_message_new (server_from_jid, LM_MESSAGE_TYPE_STREAM); + lm_message_node_set_attributes (m->node, + "xmlns:stream", + "http://etherx.jabber.org/streams", + "xmlns", "jabber:client", + "version", "1.0", + NULL); + + g_free (server_from_jid); - if (!lm_connection_send (connection, m, NULL)) { - lm_verbose ("Failed to send stream information\n"); - connection_do_close (connection); - } - - lm_message_unref (m); + if (!lm_connection_send (connection, m, NULL)) { + lm_verbose ("Failed to send stream information\n"); + connection_do_close (connection); + } + + lm_message_unref (m); } GMainContext * _lm_connection_get_context (LmConnection *conn) { - g_return_val_if_fail (conn != NULL, NULL); + g_return_val_if_fail (conn != NULL, NULL); - return conn->context; + return conn->context; } gchar * _lm_connection_get_server (LmConnection *conn) { - gchar *server; + gchar *server; - g_return_val_if_fail (conn != NULL, NULL); + g_return_val_if_fail (conn != NULL, NULL); - if (!connection_get_server_from_jid (conn->jid, &server)) { - server = g_strdup (conn->server); - } + if (!connection_get_server_from_jid (conn->jid, &server)) { + server = g_strdup (conn->server); + } - return server; + return server; } gboolean _lm_connection_async_connect_waiting (LmConnection *connection) { - return connection->async_connect_waiting; + return connection->async_connect_waiting; } void _lm_connection_set_async_connect_waiting (LmConnection *connection, - gboolean waiting) + gboolean waiting) { - connection->async_connect_waiting = waiting; + connection->async_connect_waiting = waiting; } static void connection_call_auth_cb (LmConnection *connection, gboolean success) { - if (success) { - connection->state = LM_CONNECTION_STATE_AUTHENTICATED; - } else { - connection->state = LM_CONNECTION_STATE_OPEN; - } + if (success) { + connection->state = LM_CONNECTION_STATE_AUTHENTICATED; + } else { + connection->state = LM_CONNECTION_STATE_OPEN; + } - if (connection->auth_cb) { - LmCallback *cb = connection->auth_cb; + if (connection->auth_cb) { + LmCallback *cb = connection->auth_cb; - connection->auth_cb = NULL; + connection->auth_cb = NULL; - if (cb->func) { - (* ((LmResultFunction) cb->func)) (connection, - success, - cb->user_data); - } + if (cb->func) { + (* ((LmResultFunction) cb->func)) (connection, + success, + cb->user_data); + } - _lm_utils_free_callback (cb); - } + _lm_utils_free_callback (cb); + } } static LmHandlerResult connection_bind_reply (LmMessageHandler *handler, - LmConnection *connection, - LmMessage *message, - gpointer user_data) + LmConnection *connection, + LmMessage *message, + gpointer user_data) { - LmMessage *m; - LmMessageNode *session_node; - LmMessageNode *jid_node; - int result; - LmMessageSubType type; + LmMessage *m; + LmMessageNode *session_node; + LmMessageNode *jid_node; + int result; + LmMessageSubType type; - type = lm_message_get_sub_type (message); - if (type == LM_MESSAGE_SUB_TYPE_ERROR) { - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, - "%s: error while binding to resource\n", G_STRFUNC); - - connection_call_auth_cb (connection, FALSE); - - return LM_HANDLER_RESULT_REMOVE_MESSAGE; - } + type = lm_message_get_sub_type (message); + if (type == LM_MESSAGE_SUB_TYPE_ERROR) { + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, + "%s: error while binding to resource\n", G_STRFUNC); + + connection_call_auth_cb (connection, FALSE); + + return LM_HANDLER_RESULT_REMOVE_MESSAGE; + } - /* use whatever server returns as our effective jid */ - jid_node = lm_message_node_find_child (message->node, "jid"); - if (jid_node) { - g_free (connection->effective_jid); - connection->effective_jid = g_strdup - (lm_message_node_get_value (jid_node)); - } + /* use whatever server returns as our effective jid */ + jid_node = lm_message_node_find_child (message->node, "jid"); + if (jid_node) { + g_free (connection->effective_jid); + connection->effective_jid = g_strdup + (lm_message_node_get_value (jid_node)); + } - m = lm_message_new_with_sub_type (NULL, - LM_MESSAGE_TYPE_IQ, - LM_MESSAGE_SUB_TYPE_SET); + m = lm_message_new_with_sub_type (NULL, + LM_MESSAGE_TYPE_IQ, + LM_MESSAGE_SUB_TYPE_SET); - session_node = lm_message_node_add_child (m->node, "session", NULL); - lm_message_node_set_attributes (session_node, - "xmlns", XMPP_NS_SESSION, - NULL); + session_node = lm_message_node_add_child (m->node, "session", NULL); + lm_message_node_set_attributes (session_node, + "xmlns", XMPP_NS_SESSION, + NULL); - result = lm_connection_send (connection, m, NULL); - lm_message_unref (m); - if (result < 0) { - connection_do_close (connection); - } + result = lm_connection_send (connection, m, NULL); + lm_message_unref (m); + if (result < 0) { + connection_do_close (connection); + } - /* We may finally tell the client they're authorized */ - connection_call_auth_cb (connection, TRUE); + /* We may finally tell the client they're authorized */ + connection_call_auth_cb (connection, TRUE); - return LM_HANDLER_RESULT_REMOVE_MESSAGE; + return LM_HANDLER_RESULT_REMOVE_MESSAGE; } static LmHandlerResult @@ -1119,112 +1119,112 @@ LmMessage *message, gpointer user_data) { - LmMessageNode *bind_node; - LmMessageNode *starttls_node; - LmMessageNode *old_auth; - LmMessageNode *sasl_mechanisms; - - starttls_node = lm_message_node_find_child (message->node, "starttls"); - if (connection->ssl && lm_old_socket_get_use_starttls (connection->socket)) { - if (starttls_node) { - LmMessage *msg; + LmMessageNode *bind_node; + LmMessageNode *starttls_node; + LmMessageNode *old_auth; + LmMessageNode *sasl_mechanisms; + + starttls_node = lm_message_node_find_child (message->node, "starttls"); + if (connection->ssl && lm_old_socket_get_use_starttls (connection->socket)) { + if (starttls_node) { + LmMessage *msg; - msg = lm_message_new (NULL, LM_MESSAGE_TYPE_STARTTLS); + msg = lm_message_new (NULL, LM_MESSAGE_TYPE_STARTTLS); - lm_message_node_set_attributes ( - msg->node, - "xmlns", XMPP_NS_STARTTLS, - NULL); + lm_message_node_set_attributes ( + msg->node, + "xmlns", XMPP_NS_STARTTLS, + NULL); - lm_connection_send (connection, msg, NULL); - lm_message_unref (msg); + lm_connection_send (connection, msg, NULL); + lm_message_unref (msg); - return LM_HANDLER_RESULT_REMOVE_MESSAGE; - } else if (!connection->tls_started && - lm_old_socket_get_require_starttls (connection->socket)) { - /* If there were no starttls features present and we require it, this is - * the place to scream. */ + return LM_HANDLER_RESULT_REMOVE_MESSAGE; + } else if (!connection->tls_started && + lm_old_socket_get_require_starttls (connection->socket)) { + /* If there were no starttls features present and we require it, this is + * the place to scream. */ - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, - "%s: required StartTLS feature not supported by server\n", G_STRFUNC); - connection_do_close (connection); - connection_signal_disconnect (connection, - LM_DISCONNECT_REASON_ERROR); - return LM_HANDLER_RESULT_REMOVE_MESSAGE; - } - } + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, + "%s: required StartTLS feature not supported by server\n", G_STRFUNC); + connection_do_close (connection); + connection_signal_disconnect (connection, + LM_DISCONNECT_REASON_ERROR); + return LM_HANDLER_RESULT_REMOVE_MESSAGE; + } + } - bind_node = lm_message_node_find_child (message->node, "bind"); - if (bind_node) { - LmMessageHandler *bind_handler; - LmMessage *bind_msg; - const gchar *ns; - int result; + bind_node = lm_message_node_find_child (message->node, "bind"); + if (bind_node) { + LmMessageHandler *bind_handler; + LmMessage *bind_msg; + const gchar *ns; + int result; - ns = lm_message_node_get_attribute (bind_node, "xmlns"); - if (!ns || strcmp (ns, XMPP_NS_BIND) != 0) { - return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; - } + ns = lm_message_node_get_attribute (bind_node, "xmlns"); + if (!ns || strcmp (ns, XMPP_NS_BIND) != 0) { + return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; + } - bind_msg = lm_message_new_with_sub_type (NULL, - LM_MESSAGE_TYPE_IQ, - LM_MESSAGE_SUB_TYPE_SET); + bind_msg = lm_message_new_with_sub_type (NULL, + LM_MESSAGE_TYPE_IQ, + LM_MESSAGE_SUB_TYPE_SET); - bind_node = lm_message_node_add_child (bind_msg->node, - "bind", NULL); - lm_message_node_set_attributes (bind_node, - "xmlns", XMPP_NS_BIND, - NULL); + bind_node = lm_message_node_add_child (bind_msg->node, + "bind", NULL); + lm_message_node_set_attributes (bind_node, + "xmlns", XMPP_NS_BIND, + NULL); - lm_message_node_add_child (bind_node, "resource", - connection->resource); + lm_message_node_add_child (bind_node, "resource", + connection->resource); - bind_handler = lm_message_handler_new (connection_bind_reply, - NULL, NULL); - result = lm_connection_send_with_reply (connection, bind_msg, - bind_handler, NULL); - lm_message_handler_unref (bind_handler); - lm_message_unref (bind_msg); + bind_handler = lm_message_handler_new (connection_bind_reply, + NULL, NULL); + result = lm_connection_send_with_reply (connection, bind_msg, + bind_handler, NULL); + lm_message_handler_unref (bind_handler); + lm_message_unref (bind_msg); - if (result < 0) { - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, - "%s: can't send resource binding request\n", G_STRFUNC); - connection_do_close (connection); - } - } + if (result < 0) { + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, + "%s: can't send resource binding request\n", G_STRFUNC); + connection_do_close (connection); + } + } - old_auth = lm_message_node_find_child (message->node, "auth"); + old_auth = lm_message_node_find_child (message->node, "auth"); - sasl_mechanisms = lm_message_node_find_child (message->node, "mechanisms"); - if (connection->use_sasl && old_auth != NULL && sasl_mechanisms == NULL) { - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, - "Server uses XEP-0078 (jabber iq auth) instead of SASL\n"); - /* So the server is XMPP1.0, but doesn't support SASL and uses - * obsolete XEP-0078 instead. Let's cope. */ + sasl_mechanisms = lm_message_node_find_child (message->node, "mechanisms"); + if (connection->use_sasl && old_auth != NULL && sasl_mechanisms == NULL) { + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, + "Server uses XEP-0078 (jabber iq auth) instead of SASL\n"); + /* So the server is XMPP1.0, but doesn't support SASL and uses + * obsolete XEP-0078 instead. Let's cope. */ - connection->use_sasl = FALSE; + connection->use_sasl = FALSE; - if (connection->sasl) { - const gchar *user, *pass; + if (connection->sasl) { + const gchar *user, *pass; - lm_sasl_get_auth_params (connection->sasl, &user, &pass); - if (user && pass) { - GError *error = NULL; - connection_old_auth (connection, user, pass, - connection->resource, - &error); + lm_sasl_get_auth_params (connection->sasl, &user, &pass); + if (user && pass) { + GError *error = NULL; + connection_old_auth (connection, user, pass, + connection->resource, + &error); - if (error) { - g_error_free (error); - } - } + if (error) { + g_error_free (error); + } + } - lm_sasl_free (connection->sasl); - connection->sasl = NULL; - } - } + lm_sasl_free (connection->sasl); + connection->sasl = NULL; + } + } - return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; + return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; } /** @@ -1239,54 +1239,54 @@ LmConnection * lm_connection_new (const gchar *server) { - LmConnection *connection; - gint i; + LmConnection *connection; + gint i; - g_type_init (); /* Ensure that the GLib type library is initialized */ - lm_debug_init (); - _lm_sock_library_init (); + g_type_init (); /* Ensure that the GLib type library is initialized */ + lm_debug_init (); + _lm_sock_library_init (); - connection = g_slice_new0 (LmConnection); + connection = g_slice_new0 (LmConnection); - if (server) { - connection->server = _lm_utils_hostname_to_punycode (server); - connection->use_srv = FALSE; - } else { - connection->server = NULL; - connection->use_srv = TRUE; - } + if (server) { + connection->server = _lm_utils_hostname_to_punycode (server); + connection->use_srv = FALSE; + } else { + connection->server = NULL; + connection->use_srv = TRUE; + } - connection->context = NULL; - connection->port = LM_CONNECTION_DEFAULT_PORT; - connection->jid = NULL; - connection->effective_jid = NULL; - connection->ssl = NULL; - connection->proxy = NULL; - connection->disconnect_cb = NULL; - connection->queue = lm_message_queue_new ((LmMessageQueueCallback) connection_message_queue_cb, - connection); - connection->cancel_open = FALSE; - connection->state = LM_CONNECTION_STATE_CLOSED; - connection->keep_alive_rate = 0; - connection->socket = NULL; - connection->use_sasl = FALSE; - connection->tls_started = FALSE; - - connection->id_handlers = g_hash_table_new_full (g_str_hash, - g_str_equal, - g_free, - (GDestroyNotify) lm_message_handler_unref); - connection->ref_count = 1; - - for (i = 0; i < LM_MESSAGE_TYPE_UNKNOWN; ++i) { - connection->handlers[i] = NULL; - } + connection->context = NULL; + connection->port = LM_CONNECTION_DEFAULT_PORT; + connection->jid = NULL; + connection->effective_jid = NULL; + connection->ssl = NULL; + connection->proxy = NULL; + connection->disconnect_cb = NULL; + connection->queue = lm_message_queue_new ((LmMessageQueueCallback) connection_message_queue_cb, + connection); + connection->cancel_open = FALSE; + connection->state = LM_CONNECTION_STATE_CLOSED; + connection->keep_alive_rate = 0; + connection->socket = NULL; + connection->use_sasl = FALSE; + connection->tls_started = FALSE; + + connection->id_handlers = g_hash_table_new_full (g_str_hash, + g_str_equal, + g_free, + (GDestroyNotify) lm_message_handler_unref); + connection->ref_count = 1; + + for (i = 0; i < LM_MESSAGE_TYPE_UNKNOWN; ++i) { + connection->handlers[i] = NULL; + } - connection->parser = lm_parser_new - ((LmParserMessageFunction) connection_new_message_cb, - connection, NULL); + connection->parser = lm_parser_new + ((LmParserMessageFunction) connection_new_message_cb, + connection, NULL); - return connection; + return connection; } /** @@ -1303,16 +1303,16 @@ LmConnection * lm_connection_new_with_context (const gchar *server, GMainContext *context) { - LmConnection *connection; + LmConnection *connection; - connection = lm_connection_new (server); - connection->context = context; + connection = lm_connection_new (server); + connection->context = context; - if (context) { - g_main_context_ref (connection->context); - } + if (context) { + g_main_context_ref (connection->context); + } - return connection; + return connection; } /** @@ -1329,18 +1329,18 @@ **/ gboolean lm_connection_open (LmConnection *connection, - LmResultFunction function, - gpointer user_data, - GDestroyNotify notify, - GError **error) + LmResultFunction function, + gpointer user_data, + GDestroyNotify notify, + GError **error) { - g_return_val_if_fail (connection != NULL, FALSE); - - connection->open_cb = _lm_utils_new_callback (function, - user_data, notify); - connection->blocking = FALSE; + g_return_val_if_fail (connection != NULL, FALSE); + + connection->open_cb = _lm_utils_new_callback (function, + user_data, notify); + connection->blocking = FALSE; - return connection_do_open (connection, error); + return connection_do_open (connection, error); } /** @@ -1355,41 +1355,41 @@ gboolean lm_connection_open_and_block (LmConnection *connection, GError **error) { - gboolean result; - LmConnectionState state; - - g_return_val_if_fail (connection != NULL, FALSE); + gboolean result; + LmConnectionState state; + + g_return_val_if_fail (connection != NULL, FALSE); - connection->open_cb = NULL; - connection->blocking = TRUE; + connection->open_cb = NULL; + connection->blocking = TRUE; - result = connection_do_open (connection, error); + result = connection_do_open (connection, error); - if (result == FALSE) { - return FALSE; - } - - while ((state = lm_connection_get_state (connection)) == LM_CONNECTION_STATE_OPENING) { - if (g_main_context_pending (connection->context)) { - g_main_context_iteration (connection->context, TRUE); - } else { - /* Sleep for 1 millisecond */ - g_usleep (1000); - } - } + if (result == FALSE) { + return FALSE; + } + + while ((state = lm_connection_get_state (connection)) == LM_CONNECTION_STATE_OPENING) { + if (g_main_context_pending (connection->context)) { + g_main_context_iteration (connection->context, TRUE); + } else { + /* Sleep for 1 millisecond */ + g_usleep (1000); + } + } - if (lm_connection_is_open (connection)) { - connection_start_keep_alive (connection); - return TRUE; - } + if (lm_connection_is_open (connection)) { + connection_start_keep_alive (connection); + return TRUE; + } - /* Need to set the error here: LM-15 */ - g_set_error (error, - LM_ERROR, - LM_ERROR_CONNECTION_FAILED, - "Opening the connection failed"); + /* Need to set the error here: LM-15 */ + g_set_error (error, + LM_ERROR, + LM_ERROR_CONNECTION_FAILED, + "Opening the connection failed"); - return FALSE; + return FALSE; } /** @@ -1401,16 +1401,16 @@ void lm_connection_cancel_open (LmConnection *connection) { - g_return_if_fail (connection != NULL); + g_return_if_fail (connection != NULL); - if (connection->open_cb) { - _lm_utils_free_callback (connection->open_cb); - connection->open_cb = NULL; - } + if (connection->open_cb) { + _lm_utils_free_callback (connection->open_cb); + connection->open_cb = NULL; + } - connection->cancel_open = TRUE; + connection->cancel_open = TRUE; - lm_old_socket_asyncns_cancel (connection->socket); + lm_old_socket_asyncns_cancel (connection->socket); } /** @@ -1424,54 +1424,54 @@ **/ gboolean lm_connection_close (LmConnection *connection, - GError **error) + GError **error) { - gboolean no_errors = TRUE; - - g_return_val_if_fail (connection != NULL, FALSE); + gboolean no_errors = TRUE; + + g_return_val_if_fail (connection != NULL, FALSE); + + if (connection->socket) { + lm_old_socket_asyncns_cancel (connection->socket); + } - if (connection->socket) { - lm_old_socket_asyncns_cancel (connection->socket); + if (connection->state == LM_CONNECTION_STATE_CLOSED) { + g_set_error (error, + LM_ERROR, + LM_ERROR_CONNECTION_NOT_OPEN, + "Connection is not open, call lm_connection_open() first"); + return FALSE; + } + + lm_verbose ("Disconnecting from: %s:%d\n", + connection->server, connection->port); + + if (lm_connection_is_open (connection)) { + if (!connection_send (connection, "", -1, error)) { + no_errors = FALSE; } - if (connection->state == LM_CONNECTION_STATE_CLOSED) { - g_set_error (error, - LM_ERROR, - LM_ERROR_CONNECTION_NOT_OPEN, - "Connection is not open, call lm_connection_open() first"); - return FALSE; - } - - lm_verbose ("Disconnecting from: %s:%d\n", - connection->server, connection->port); - - if (lm_connection_is_open (connection)) { - if (!connection_send (connection, "", -1, error)) { - no_errors = FALSE; - } - - lm_old_socket_flush (connection->socket); - } - - connection_do_close (connection); - connection_signal_disconnect (connection, LM_DISCONNECT_REASON_OK); - - return no_errors; + lm_old_socket_flush (connection->socket); + } + + connection_do_close (connection); + connection_signal_disconnect (connection, LM_DISCONNECT_REASON_OK); + + return no_errors; } static void connection_sasl_auth_finished (LmSASL *sasl, - LmConnection *connection, - gboolean success, - const gchar *reason) + LmConnection *connection, + gboolean success, + const gchar *reason) { - if (!success) { - lm_verbose ("SASL authentication failed, closing connection\n"); - connection_call_auth_cb (connection, FALSE); - return; - } + if (!success) { + lm_verbose ("SASL authentication failed, closing connection\n"); + connection_call_auth_cb (connection, FALSE); + return; + } - connection_send_stream_header (connection); + connection_send_stream_header (connection); } /** @@ -1491,56 +1491,56 @@ **/ gboolean lm_connection_authenticate (LmConnection *connection, - const gchar *username, - const gchar *password, - const gchar *resource, - LmResultFunction function, - gpointer user_data, - GDestroyNotify notify, - GError **error) + const gchar *username, + const gchar *password, + const gchar *resource, + LmResultFunction function, + gpointer user_data, + GDestroyNotify notify, + GError **error) { - g_return_val_if_fail (connection != NULL, FALSE); - g_return_val_if_fail (username != NULL, FALSE); - g_return_val_if_fail (password != NULL, FALSE); - g_return_val_if_fail (resource != NULL, FALSE); + g_return_val_if_fail (connection != NULL, FALSE); + g_return_val_if_fail (username != NULL, FALSE); + g_return_val_if_fail (password != NULL, FALSE); + g_return_val_if_fail (resource != NULL, FALSE); - if (!lm_connection_is_open (connection)) { - g_set_error (error, - LM_ERROR, - LM_ERROR_CONNECTION_NOT_OPEN, - "Connection is not open, call lm_connection_open() first"); - return FALSE; - } + if (!lm_connection_is_open (connection)) { + g_set_error (error, + LM_ERROR, + LM_ERROR_CONNECTION_NOT_OPEN, + "Connection is not open, call lm_connection_open() first"); + return FALSE; + } - connection->state = LM_CONNECTION_STATE_AUTHENTICATING; - - connection->auth_cb = _lm_utils_new_callback (function, - user_data, - notify); + connection->state = LM_CONNECTION_STATE_AUTHENTICATING; + + connection->auth_cb = _lm_utils_new_callback (function, + user_data, + notify); - connection->resource = g_strdup (resource); - connection->effective_jid = g_strdup_printf ("%s/%s", - connection->jid, connection->resource); + connection->resource = g_strdup (resource); + connection->effective_jid = g_strdup_printf ("%s/%s", + connection->jid, connection->resource); - if (connection->use_sasl) { - lm_sasl_authenticate (connection->sasl, - username, password, - connection->server, - connection_sasl_auth_finished); + if (connection->use_sasl) { + lm_sasl_authenticate (connection->sasl, + username, password, + connection->server, + connection_sasl_auth_finished); - connection->features_cb = - lm_message_handler_new (connection_features_cb, - NULL, NULL); - lm_connection_register_message_handler (connection, - connection->features_cb, - LM_MESSAGE_TYPE_STREAM_FEATURES, - LM_HANDLER_PRIORITY_FIRST); + connection->features_cb = + lm_message_handler_new (connection_features_cb, + NULL, NULL); + lm_connection_register_message_handler (connection, + connection->features_cb, + LM_MESSAGE_TYPE_STREAM_FEATURES, + LM_HANDLER_PRIORITY_FIRST); - return TRUE; - } + return TRUE; + } - return connection_old_auth (connection, username, password, - resource, error); + return connection_old_auth (connection, username, password, + resource, error); } static gboolean @@ -1550,28 +1550,28 @@ const gchar *resource, GError **error) { - LmMessage *m; - AuthReqData *data; - LmMessageHandler *handler; - gboolean result; - + LmMessage *m; + AuthReqData *data; + LmMessageHandler *handler; + gboolean result; + - m = connection_create_auth_req_msg (username); - - data = g_new0 (AuthReqData, 1); - data->username = g_strdup (username); - data->password = g_strdup (password); - data->resource = g_strdup (resource); - - handler = lm_message_handler_new (connection_auth_req_reply, - data, - (GDestroyNotify) auth_req_data_free); - result = lm_connection_send_with_reply (connection, m, handler, error); - - lm_message_handler_unref (handler); - lm_message_unref (m); + m = connection_create_auth_req_msg (username); + + data = g_new0 (AuthReqData, 1); + data->username = g_strdup (username); + data->password = g_strdup (password); + data->resource = g_strdup (resource); + + handler = lm_message_handler_new (connection_auth_req_reply, + data, + (GDestroyNotify) auth_req_data_free); + result = lm_connection_send_with_reply (connection, m, handler, error); + + lm_message_handler_unref (handler); + lm_message_unref (m); - return result; + return result; } /** @@ -1588,45 +1588,45 @@ **/ gboolean lm_connection_authenticate_and_block (LmConnection *connection, - const gchar *username, - const gchar *password, - const gchar *resource, - GError **error) + const gchar *username, + const gchar *password, + const gchar *resource, + GError **error) { - gboolean result; + gboolean result; - result = lm_connection_authenticate (connection, username, password, - resource, NULL, NULL, NULL, error); + result = lm_connection_authenticate (connection, username, password, + resource, NULL, NULL, NULL, error); - if (!result) - return result; + if (!result) + return result; - while (lm_connection_get_state (connection) == LM_CONNECTION_STATE_AUTHENTICATING) { - if (g_main_context_pending (connection->context)) { - g_main_context_iteration (connection->context, TRUE); - } else { - /* Sleep for 1 millisecond */ - g_usleep (1000); - } - } + while (lm_connection_get_state (connection) == LM_CONNECTION_STATE_AUTHENTICATING) { + if (g_main_context_pending (connection->context)) { + g_main_context_iteration (connection->context, TRUE); + } else { + /* Sleep for 1 millisecond */ + g_usleep (1000); + } + } - switch (lm_connection_get_state (connection)) { - case LM_CONNECTION_STATE_AUTHENTICATED: - return TRUE; - break; - case LM_CONNECTION_STATE_OPEN: - g_set_error (error, - LM_ERROR, - LM_ERROR_AUTH_FAILED, - "Authentication failed"); - return FALSE; - break; - default: - g_assert_not_reached (); - break; - } + switch (lm_connection_get_state (connection)) { + case LM_CONNECTION_STATE_AUTHENTICATED: + return TRUE; + break; + case LM_CONNECTION_STATE_OPEN: + g_set_error (error, + LM_ERROR, + LM_ERROR_AUTH_FAILED, + "Authentication failed"); + return FALSE; + break; + default: + g_assert_not_reached (); + break; + } - return FALSE; + return FALSE; } /** @@ -1640,9 +1640,9 @@ guint lm_connection_get_keep_alive_rate (LmConnection *connection) { - g_return_val_if_fail (connection != NULL, 0); + g_return_val_if_fail (connection != NULL, 0); - return connection->keep_alive_rate; + return connection->keep_alive_rate; } /** @@ -1656,19 +1656,19 @@ void lm_connection_set_keep_alive_rate (LmConnection *connection, guint rate) { - g_return_if_fail (connection != NULL); + g_return_if_fail (connection != NULL); - connection_stop_keep_alive (connection); + connection_stop_keep_alive (connection); - if (rate == 0) { - return; - } + if (rate == 0) { + return; + } - connection->keep_alive_rate = rate; - - if (lm_connection_is_open (connection)) { - connection_start_keep_alive (connection); - } + connection->keep_alive_rate = rate; + + if (lm_connection_is_open (connection)) { + connection_start_keep_alive (connection); + } } /** @@ -1682,9 +1682,9 @@ gboolean lm_connection_is_open (LmConnection *connection) { - g_return_val_if_fail (connection != NULL, FALSE); - - return connection->state >= LM_CONNECTION_STATE_OPEN; + g_return_val_if_fail (connection != NULL, FALSE); + + return connection->state >= LM_CONNECTION_STATE_OPEN; } /** @@ -1698,9 +1698,9 @@ gboolean lm_connection_is_authenticated (LmConnection *connection) { - g_return_val_if_fail (connection != NULL, FALSE); + g_return_val_if_fail (connection != NULL, FALSE); - return connection->state >= LM_CONNECTION_STATE_AUTHENTICATED; + return connection->state >= LM_CONNECTION_STATE_AUTHENTICATED; } /** @@ -1714,9 +1714,9 @@ const gchar * lm_connection_get_server (LmConnection *connection) { - g_return_val_if_fail (connection != NULL, NULL); + g_return_val_if_fail (connection != NULL, NULL); - return connection->server; + return connection->server; } /** @@ -1730,17 +1730,17 @@ void lm_connection_set_server (LmConnection *connection, const gchar *server) { - g_return_if_fail (connection != NULL); - g_return_if_fail (server != NULL); - - if (lm_connection_is_open (connection)) { - g_warning ("Can't change server address while connected"); - return; - } - - g_free (connection->server); - connection->server = _lm_utils_hostname_to_punycode (server); - connection->use_srv = FALSE; + g_return_if_fail (connection != NULL); + g_return_if_fail (server != NULL); + + if (lm_connection_is_open (connection)) { + g_warning ("Can't change server address while connected"); + return; + } + + g_free (connection->server); + connection->server = _lm_utils_hostname_to_punycode (server); + connection->use_srv = FALSE; } /** @@ -1754,9 +1754,9 @@ const gchar * lm_connection_get_jid (LmConnection *connection) { - g_return_val_if_fail (connection != NULL, NULL); + g_return_val_if_fail (connection != NULL, NULL); - return connection->jid; + return connection->jid; } /** @@ -1771,9 +1771,9 @@ gchar * lm_connection_get_full_jid (LmConnection *connection) { - g_return_val_if_fail (connection != NULL, NULL); + g_return_val_if_fail (connection != NULL, NULL); - return connection->effective_jid; + return connection->effective_jid; } /** @@ -1786,15 +1786,15 @@ void lm_connection_set_jid (LmConnection *connection, const gchar *jid) { - g_return_if_fail (connection != NULL); + g_return_if_fail (connection != NULL); - if (lm_connection_is_open (connection)) { - g_warning ("Can't change JID while connected"); - return; - } + if (lm_connection_is_open (connection)) { + g_warning ("Can't change JID while connected"); + return; + } - g_free (connection->jid); - connection->jid = g_strdup (jid); + g_free (connection->jid); + connection->jid = g_strdup (jid); } /** @@ -1808,9 +1808,9 @@ guint lm_connection_get_port (LmConnection *connection) { - g_return_val_if_fail (connection != NULL, 0); + g_return_val_if_fail (connection != NULL, 0); - return connection->port; + return connection->port; } /** @@ -1823,14 +1823,14 @@ void lm_connection_set_port (LmConnection *connection, guint port) { - g_return_if_fail (connection != NULL); - - if (lm_connection_is_open (connection)) { - g_warning ("Can't change server port while connected"); - return; - } - - connection->port = port; + g_return_if_fail (connection != NULL); + + if (lm_connection_is_open (connection)) { + g_warning ("Can't change server port while connected"); + return; + } + + connection->port = port; } /** @@ -1844,9 +1844,9 @@ LmSSL * lm_connection_get_ssl (LmConnection *connection) { - g_return_val_if_fail (connection != NULL, NULL); - - return connection->ssl; + g_return_val_if_fail (connection != NULL, NULL); + + return connection->ssl; } /** @@ -1859,18 +1859,18 @@ void lm_connection_set_ssl (LmConnection *connection, LmSSL *ssl) { - g_return_if_fail (connection != NULL); - g_return_if_fail (lm_ssl_is_supported () == TRUE); + g_return_if_fail (connection != NULL); + g_return_if_fail (lm_ssl_is_supported () == TRUE); - if (connection->ssl) { - lm_ssl_unref (connection->ssl); - } + if (connection->ssl) { + lm_ssl_unref (connection->ssl); + } - if (ssl) { - connection->ssl = lm_ssl_ref (ssl); - } else { - connection->ssl = NULL; - } + if (ssl) { + connection->ssl = lm_ssl_ref (ssl); + } else { + connection->ssl = NULL; + } } /** @@ -1884,9 +1884,9 @@ LmProxy * lm_connection_get_proxy (LmConnection *connection) { - g_return_val_if_fail (connection != NULL, NULL); + g_return_val_if_fail (connection != NULL, NULL); - return connection->proxy; + return connection->proxy; } /** @@ -1900,21 +1900,21 @@ void lm_connection_set_proxy (LmConnection *connection, LmProxy *proxy) { - g_return_if_fail (connection != NULL); + g_return_if_fail (connection != NULL); - if (lm_connection_is_open (connection)) { - g_warning ("Can't change server proxy while connected"); - return; - } + if (lm_connection_is_open (connection)) { + g_warning ("Can't change server proxy while connected"); + return; + } - if (connection->proxy) { - lm_proxy_unref (connection->proxy); - connection->proxy = NULL; - } + if (connection->proxy) { + lm_proxy_unref (connection->proxy); + connection->proxy = NULL; + } - if (proxy && lm_proxy_get_type (proxy) != LM_PROXY_TYPE_NONE) { - connection->proxy = lm_proxy_ref (proxy); - } + if (proxy && lm_proxy_get_type (proxy) != LM_PROXY_TYPE_NONE) { + connection->proxy = lm_proxy_ref (proxy); + } } /** @@ -1929,25 +1929,25 @@ **/ gboolean lm_connection_send (LmConnection *connection, - LmMessage *message, - GError **error) + LmMessage *message, + GError **error) { - gchar *xml_str; - gchar *ch; - gboolean result; - - g_return_val_if_fail (connection != NULL, FALSE); - g_return_val_if_fail (message != NULL, FALSE); + gchar *xml_str; + gchar *ch; + gboolean result; + + g_return_val_if_fail (connection != NULL, FALSE); + g_return_val_if_fail (message != NULL, FALSE); - xml_str = lm_message_node_to_string (message->node); - if ((ch = strstr (xml_str, ""))) { - *ch = '\0'; - } - - result = connection_send (connection, xml_str, -1, error); - g_free (xml_str); + xml_str = lm_message_node_to_string (message->node); + if ((ch = strstr (xml_str, ""))) { + *ch = '\0'; + } + + result = connection_send (connection, xml_str, -1, error); + g_free (xml_str); - return result; + return result; } /** @@ -1963,28 +1963,28 @@ **/ gboolean lm_connection_send_with_reply (LmConnection *connection, - LmMessage *message, - LmMessageHandler *handler, - GError **error) + LmMessage *message, + LmMessageHandler *handler, + GError **error) { - gchar *id; - - g_return_val_if_fail (connection != NULL, FALSE); - g_return_val_if_fail (message != NULL, FALSE); - g_return_val_if_fail (handler != NULL, FALSE); + gchar *id; + + g_return_val_if_fail (connection != NULL, FALSE); + g_return_val_if_fail (message != NULL, FALSE); + g_return_val_if_fail (handler != NULL, FALSE); - if (lm_message_node_get_attribute (message->node, "id")) { - id = g_strdup (lm_message_node_get_attribute (message->node, - "id")); - } else { - id = _lm_utils_generate_id (); - lm_message_node_set_attributes (message->node, "id", id, NULL); - } - - g_hash_table_insert (connection->id_handlers, - id, lm_message_handler_ref (handler)); - - return lm_connection_send (connection, message, error); + if (lm_message_node_get_attribute (message->node, "id")) { + id = g_strdup (lm_message_node_get_attribute (message->node, + "id")); + } else { + id = _lm_utils_generate_id (); + lm_message_node_set_attributes (message->node, "id", id, NULL); + } + + g_hash_table_insert (connection->id_handlers, + id, lm_message_handler_ref (handler)); + + return lm_connection_send (connection, message, error); } /** @@ -1999,65 +1999,65 @@ **/ LmMessage * lm_connection_send_with_reply_and_block (LmConnection *connection, - LmMessage *message, - GError **error) + LmMessage *message, + GError **error) { - gchar *id; - LmMessage *reply = NULL; + gchar *id; + LmMessage *reply = NULL; - g_return_val_if_fail (connection != NULL, NULL); - g_return_val_if_fail (message != NULL, NULL); + g_return_val_if_fail (connection != NULL, NULL); + g_return_val_if_fail (message != NULL, NULL); - if (connection->state < LM_CONNECTION_STATE_OPENING) { - g_set_error (error, - LM_ERROR, - LM_ERROR_CONNECTION_NOT_OPEN, - "Connection is not open, call lm_connection_open() first"); - return FALSE; - } + if (connection->state < LM_CONNECTION_STATE_OPENING) { + g_set_error (error, + LM_ERROR, + LM_ERROR_CONNECTION_NOT_OPEN, + "Connection is not open, call lm_connection_open() first"); + return FALSE; + } - if (lm_message_node_get_attribute (message->node, "id")) { - id = g_strdup (lm_message_node_get_attribute (message->node, - "id")); - } else { - id = _lm_utils_generate_id (); - lm_message_node_set_attributes (message->node, "id", id, NULL); - } + if (lm_message_node_get_attribute (message->node, "id")) { + id = g_strdup (lm_message_node_get_attribute (message->node, + "id")); + } else { + id = _lm_utils_generate_id (); + lm_message_node_set_attributes (message->node, "id", id, NULL); + } - lm_message_queue_detach (connection->queue); + lm_message_queue_detach (connection->queue); - lm_connection_send (connection, message, error); + lm_connection_send (connection, message, error); - while (!reply) { - const gchar *m_id; - guint n; + while (!reply) { + const gchar *m_id; + guint n; - g_main_context_iteration (connection->context, TRUE); - - if (lm_message_queue_is_empty (connection->queue)) { - continue; - } + g_main_context_iteration (connection->context, TRUE); + + if (lm_message_queue_is_empty (connection->queue)) { + continue; + } - for (n = 0; n < lm_message_queue_get_length (connection->queue); n++) { - LmMessage *m; + for (n = 0; n < lm_message_queue_get_length (connection->queue); n++) { + LmMessage *m; - m = (LmMessage *) lm_message_queue_peek_nth (connection->queue, n); + m = (LmMessage *) lm_message_queue_peek_nth (connection->queue, n); - m_id = lm_message_node_get_attribute (m->node, "id"); - - if (m_id && strcmp (m_id, id) == 0) { - reply = m; - lm_message_queue_pop_nth (connection->queue, n); - break; - } - } - } + m_id = lm_message_node_get_attribute (m->node, "id"); + + if (m_id && strcmp (m_id, id) == 0) { + reply = m; + lm_message_queue_pop_nth (connection->queue, n); + break; + } + } + } - g_free (id); - lm_message_queue_attach (connection->queue, connection->context); + g_free (id); + lm_message_queue_attach (connection->queue, connection->context); - return reply; + return reply; } /** @@ -2072,23 +2072,23 @@ **/ void lm_connection_register_message_handler (LmConnection *connection, - LmMessageHandler *handler, - LmMessageType type, - LmHandlerPriority priority) + LmMessageHandler *handler, + LmMessageType type, + LmHandlerPriority priority) { - HandlerData *hd; - - g_return_if_fail (connection != NULL); - g_return_if_fail (handler != NULL); - g_return_if_fail (type != LM_MESSAGE_TYPE_UNKNOWN); + HandlerData *hd; + + g_return_if_fail (connection != NULL); + g_return_if_fail (handler != NULL); + g_return_if_fail (type != LM_MESSAGE_TYPE_UNKNOWN); - hd = g_new0 (HandlerData, 1); - hd->priority = priority; - hd->handler = lm_message_handler_ref (handler); + hd = g_new0 (HandlerData, 1); + hd->priority = priority; + hd->handler = lm_message_handler_ref (handler); - connection->handlers[type] = g_slist_insert_sorted (connection->handlers[type], - hd, - (GCompareFunc) connection_handler_compare_func); + connection->handlers[type] = g_slist_insert_sorted (connection->handlers[type], + hd, + (GCompareFunc) connection_handler_compare_func); } /** @@ -2102,26 +2102,26 @@ **/ void lm_connection_unregister_message_handler (LmConnection *connection, - LmMessageHandler *handler, - LmMessageType type) + LmMessageHandler *handler, + LmMessageType type) { - GSList *l; - - g_return_if_fail (connection != NULL); - g_return_if_fail (handler != NULL); - g_return_if_fail (type != LM_MESSAGE_TYPE_UNKNOWN); + GSList *l; + + g_return_if_fail (connection != NULL); + g_return_if_fail (handler != NULL); + g_return_if_fail (type != LM_MESSAGE_TYPE_UNKNOWN); - for (l = connection->handlers[type]; l; l = l->next) { - HandlerData *hd = (HandlerData *) l->data; - - if (handler == hd->handler) { - connection->handlers[type] = g_slist_remove_link (connection->handlers[type], l); - g_slist_free (l); - lm_message_handler_unref (hd->handler); - g_free (hd); - break; - } - } + for (l = connection->handlers[type]; l; l = l->next) { + HandlerData *hd = (HandlerData *) l->data; + + if (handler == hd->handler) { + connection->handlers[type] = g_slist_remove_link (connection->handlers[type], l); + g_slist_free (l); + lm_message_handler_unref (hd->handler); + g_free (hd); + break; + } + } } /** @@ -2135,23 +2135,23 @@ **/ void lm_connection_set_disconnect_function (LmConnection *connection, - LmDisconnectFunction function, - gpointer user_data, - GDestroyNotify notify) + LmDisconnectFunction function, + gpointer user_data, + GDestroyNotify notify) { - g_return_if_fail (connection != NULL); + g_return_if_fail (connection != NULL); - if (connection->disconnect_cb) { - _lm_utils_free_callback (connection->disconnect_cb); - } - - if (function) { - connection->disconnect_cb = _lm_utils_new_callback (function, - user_data, - notify); - } else { - connection->disconnect_cb = NULL; - } + if (connection->disconnect_cb) { + _lm_utils_free_callback (connection->disconnect_cb); + } + + if (function) { + connection->disconnect_cb = _lm_utils_new_callback (function, + user_data, + notify); + } else { + connection->disconnect_cb = NULL; + } } /** @@ -2167,13 +2167,13 @@ **/ gboolean lm_connection_send_raw (LmConnection *connection, - const gchar *str, - GError **error) + const gchar *str, + GError **error) { - g_return_val_if_fail (connection != NULL, FALSE); - g_return_val_if_fail (str != NULL, FALSE); + g_return_val_if_fail (connection != NULL, FALSE); + g_return_val_if_fail (str != NULL, FALSE); - return connection_send (connection, str, -1, error); + return connection_send (connection, str, -1, error); } /** * lm_connection_get_state: @@ -2186,10 +2186,10 @@ LmConnectionState lm_connection_get_state (LmConnection *connection) { - g_return_val_if_fail (connection != NULL, - LM_CONNECTION_STATE_CLOSED); + g_return_val_if_fail (connection != NULL, + LM_CONNECTION_STATE_CLOSED); - return connection->state; + return connection->state; } /** @@ -2203,7 +2203,7 @@ gchar * lm_connection_get_local_host (LmConnection *connection) { - return lm_old_socket_get_local_host (connection->socket); + return lm_old_socket_get_local_host (connection->socket); } /** @@ -2218,11 +2218,11 @@ LmConnection* lm_connection_ref (LmConnection *connection) { - g_return_val_if_fail (connection != NULL, NULL); - - connection->ref_count++; - - return connection; + g_return_val_if_fail (connection != NULL, NULL); + + connection->ref_count++; + + return connection; } /** @@ -2235,11 +2235,11 @@ void lm_connection_unref (LmConnection *connection) { - g_return_if_fail (connection != NULL); - - connection->ref_count--; - - if (connection->ref_count == 0) { - connection_free (connection); - } + g_return_if_fail (connection != NULL); + + connection->ref_count--; + + if (connection->ref_count == 0) { + connection_free (connection); + } } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-connection.h --- a/loudmouth/lm-connection.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-connection.h Wed Oct 08 13:11:02 2008 +0200 @@ -65,8 +65,8 @@ * The return type of an LmMessageHandler. This determines whether more message handlers should be called. */ typedef enum { - LM_HANDLER_RESULT_REMOVE_MESSAGE, - LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS + LM_HANDLER_RESULT_REMOVE_MESSAGE, + LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS } LmHandlerResult; /** @@ -78,9 +78,9 @@ * Since the handlers decide whether to stop the calling chain with there return values it's sometimes decirable to be able to set priority. For example a handler that only logs all incoming messages and then pass the message on to another handler wants to have priority %LM_HANDLER_PRIORITY_FIRST. An handler that should take all messages that wasn't handled by anything else would want to have priority %LM_HANDLER_PRIORITY_LAST. If several handlers have the same priority nothing can be said about the order the handlers will be called in. */ typedef enum { - LM_HANDLER_PRIORITY_LAST = 1, - LM_HANDLER_PRIORITY_NORMAL = 2, - LM_HANDLER_PRIORITY_FIRST = 3 + LM_HANDLER_PRIORITY_LAST = 1, + LM_HANDLER_PRIORITY_NORMAL = 2, + LM_HANDLER_PRIORITY_FIRST = 3 } LmHandlerPriority; /** @@ -93,13 +93,13 @@ * Sent with #LmDisconnectFunction to describe why a connection was closed. */ typedef enum { - LM_DISCONNECT_REASON_OK, - LM_DISCONNECT_REASON_PING_TIME_OUT, - LM_DISCONNECT_REASON_HUP, - LM_DISCONNECT_REASON_ERROR, - LM_DISCONNECT_REASON_RESOURCE_CONFLICT, - LM_DISCONNECT_REASON_INVALID_XML, - LM_DISCONNECT_REASON_UNKNOWN + LM_DISCONNECT_REASON_OK, + LM_DISCONNECT_REASON_PING_TIME_OUT, + LM_DISCONNECT_REASON_HUP, + LM_DISCONNECT_REASON_ERROR, + LM_DISCONNECT_REASON_RESOURCE_CONFLICT, + LM_DISCONNECT_REASON_INVALID_XML, + LM_DISCONNECT_REASON_UNKNOWN } LmDisconnectReason; /** @@ -113,11 +113,11 @@ * Describes the current state of an #LmConnection. */ typedef enum { - LM_CONNECTION_STATE_CLOSED, - LM_CONNECTION_STATE_OPENING, - LM_CONNECTION_STATE_OPEN, - LM_CONNECTION_STATE_AUTHENTICATING, - LM_CONNECTION_STATE_AUTHENTICATED + LM_CONNECTION_STATE_CLOSED, + LM_CONNECTION_STATE_OPENING, + LM_CONNECTION_STATE_OPEN, + LM_CONNECTION_STATE_AUTHENTICATING, + LM_CONNECTION_STATE_AUTHENTICATED } LmConnectionState; /** @@ -129,8 +129,8 @@ * Callback for informing if an asynchronous operation was successful. */ typedef void (* LmResultFunction) (LmConnection *connection, - gboolean success, - gpointer user_data); + gboolean success, + gpointer user_data); /** * LmDisconnectFunction: @@ -141,92 +141,92 @@ * Callback called when a connection is closed. */ typedef void (* LmDisconnectFunction) (LmConnection *connection, - LmDisconnectReason reason, - gpointer user_data); + LmDisconnectReason reason, + gpointer user_data); LmConnection *lm_connection_new (const gchar *server); LmConnection *lm_connection_new_with_context (const gchar *server, - GMainContext *context); + GMainContext *context); gboolean lm_connection_open (LmConnection *connection, - LmResultFunction function, - gpointer user_data, - GDestroyNotify notify, - GError **error); + LmResultFunction function, + gpointer user_data, + GDestroyNotify notify, + GError **error); gboolean lm_connection_open_and_block (LmConnection *connection, - GError **error); + GError **error); void lm_connection_cancel_open (LmConnection *connection); gboolean lm_connection_close (LmConnection *connection, - GError **error); + GError **error); gboolean lm_connection_authenticate (LmConnection *connection, - const gchar *username, - const gchar *password, - const gchar *resource, - LmResultFunction function, - gpointer user_data, - GDestroyNotify notify, - GError **error); + const gchar *username, + const gchar *password, + const gchar *resource, + LmResultFunction function, + gpointer user_data, + GDestroyNotify notify, + GError **error); gboolean lm_connection_authenticate_and_block (LmConnection *connection, - const gchar *username, - const gchar *password, - const gchar *resource, - GError **error); + const gchar *username, + const gchar *password, + const gchar *resource, + GError **error); guint lm_connection_get_keep_alive_rate (LmConnection *connection); void lm_connection_set_keep_alive_rate (LmConnection *connection, - guint rate); + guint rate); gboolean lm_connection_is_open (LmConnection *connection); gboolean lm_connection_is_authenticated (LmConnection *connection); const gchar * lm_connection_get_server (LmConnection *connection); void lm_connection_set_server (LmConnection *connection, - const gchar *server); + const gchar *server); void lm_connection_set_jid (LmConnection *connection, - const gchar *jid); + const gchar *jid); const gchar * lm_connection_get_jid (LmConnection *connection); gchar * lm_connection_get_full_jid (LmConnection *connection); guint lm_connection_get_port (LmConnection *connection); void lm_connection_set_port (LmConnection *connection, - guint port); + guint port); LmSSL * lm_connection_get_ssl (LmConnection *connection); void lm_connection_set_ssl (LmConnection *connection, - LmSSL *ssl); + LmSSL *ssl); LmProxy * lm_connection_get_proxy (LmConnection *connection); void lm_connection_set_proxy (LmConnection *connection, - LmProxy *proxy); + LmProxy *proxy); gboolean lm_connection_send (LmConnection *connection, - LmMessage *message, - GError **error); + LmMessage *message, + GError **error); gboolean lm_connection_send_with_reply (LmConnection *connection, - LmMessage *message, - LmMessageHandler *handler, - GError **error); + LmMessage *message, + LmMessageHandler *handler, + GError **error); LmMessage * lm_connection_send_with_reply_and_block (LmConnection *connection, - LmMessage *message, - GError **error); + LmMessage *message, + GError **error); void lm_connection_register_message_handler (LmConnection *connection, - LmMessageHandler *handler, - LmMessageType type, - LmHandlerPriority priority); + LmMessageHandler *handler, + LmMessageType type, + LmHandlerPriority priority); void lm_connection_unregister_message_handler (LmConnection *connection, - LmMessageHandler *handler, - LmMessageType type); + LmMessageHandler *handler, + LmMessageType type); void lm_connection_set_disconnect_function (LmConnection *connection, - LmDisconnectFunction function, - gpointer user_data, - GDestroyNotify notify); - + LmDisconnectFunction function, + gpointer user_data, + GDestroyNotify notify); + gboolean lm_connection_send_raw (LmConnection *connection, - const gchar *str, - GError **error); + const gchar *str, + GError **error); LmConnectionState lm_connection_get_state (LmConnection *connection); gchar * lm_connection_get_local_host (LmConnection *connection); LmConnection* lm_connection_ref (LmConnection *connection); diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-debug.c --- a/loudmouth/lm-debug.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-debug.c Wed Oct 08 13:11:02 2008 +0200 @@ -26,38 +26,38 @@ static gboolean initialized = FALSE; static const GDebugKey debug_keys[] = { - {"VERBOSE", LM_LOG_LEVEL_VERBOSE}, - {"NET", LM_LOG_LEVEL_NET}, - {"PARSER", LM_LOG_LEVEL_PARSER}, - {"SSL", LM_LOG_LEVEL_SSL}, - {"SASL", LM_LOG_LEVEL_SASL}, - {"ALL", LM_LOG_LEVEL_ALL} + {"VERBOSE", LM_LOG_LEVEL_VERBOSE}, + {"NET", LM_LOG_LEVEL_NET}, + {"PARSER", LM_LOG_LEVEL_PARSER}, + {"SSL", LM_LOG_LEVEL_SSL}, + {"SASL", LM_LOG_LEVEL_SASL}, + {"ALL", LM_LOG_LEVEL_ALL} }; #define NUM_DEBUG_KEYS (sizeof (debug_keys) / sizeof (GDebugKey)) static void debug_log_handler (const gchar *log_domain, - GLogLevelFlags log_level, - const gchar *message, - gpointer user_data) + GLogLevelFlags log_level, + const gchar *message, + gpointer user_data) { - if (debug_flags & log_level) { - if (log_level & LM_LOG_LEVEL_VERBOSE) { - g_print ("*** "); - } - else if (log_level & LM_LOG_LEVEL_PARSER) { - g_print ("LM-PARSER: "); - } - else if (log_level & LM_LOG_LEVEL_SASL) { - g_print ("LM-SASL: "); - } - else if (log_level & LM_LOG_LEVEL_SSL) { - g_print ("LM-SSL: "); - } - - g_print ("%s", message); - } + if (debug_flags & log_level) { + if (log_level & LM_LOG_LEVEL_VERBOSE) { + g_print ("*** "); + } + else if (log_level & LM_LOG_LEVEL_PARSER) { + g_print ("LM-PARSER: "); + } + else if (log_level & LM_LOG_LEVEL_SASL) { + g_print ("LM-SASL: "); + } + else if (log_level & LM_LOG_LEVEL_SSL) { + g_print ("LM-SSL: "); + } + + g_print ("%s", message); + } } /** @@ -68,22 +68,22 @@ void lm_debug_init (void) { - const gchar *env_lm_debug; + const gchar *env_lm_debug; - if (initialized) { - return; - } - - env_lm_debug = g_getenv ("LM_DEBUG"); - if (env_lm_debug) { - debug_flags = g_parse_debug_string (env_lm_debug, debug_keys, - NUM_DEBUG_KEYS); - } + if (initialized) { + return; + } + + env_lm_debug = g_getenv ("LM_DEBUG"); + if (env_lm_debug) { + debug_flags = g_parse_debug_string (env_lm_debug, debug_keys, + NUM_DEBUG_KEYS); + } - g_log_set_handler (LM_LOG_DOMAIN, LM_LOG_LEVEL_ALL, - debug_log_handler, NULL); + g_log_set_handler (LM_LOG_DOMAIN, LM_LOG_LEVEL_ALL, + debug_log_handler, NULL); - initialized = TRUE; + initialized = TRUE; } #else /* LM_NO_DEBUG */ diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-debug.h --- a/loudmouth/lm-debug.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-debug.h Wed Oct 08 13:11:02 2008 +0200 @@ -24,16 +24,16 @@ #include typedef enum { - LM_LOG_LEVEL_VERBOSE = 1 << (G_LOG_LEVEL_USER_SHIFT), - LM_LOG_LEVEL_NET = 1 << (G_LOG_LEVEL_USER_SHIFT + 1), - LM_LOG_LEVEL_PARSER = 1 << (G_LOG_LEVEL_USER_SHIFT + 2), - LM_LOG_LEVEL_SSL = 1 << (G_LOG_LEVEL_USER_SHIFT + 3), - LM_LOG_LEVEL_SASL = 1 << (G_LOG_LEVEL_USER_SHIFT + 4), - LM_LOG_LEVEL_ALL = (LM_LOG_LEVEL_NET | - LM_LOG_LEVEL_VERBOSE | - LM_LOG_LEVEL_PARSER | - LM_LOG_LEVEL_SSL | - LM_LOG_LEVEL_SASL) + LM_LOG_LEVEL_VERBOSE = 1 << (G_LOG_LEVEL_USER_SHIFT), + LM_LOG_LEVEL_NET = 1 << (G_LOG_LEVEL_USER_SHIFT + 1), + LM_LOG_LEVEL_PARSER = 1 << (G_LOG_LEVEL_USER_SHIFT + 2), + LM_LOG_LEVEL_SSL = 1 << (G_LOG_LEVEL_USER_SHIFT + 3), + LM_LOG_LEVEL_SASL = 1 << (G_LOG_LEVEL_USER_SHIFT + 4), + LM_LOG_LEVEL_ALL = (LM_LOG_LEVEL_NET | + LM_LOG_LEVEL_VERBOSE | + LM_LOG_LEVEL_PARSER | + LM_LOG_LEVEL_SSL | + LM_LOG_LEVEL_SASL) } LmLogLevelFlags; #ifndef LM_LOG_DOMAIN @@ -61,10 +61,10 @@ static void lm_verbose (const gchar *format, ...) { - va_list args; - va_start (args, format); - g_logv (LM_LOG_DOMAIN, LM_LOG_LEVEL_VERBOSE, format, args); - va_end (args); + va_list args; + va_start (args, format); + g_logv (LM_LOG_DOMAIN, LM_LOG_LEVEL_VERBOSE, format, args); + va_end (args); } # endif #endif diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-dummy.c --- a/loudmouth/lm-dummy.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-dummy.c Wed Oct 08 13:11:02 2008 +0200 @@ -27,29 +27,29 @@ typedef struct LmDummyPriv LmDummyPriv; struct LmDummyPriv { - gint my_prop; + gint my_prop; }; static void dummy_finalize (GObject *object); static void dummy_get_property (GObject *object, - guint param_id, - GValue *value, - GParamSpec *pspec); + guint param_id, + GValue *value, + GParamSpec *pspec); static void dummy_set_property (GObject *object, - guint param_id, - const GValue *value, - GParamSpec *pspec); + guint param_id, + const GValue *value, + GParamSpec *pspec); G_DEFINE_TYPE (LmDummy, lm_dummy, G_TYPE_OBJECT) enum { - PROP_0, - PROP_MY_PROP + PROP_0, + PROP_MY_PROP }; enum { - SIGNAL_NAME, - LAST_SIGNAL + SIGNAL_NAME, + LAST_SIGNAL }; static guint signals[LAST_SIGNAL] = { 0 }; @@ -57,89 +57,89 @@ static void lm_dummy_class_init (LmDummyClass *class) { - GObjectClass *object_class = G_OBJECT_CLASS (class); + GObjectClass *object_class = G_OBJECT_CLASS (class); - object_class->finalize = dummy_finalize; - object_class->get_property = dummy_get_property; - object_class->set_property = dummy_set_property; + object_class->finalize = dummy_finalize; + object_class->get_property = dummy_get_property; + object_class->set_property = dummy_set_property; - g_object_class_install_property (object_class, - PROP_MY_PROP, - g_param_spec_string ("my-prop", - "My Prop", - "My Property", - NULL, - G_PARAM_READWRITE)); - - signals[SIGNAL_NAME] = - g_signal_new ("signal-name", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST, - 0, - NULL, NULL, - lm_marshal_VOID__INT, - G_TYPE_NONE, - 1, G_TYPE_INT); - - g_type_class_add_private (object_class, sizeof (LmDummyPriv)); + g_object_class_install_property (object_class, + PROP_MY_PROP, + g_param_spec_string ("my-prop", + "My Prop", + "My Property", + NULL, + G_PARAM_READWRITE)); + + signals[SIGNAL_NAME] = + g_signal_new ("signal-name", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + lm_marshal_VOID__INT, + G_TYPE_NONE, + 1, G_TYPE_INT); + + g_type_class_add_private (object_class, sizeof (LmDummyPriv)); } static void lm_dummy_init (LmDummy *dummy) { - LmDummyPriv *priv; + LmDummyPriv *priv; - priv = GET_PRIV (dummy); + priv = GET_PRIV (dummy); } static void dummy_finalize (GObject *object) { - LmDummyPriv *priv; + LmDummyPriv *priv; - priv = GET_PRIV (object); + priv = GET_PRIV (object); - (G_OBJECT_CLASS (lm_dummy_parent_class)->finalize) (object); + (G_OBJECT_CLASS (lm_dummy_parent_class)->finalize) (object); } static void dummy_get_property (GObject *object, - guint param_id, - GValue *value, - GParamSpec *pspec) + guint param_id, + GValue *value, + GParamSpec *pspec) { - LmDummyPriv *priv; + LmDummyPriv *priv; - priv = GET_PRIV (object); + priv = GET_PRIV (object); - switch (param_id) { - case PROP_MY_PROP: - g_value_set_int (value, priv->my_prop); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); - break; - }; + switch (param_id) { + case PROP_MY_PROP: + g_value_set_int (value, priv->my_prop); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); + break; + }; } static void dummy_set_property (GObject *object, - guint param_id, - const GValue *value, - GParamSpec *pspec) + guint param_id, + const GValue *value, + GParamSpec *pspec) { - LmDummyPriv *priv; + LmDummyPriv *priv; - priv = GET_PRIV (object); + priv = GET_PRIV (object); - switch (param_id) { - case PROP_MY_PROP: - priv->my_prop = g_value_get_int (value); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); - break; - }; + switch (param_id) { + case PROP_MY_PROP: + priv->my_prop = g_value_get_int (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); + break; + }; } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-dummy.h --- a/loudmouth/lm-dummy.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-dummy.h Wed Oct 08 13:11:02 2008 +0200 @@ -36,19 +36,19 @@ typedef struct LmDummyClass LmDummyClass; struct LmDummy { - GObject parent; + GObject parent; }; struct LmDummyClass { - GObjectClass parent_class; - - /* */ - void (*initialize) (LmDummy *dummy, - const char *username, - const char *server, - const char *password); - void (*begin) (LmDummy *dummy); - void (*cancel) (LmDummy *dummy); + GObjectClass parent_class; + + /* */ + void (*initialize) (LmDummy *dummy, + const char *username, + const char *server, + const char *password); + void (*begin) (LmDummy *dummy); + void (*cancel) (LmDummy *dummy); }; GType lm_dummy_get_type (void); diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-error.c --- a/loudmouth/lm-error.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-error.c Wed Oct 08 13:11:02 2008 +0200 @@ -31,11 +31,11 @@ GQuark lm_error_quark (void) { - static GQuark q = 0; + static GQuark q = 0; - if (q == 0) { - q = g_quark_from_static_string ("lm-error-quark"); - } - - return q; + if (q == 0) { + q = g_quark_from_static_string ("lm-error-quark"); + } + + return q; } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-error.h --- a/loudmouth/lm-error.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-error.h Wed Oct 08 13:11:02 2008 +0200 @@ -45,10 +45,10 @@ * Describes the problem of the error. */ typedef enum { - LM_ERROR_CONNECTION_NOT_OPEN, - LM_ERROR_CONNECTION_OPEN, - LM_ERROR_AUTH_FAILED, - LM_ERROR_CONNECTION_FAILED + LM_ERROR_CONNECTION_NOT_OPEN, + LM_ERROR_CONNECTION_OPEN, + LM_ERROR_AUTH_FAILED, + LM_ERROR_CONNECTION_FAILED } LmError; GQuark lm_error_quark (void) G_GNUC_CONST; diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-feature-ping.c --- a/loudmouth/lm-feature-ping.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-feature-ping.c Wed Oct 08 13:11:02 2008 +0200 @@ -34,10 +34,10 @@ typedef struct LmFeaturePingPriv LmFeaturePingPriv; struct LmFeaturePingPriv { - LmConnection *connection; - guint keep_alive_rate; - GSource *keep_alive_source; - guint keep_alive_counter; + LmConnection *connection; + guint keep_alive_rate; + GSource *keep_alive_source; + guint keep_alive_counter; }; static void feature_ping_finalize (GObject *object); @@ -60,14 +60,14 @@ G_DEFINE_TYPE (LmFeaturePing, lm_feature_ping, G_TYPE_OBJECT) enum { - PROP_0, - PROP_CONNECTION, - PROP_RATE + PROP_0, + PROP_CONNECTION, + PROP_RATE }; enum { - TIMED_OUT, - LAST_SIGNAL + TIMED_OUT, + LAST_SIGNAL }; static guint signals[LAST_SIGNAL] = { 0 }; @@ -75,57 +75,57 @@ static void lm_feature_ping_class_init (LmFeaturePingClass *class) { - GObjectClass *object_class = G_OBJECT_CLASS (class); + GObjectClass *object_class = G_OBJECT_CLASS (class); - object_class->finalize = feature_ping_finalize; - object_class->get_property = feature_ping_get_property; - object_class->set_property = feature_ping_set_property; + object_class->finalize = feature_ping_finalize; + object_class->get_property = feature_ping_get_property; + object_class->set_property = feature_ping_set_property; - g_object_class_install_property (object_class, - PROP_CONNECTION, - g_param_spec_pointer ("connection", - "Connection", - "The LmConnection to use", - G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (object_class, + PROP_CONNECTION, + g_param_spec_pointer ("connection", + "Connection", + "The LmConnection to use", + G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); - g_object_class_install_property (object_class, - PROP_RATE, - g_param_spec_uint ("rate", - "Timeout Rate", - "Keep alive rate in seconds", - 0, G_MAXUINT, - 0, - G_PARAM_READWRITE)); + g_object_class_install_property (object_class, + PROP_RATE, + g_param_spec_uint ("rate", + "Timeout Rate", + "Keep alive rate in seconds", + 0, G_MAXUINT, + 0, + G_PARAM_READWRITE)); - signals[TIMED_OUT] = - g_signal_new ("timed-out", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST, - 0, - NULL, NULL, - lm_marshal_VOID__VOID, - G_TYPE_NONE, 0); - - g_type_class_add_private (object_class, sizeof (LmFeaturePingPriv)); + signals[TIMED_OUT] = + g_signal_new ("timed-out", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + lm_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + g_type_class_add_private (object_class, sizeof (LmFeaturePingPriv)); } static void lm_feature_ping_init (LmFeaturePing *feature_ping) { - LmFeaturePingPriv *priv; + LmFeaturePingPriv *priv; - priv = GET_PRIV (feature_ping); + priv = GET_PRIV (feature_ping); } static void feature_ping_finalize (GObject *object) { - LmFeaturePingPriv *priv; + LmFeaturePingPriv *priv; - priv = GET_PRIV (object); + priv = GET_PRIV (object); - (G_OBJECT_CLASS (lm_feature_ping_parent_class)->finalize) (object); + (G_OBJECT_CLASS (lm_feature_ping_parent_class)->finalize) (object); } static void @@ -134,18 +134,18 @@ GValue *value, GParamSpec *pspec) { - LmFeaturePingPriv *priv; + LmFeaturePingPriv *priv; - priv = GET_PRIV (object); + priv = GET_PRIV (object); - switch (param_id) { - case PROP_RATE: - g_value_set_uint (value, priv->keep_alive_rate); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); - break; - }; + switch (param_id) { + case PROP_RATE: + g_value_set_uint (value, priv->keep_alive_rate); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); + break; + }; } static void @@ -154,22 +154,22 @@ const GValue *value, GParamSpec *pspec) { - LmFeaturePingPriv *priv; + LmFeaturePingPriv *priv; - priv = GET_PRIV (object); + priv = GET_PRIV (object); - switch (param_id) { - case PROP_CONNECTION: - priv->connection = g_value_get_pointer (value); - break; - case PROP_RATE: - priv->keep_alive_rate = g_value_get_uint (value); - /* Restart the pings */ - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); - break; - }; + switch (param_id) { + case PROP_CONNECTION: + priv->connection = g_value_get_pointer (value); + break; + case PROP_RATE: + priv->keep_alive_rate = g_value_get_uint (value); + /* Restart the pings */ + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); + break; + }; } static LmHandlerResult @@ -178,105 +178,105 @@ LmMessage *m, gpointer user_data) { - LmFeaturePingPriv *priv; + LmFeaturePingPriv *priv; - priv = GET_PRIV (user_data); + priv = GET_PRIV (user_data); - priv->keep_alive_counter = 0; - - return LM_HANDLER_RESULT_REMOVE_MESSAGE; + priv->keep_alive_counter = 0; + + return LM_HANDLER_RESULT_REMOVE_MESSAGE; } static gboolean feature_ping_send_keep_alive (LmFeaturePing *fp) { - LmFeaturePingPriv *priv; - LmMessage *ping; - LmMessageNode *ping_node; - LmMessageHandler *keep_alive_handler; - gchar *server; + LmFeaturePingPriv *priv; + LmMessage *ping; + LmMessageNode *ping_node; + LmMessageHandler *keep_alive_handler; + gchar *server; - priv = GET_PRIV (fp); + priv = GET_PRIV (fp); - priv->keep_alive_counter++; - if (priv->keep_alive_counter > 3) { - g_signal_emit (fp, signals[TIMED_OUT], 0); - /* FIXME */ + priv->keep_alive_counter++; + if (priv->keep_alive_counter > 3) { + g_signal_emit (fp, signals[TIMED_OUT], 0); + /* FIXME */ #if 0 /* Should be moved to signal callback in LmConnection */ - connection_do_close (connection); - connection_signal_disconnect (connection, - LM_DISCONNECT_REASON_PING_TIME_OUT); + connection_do_close (connection); + connection_signal_disconnect (connection, + LM_DISCONNECT_REASON_PING_TIME_OUT); #endif - } + } - server = _lm_connection_get_server (priv->connection); - - ping = lm_message_new_with_sub_type (server, - LM_MESSAGE_TYPE_IQ, - LM_MESSAGE_SUB_TYPE_GET); + server = _lm_connection_get_server (priv->connection); + + ping = lm_message_new_with_sub_type (server, + LM_MESSAGE_TYPE_IQ, + LM_MESSAGE_SUB_TYPE_GET); - ping_node = lm_message_node_add_child (ping->node, "ping", NULL); + ping_node = lm_message_node_add_child (ping->node, "ping", NULL); - lm_message_node_set_attribute (ping_node, "xmlns", XMPP_NS_PING); + lm_message_node_set_attribute (ping_node, "xmlns", XMPP_NS_PING); - keep_alive_handler = - lm_message_handler_new (feature_ping_keep_alive_reply, - fp, - FALSE); + keep_alive_handler = + lm_message_handler_new (feature_ping_keep_alive_reply, + fp, + FALSE); - if (!lm_connection_send_with_reply (priv->connection, - ping, - keep_alive_handler, - NULL)) { - lm_verbose ("Error while sending XMPP ping!\n"); - } + if (!lm_connection_send_with_reply (priv->connection, + ping, + keep_alive_handler, + NULL)) { + lm_verbose ("Error while sending XMPP ping!\n"); + } - lm_message_handler_unref (keep_alive_handler); - lm_message_unref (ping); - g_free (server); + lm_message_handler_unref (keep_alive_handler); + lm_message_unref (ping); + g_free (server); - return TRUE; + return TRUE; } void lm_feature_ping_start (LmFeaturePing *fp) { - LmFeaturePingPriv *priv; + LmFeaturePingPriv *priv; - g_return_if_fail (LM_IS_FEATURE_PING (fp)); + g_return_if_fail (LM_IS_FEATURE_PING (fp)); - priv = GET_PRIV (fp); + priv = GET_PRIV (fp); - if (priv->keep_alive_source) { - lm_feature_ping_stop (fp); - } + if (priv->keep_alive_source) { + lm_feature_ping_stop (fp); + } - if (priv->keep_alive_rate > 0) { - priv->keep_alive_counter = 0; - priv->keep_alive_source = - lm_misc_add_timeout (_lm_connection_get_context (priv->connection), - priv->keep_alive_rate * 1000, - (GSourceFunc) feature_ping_send_keep_alive, - fp); - } + if (priv->keep_alive_rate > 0) { + priv->keep_alive_counter = 0; + priv->keep_alive_source = + lm_misc_add_timeout (_lm_connection_get_context (priv->connection), + priv->keep_alive_rate * 1000, + (GSourceFunc) feature_ping_send_keep_alive, + fp); + } } void lm_feature_ping_stop (LmFeaturePing *fp) { - LmFeaturePingPriv *priv; + LmFeaturePingPriv *priv; - g_return_if_fail (LM_IS_FEATURE_PING (fp)); + g_return_if_fail (LM_IS_FEATURE_PING (fp)); - priv = GET_PRIV (fp); + priv = GET_PRIV (fp); - if (priv->keep_alive_source) { - g_source_destroy (priv->keep_alive_source); - } + if (priv->keep_alive_source) { + g_source_destroy (priv->keep_alive_source); + } - priv->keep_alive_source = NULL; + priv->keep_alive_source = NULL; } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-feature-ping.h --- a/loudmouth/lm-feature-ping.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-feature-ping.h Wed Oct 08 13:11:02 2008 +0200 @@ -36,11 +36,11 @@ typedef struct LmFeaturePingClass LmFeaturePingClass; struct LmFeaturePing { - GObject parent; + GObject parent; }; struct LmFeaturePingClass { - GObjectClass parent_class; + GObjectClass parent_class; }; GType lm_feature_ping_get_type (void); diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-internals.h --- a/loudmouth/lm-internals.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-internals.h Wed Oct 08 13:11:02 2008 +0200 @@ -44,26 +44,26 @@ #endif /* G_OS_WIN32 */ typedef struct { - gpointer func; - gpointer user_data; - GDestroyNotify notify; + gpointer func; + gpointer user_data; + GDestroyNotify notify; } LmCallback; typedef struct { - LmConnection *connection; - LmOldSocket *socket; + LmConnection *connection; + LmOldSocket *socket; - /* struct to save resolved address */ - struct addrinfo *current_addr; - LmOldSocketT fd; - GIOChannel *io_channel; + /* struct to save resolved address */ + struct addrinfo *current_addr; + LmOldSocketT fd; + GIOChannel *io_channel; } LmConnectData; GMainContext * _lm_connection_get_context (LmConnection *conn); /* Need to free the return value */ gchar * _lm_connection_get_server (LmConnection *conn); gboolean _lm_old_socket_failed_with_error (LmConnectData *data, - int error); + int error); gboolean _lm_old_socket_failed (LmConnectData *data); void _lm_old_socket_succeeded (LmConnectData *data); gboolean @@ -103,8 +103,8 @@ void _lm_sock_shutdown (LmOldSocketT sock); void _lm_sock_close (LmOldSocketT sock); LmOldSocketT _lm_sock_makesocket (int af, - int type, - int protocol); + int type, + int protocol); int _lm_sock_connect (LmOldSocketT sock, const struct sockaddr *name, int namelen); diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-message-handler.c --- a/loudmouth/lm-message-handler.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-message-handler.c Wed Oct 08 13:11:02 2008 +0200 @@ -32,11 +32,11 @@ #include "lm-message-handler.h" struct LmMessageHandler { - gboolean valid; - gint ref_count; - LmHandleMessageFunction function; - gpointer user_data; - GDestroyNotify notify; + gboolean valid; + gint ref_count; + LmHandleMessageFunction function; + gpointer user_data; + GDestroyNotify notify; }; LmHandlerResult @@ -44,19 +44,19 @@ LmConnection *connection, LmMessage *message) { - g_return_val_if_fail (handler != NULL, + g_return_val_if_fail (handler != NULL, LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS); - if (!handler->valid) { - return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; - } + if (!handler->valid) { + return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; + } - if (handler->function) { - return (* handler->function) (handler, connection, - message, handler->user_data); - } + if (handler->function) { + return (* handler->function) (handler, connection, + message, handler->user_data); + } - return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; + return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; } /** @@ -78,23 +78,23 @@ gpointer user_data, GDestroyNotify notify) { - LmMessageHandler *handler; + LmMessageHandler *handler; - g_return_val_if_fail (function != NULL, NULL); + g_return_val_if_fail (function != NULL, NULL); - handler = g_new0 (LmMessageHandler, 1); + handler = g_new0 (LmMessageHandler, 1); - if (handler == NULL) { - return NULL; - } + if (handler == NULL) { + return NULL; + } - handler->valid = TRUE; - handler->ref_count = 1; - handler->function = function; - handler->user_data = user_data; - handler->notify = notify; + handler->valid = TRUE; + handler->ref_count = 1; + handler->function = function; + handler->user_data = user_data; + handler->notify = notify; - return handler; + return handler; } /** @@ -106,7 +106,7 @@ void lm_message_handler_invalidate (LmMessageHandler *handler) { - handler->valid = FALSE; + handler->valid = FALSE; } /** @@ -120,9 +120,9 @@ gboolean lm_message_handler_is_valid (LmMessageHandler *handler) { - g_return_val_if_fail (handler != NULL, FALSE); + g_return_val_if_fail (handler != NULL, FALSE); - return handler->valid; + return handler->valid; } /** @@ -136,11 +136,11 @@ LmMessageHandler * lm_message_handler_ref (LmMessageHandler *handler) { - g_return_val_if_fail (handler != NULL, NULL); + g_return_val_if_fail (handler != NULL, NULL); - handler->ref_count++; + handler->ref_count++; - return handler; + return handler; } /** @@ -153,15 +153,15 @@ void lm_message_handler_unref (LmMessageHandler *handler) { - g_return_if_fail (handler != NULL); + g_return_if_fail (handler != NULL); - handler->ref_count --; + handler->ref_count --; - if (handler->ref_count == 0) { - if (handler->notify) { - (* handler->notify) (handler->user_data); - } - g_free (handler); + if (handler->ref_count == 0) { + if (handler->notify) { + (* handler->notify) (handler->user_data); } + g_free (handler); + } } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-message-handler.h --- a/loudmouth/lm-message-handler.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-message-handler.h Wed Oct 08 13:11:02 2008 +0200 @@ -41,13 +41,13 @@ * Returns: #LM_HANDLER_RESULT_REMOVE_MESSAGE to indicate that message has been handled, otherwise #LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS. */ typedef LmHandlerResult (* LmHandleMessageFunction) (LmMessageHandler *handler, - LmConnection *connection, - LmMessage *message, - gpointer user_data); + LmConnection *connection, + LmMessage *message, + gpointer user_data); LmMessageHandler *lm_message_handler_new (LmHandleMessageFunction function, - gpointer user_data, - GDestroyNotify notify); + gpointer user_data, + GDestroyNotify notify); void lm_message_handler_invalidate (LmMessageHandler *handler); gboolean lm_message_handler_is_valid (LmMessageHandler *handler); LmMessageHandler *lm_message_handler_ref (LmMessageHandler *handler); diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-message-node.c --- a/loudmouth/lm-message-node.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-message-node.c Wed Oct 08 13:11:02 2008 +0200 @@ -31,8 +31,8 @@ #include "lm-message-node.h" typedef struct { - gchar *key; - gchar *value; + gchar *key; + gchar *value; } KeyValuePair; static void message_node_free (LmMessageNode *node); @@ -41,91 +41,91 @@ static void message_node_free (LmMessageNode *node) { - LmMessageNode *l; - GSList *list; + LmMessageNode *l; + GSList *list; - g_return_if_fail (node != NULL); + g_return_if_fail (node != NULL); - for (l = node->children; l;) { - LmMessageNode *next = l->next; + for (l = node->children; l;) { + LmMessageNode *next = l->next; - lm_message_node_unref (l); - l = next; - } + lm_message_node_unref (l); + l = next; + } - g_free (node->name); - g_free (node->value); + g_free (node->name); + g_free (node->value); - for (list = node->attributes; list; list = list->next) { - KeyValuePair *kvp = (KeyValuePair *) list->data; + for (list = node->attributes; list; list = list->next) { + KeyValuePair *kvp = (KeyValuePair *) list->data; - g_free (kvp->key); - g_free (kvp->value); - g_free (kvp); - } + g_free (kvp->key); + g_free (kvp->value); + g_free (kvp); + } - g_slist_free (node->attributes); - g_free (node); + g_slist_free (node->attributes); + g_free (node); } static LmMessageNode * message_node_last_child (LmMessageNode *node) { - LmMessageNode *l; + LmMessageNode *l; - g_return_val_if_fail (node != NULL, NULL); + g_return_val_if_fail (node != NULL, NULL); - if (!node->children) { - return NULL; - } + if (!node->children) { + return NULL; + } - l = node->children; + l = node->children; - while (l->next) { - l = l->next; - } + while (l->next) { + l = l->next; + } - return l; + return l; } LmMessageNode * _lm_message_node_new (const gchar *name) { - LmMessageNode *node; + LmMessageNode *node; - node = g_new0 (LmMessageNode, 1); + node = g_new0 (LmMessageNode, 1); - node->name = g_strdup (name); - node->value = NULL; - node->raw_mode = FALSE; - node->attributes = NULL; - node->next = NULL; - node->prev = NULL; - node->parent = NULL; - node->children = NULL; + node->name = g_strdup (name); + node->value = NULL; + node->raw_mode = FALSE; + node->attributes = NULL; + node->next = NULL; + node->prev = NULL; + node->parent = NULL; + node->children = NULL; - node->ref_count = 1; + node->ref_count = 1; - return node; + return node; } void _lm_message_node_add_child_node (LmMessageNode *node, LmMessageNode *child) { - LmMessageNode *prev; - - g_return_if_fail (node != NULL); + LmMessageNode *prev; + + g_return_if_fail (node != NULL); - prev = message_node_last_child (node); - lm_message_node_ref (child); + prev = message_node_last_child (node); + lm_message_node_ref (child); - if (prev) { - prev->next = child; - child->prev = prev; - } else { - node->children = child; - } + if (prev) { + prev->next = child; + child->prev = prev; + } else { + node->children = child; + } - child->parent = node; + child->parent = node; } /** @@ -139,9 +139,9 @@ const gchar * lm_message_node_get_value (LmMessageNode *node) { - g_return_val_if_fail (node != NULL, NULL); - - return node->value; + g_return_val_if_fail (node != NULL, NULL); + + return node->value; } /** @@ -154,16 +154,16 @@ void lm_message_node_set_value (LmMessageNode *node, const gchar *value) { - g_return_if_fail (node != NULL); + g_return_if_fail (node != NULL); - g_free (node->value); - - if (!value) { - node->value = NULL; - return; - } + g_free (node->value); + + if (!value) { + node->value = NULL; + return; + } - node->value = g_strdup (value); + node->value = g_strdup (value); } /** @@ -178,21 +178,21 @@ **/ LmMessageNode * lm_message_node_add_child (LmMessageNode *node, - const gchar *name, - const gchar *value) + const gchar *name, + const gchar *value) { - LmMessageNode *child; - - g_return_val_if_fail (node != NULL, NULL); - g_return_val_if_fail (name != NULL, NULL); + LmMessageNode *child; + + g_return_val_if_fail (node != NULL, NULL); + g_return_val_if_fail (name != NULL, NULL); - child = _lm_message_node_new (name); + child = _lm_message_node_new (name); - lm_message_node_set_value (child, value); - _lm_message_node_add_child_node (node, child); - lm_message_node_unref (child); + lm_message_node_set_value (child, value); + _lm_message_node_add_child_node (node, child); + lm_message_node_unref (child); - return child; + return child; } /** @@ -206,25 +206,25 @@ **/ void lm_message_node_set_attributes (LmMessageNode *node, - const gchar *name, - ...) + const gchar *name, + ...) { - va_list args; - - g_return_if_fail (node != NULL); + va_list args; + + g_return_if_fail (node != NULL); - for (va_start (args, name); - name; - name = (const gchar *) va_arg (args, gpointer)) { - const gchar *value; + for (va_start (args, name); + name; + name = (const gchar *) va_arg (args, gpointer)) { + const gchar *value; - value = (const gchar *) va_arg (args, gpointer); + value = (const gchar *) va_arg (args, gpointer); - lm_message_node_set_attribute (node, name, value); - - } + lm_message_node_set_attribute (node, name, value); + + } - va_end (args); + va_end (args); } /** @@ -237,36 +237,36 @@ **/ void lm_message_node_set_attribute (LmMessageNode *node, - const gchar *name, - const gchar *value) + const gchar *name, + const gchar *value) { - gboolean found = FALSE; - GSList *l; + gboolean found = FALSE; + GSList *l; - g_return_if_fail (node != NULL); - g_return_if_fail (name != NULL); - g_return_if_fail (value != NULL); + g_return_if_fail (node != NULL); + g_return_if_fail (name != NULL); + g_return_if_fail (value != NULL); - for (l = node->attributes; l; l = l->next) { - KeyValuePair *kvp = (KeyValuePair *) l->data; + for (l = node->attributes; l; l = l->next) { + KeyValuePair *kvp = (KeyValuePair *) l->data; - if (strcmp (kvp->key, name) == 0) { - g_free (kvp->value); - kvp->value = g_strdup (value); - found = TRUE; - break; - } - } - - if (!found) { - KeyValuePair *kvp; - - kvp = g_new0 (KeyValuePair, 1); - kvp->key = g_strdup (name); - kvp->value = g_strdup (value); - - node->attributes = g_slist_prepend (node->attributes, kvp); - } + if (strcmp (kvp->key, name) == 0) { + g_free (kvp->value); + kvp->value = g_strdup (value); + found = TRUE; + break; + } + } + + if (!found) { + KeyValuePair *kvp; + + kvp = g_new0 (KeyValuePair, 1); + kvp->key = g_strdup (name); + kvp->value = g_strdup (value); + + node->attributes = g_slist_prepend (node->attributes, kvp); + } } /** @@ -281,21 +281,21 @@ const gchar * lm_message_node_get_attribute (LmMessageNode *node, const gchar *name) { - GSList *l; - const gchar *ret_val = NULL; + GSList *l; + const gchar *ret_val = NULL; - g_return_val_if_fail (node != NULL, NULL); - g_return_val_if_fail (name != NULL, NULL); + g_return_val_if_fail (node != NULL, NULL); + g_return_val_if_fail (name != NULL, NULL); - for (l = node->attributes; l; l = l->next) { - KeyValuePair *kvp = (KeyValuePair *) l->data; + for (l = node->attributes; l; l = l->next) { + KeyValuePair *kvp = (KeyValuePair *) l->data; - if (strcmp (kvp->key, name) == 0) { - ret_val = kvp->value; - } + if (strcmp (kvp->key, name) == 0) { + ret_val = kvp->value; } + } - return ret_val; + return ret_val; } /** @@ -311,18 +311,18 @@ LmMessageNode * lm_message_node_get_child (LmMessageNode *node, const gchar *child_name) { - LmMessageNode *l; + LmMessageNode *l; - g_return_val_if_fail (node != NULL, NULL); - g_return_val_if_fail (child_name != NULL, NULL); + g_return_val_if_fail (node != NULL, NULL); + g_return_val_if_fail (child_name != NULL, NULL); - for (l = node->children; l; l = l->next) { - if (strcmp (l->name, child_name) == 0) { - return l; - } - } + for (l = node->children; l; l = l->next) { + if (strcmp (l->name, child_name) == 0) { + return l; + } + } - return NULL; + return NULL; } /** @@ -337,27 +337,27 @@ **/ LmMessageNode * lm_message_node_find_child (LmMessageNode *node, - const gchar *child_name) + const gchar *child_name) { - LmMessageNode *l; - LmMessageNode *ret_val = NULL; + LmMessageNode *l; + LmMessageNode *ret_val = NULL; - g_return_val_if_fail (node != NULL, NULL); - g_return_val_if_fail (child_name != NULL, NULL); + g_return_val_if_fail (node != NULL, NULL); + g_return_val_if_fail (child_name != NULL, NULL); - for (l = node->children; l; l = l->next) { - if (strcmp (l->name, child_name) == 0) { - return l; - } - if (l->children) { - ret_val = lm_message_node_find_child (l, child_name); - if (ret_val) { - return ret_val; - } - } + for (l = node->children; l; l = l->next) { + if (strcmp (l->name, child_name) == 0) { + return l; } + if (l->children) { + ret_val = lm_message_node_find_child (l, child_name); + if (ret_val) { + return ret_val; + } + } + } - return NULL; + return NULL; } /** @@ -371,9 +371,9 @@ gboolean lm_message_node_get_raw_mode (LmMessageNode *node) { - g_return_val_if_fail (node != NULL, FALSE); + g_return_val_if_fail (node != NULL, FALSE); - return node->raw_mode; + return node->raw_mode; } /** @@ -386,9 +386,9 @@ void lm_message_node_set_raw_mode (LmMessageNode *node, gboolean raw_mode) { - g_return_if_fail (node != NULL); + g_return_if_fail (node != NULL); - node->raw_mode = raw_mode; + node->raw_mode = raw_mode; } /** @@ -402,11 +402,11 @@ LmMessageNode * lm_message_node_ref (LmMessageNode *node) { - g_return_val_if_fail (node != NULL, NULL); - - node->ref_count++; + g_return_val_if_fail (node != NULL, NULL); + + node->ref_count++; - return node; + return node; } /** @@ -422,13 +422,13 @@ void lm_message_node_unref (LmMessageNode *node) { - g_return_if_fail (node != NULL); - - node->ref_count--; - - if (node->ref_count == 0) { - message_node_free (node); - } + g_return_if_fail (node != NULL); + + node->ref_count--; + + if (node->ref_count == 0) { + message_node_free (node); + } } /** @@ -444,58 +444,58 @@ gchar * lm_message_node_to_string (LmMessageNode *node) { - GString *ret; - GSList *l; - LmMessageNode *child; + GString *ret; + GSList *l; + LmMessageNode *child; - g_return_val_if_fail (node != NULL, NULL); - - if (node->name == NULL) { - return g_strdup (""); - } - - ret = g_string_new ("<"); - g_string_append (ret, node->name); - - for (l = node->attributes; l; l = l->next) { - KeyValuePair *kvp = (KeyValuePair *) l->data; + g_return_val_if_fail (node != NULL, NULL); + + if (node->name == NULL) { + return g_strdup (""); + } + + ret = g_string_new ("<"); + g_string_append (ret, node->name); + + for (l = node->attributes; l; l = l->next) { + KeyValuePair *kvp = (KeyValuePair *) l->data; - if (node->raw_mode == FALSE) { - gchar *escaped; + if (node->raw_mode == FALSE) { + gchar *escaped; - escaped = g_markup_escape_text (kvp->value, -1); - g_string_append_printf (ret, " %s=\"%s\"", - kvp->key, escaped); - g_free (escaped); - } else { - g_string_append_printf (ret, " %s=\"%s\"", - kvp->key, kvp->value); - } - - } - - g_string_append_c (ret, '>'); - - if (node->value) { - gchar *tmp; + escaped = g_markup_escape_text (kvp->value, -1); + g_string_append_printf (ret, " %s=\"%s\"", + kvp->key, escaped); + g_free (escaped); + } else { + g_string_append_printf (ret, " %s=\"%s\"", + kvp->key, kvp->value); + } + + } + + g_string_append_c (ret, '>'); + + if (node->value) { + gchar *tmp; - if (node->raw_mode == FALSE) { - tmp = g_markup_escape_text (node->value, -1); - g_string_append (ret, tmp); - g_free (tmp); - } else { - g_string_append (ret, node->value); - } - } + if (node->raw_mode == FALSE) { + tmp = g_markup_escape_text (node->value, -1); + g_string_append (ret, tmp); + g_free (tmp); + } else { + g_string_append (ret, node->value); + } + } - for (child = node->children; child; child = child->next) { - gchar *child_str = lm_message_node_to_string (child); - g_string_append_c (ret, ' '); - g_string_append (ret, child_str); - g_free (child_str); - } + for (child = node->children; child; child = child->next) { + gchar *child_str = lm_message_node_to_string (child); + g_string_append_c (ret, ' '); + g_string_append (ret, child_str); + g_free (child_str); + } - g_string_append_printf (ret, "\n", node->name); - - return g_string_free (ret, FALSE); + g_string_append_printf (ret, "\n", node->name); + + return g_string_free (ret, FALSE); } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-message-node.h --- a/loudmouth/lm-message-node.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-message-node.h Wed Oct 08 13:11:02 2008 +0200 @@ -44,41 +44,41 @@ typedef struct _LmMessageNode LmMessageNode; struct _LmMessageNode { - gchar *name; - gchar *value; - gboolean raw_mode; + gchar *name; + gchar *value; + gboolean raw_mode; - LmMessageNode *next; - LmMessageNode *prev; - LmMessageNode *parent; - LmMessageNode *children; + LmMessageNode *next; + LmMessageNode *prev; + LmMessageNode *parent; + LmMessageNode *children; - /* < private > */ - GSList *attributes; - gint ref_count; + /* < private > */ + GSList *attributes; + gint ref_count; }; const gchar * lm_message_node_get_value (LmMessageNode *node); void lm_message_node_set_value (LmMessageNode *node, - const gchar *value); + const gchar *value); LmMessageNode *lm_message_node_add_child (LmMessageNode *node, - const gchar *name, - const gchar *value); + const gchar *name, + const gchar *value); void lm_message_node_set_attributes (LmMessageNode *node, - const gchar *name, - ...); + const gchar *name, + ...); void lm_message_node_set_attribute (LmMessageNode *node, - const gchar *name, - const gchar *value); + const gchar *name, + const gchar *value); const gchar * lm_message_node_get_attribute (LmMessageNode *node, - const gchar *name); + const gchar *name); LmMessageNode *lm_message_node_get_child (LmMessageNode *node, - const gchar *child_name); + const gchar *child_name); LmMessageNode *lm_message_node_find_child (LmMessageNode *node, - const gchar *child_name); + const gchar *child_name); gboolean lm_message_node_get_raw_mode (LmMessageNode *node); void lm_message_node_set_raw_mode (LmMessageNode *node, - gboolean raw_mode); + gboolean raw_mode); LmMessageNode *lm_message_node_ref (LmMessageNode *node); void lm_message_node_unref (LmMessageNode *node); gchar * lm_message_node_to_string (LmMessageNode *node); diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-message-queue.c --- a/loudmouth/lm-message-queue.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-message-queue.c Wed Oct 08 13:11:02 2008 +0200 @@ -23,205 +23,205 @@ #include "lm-message-queue.h" struct _LmMessageQueue { - GQueue *messages; + GQueue *messages; - GMainContext *context; - GSource *source; + GMainContext *context; + GSource *source; - LmMessageQueueCallback callback; - gpointer user_data; + LmMessageQueueCallback callback; + gpointer user_data; - gint ref_count; + gint ref_count; }; typedef struct { - GSource source; - LmMessageQueue *queue; + GSource source; + LmMessageQueue *queue; } MessageQueueSource; static void message_queue_free (LmMessageQueue *queue); static gboolean message_queue_prepare_func (GSource *source, - gint *timeout); + gint *timeout); static gboolean message_queue_check_func (GSource *source); static gboolean message_queue_dispatch_func (GSource *source, - GSourceFunc callback, - gpointer user_data); + GSourceFunc callback, + gpointer user_data); static GSourceFuncs source_funcs = { - message_queue_prepare_func, - message_queue_check_func, - message_queue_dispatch_func, - NULL + message_queue_prepare_func, + message_queue_check_func, + message_queue_dispatch_func, + NULL }; static void foreach_free_message (LmMessage *m, gpointer user_data) { - lm_message_unref (m); + lm_message_unref (m); } static void message_queue_free (LmMessageQueue *queue) { - lm_message_queue_detach (queue); - - g_queue_foreach (queue->messages, (GFunc) foreach_free_message, NULL); - g_queue_free (queue->messages); + lm_message_queue_detach (queue); + + g_queue_foreach (queue->messages, (GFunc) foreach_free_message, NULL); + g_queue_free (queue->messages); - g_free (queue); + g_free (queue); } static gboolean message_queue_prepare_func (GSource *source, gint *timeout) { - LmMessageQueue *queue; + LmMessageQueue *queue; - queue = ((MessageQueueSource *)source)->queue; + queue = ((MessageQueueSource *)source)->queue; - return !g_queue_is_empty (queue->messages); + return !g_queue_is_empty (queue->messages); } static gboolean message_queue_check_func (GSource *source) { - return FALSE; + return FALSE; } static gboolean message_queue_dispatch_func (GSource *source, - GSourceFunc callback, - gpointer user_data) + GSourceFunc callback, + gpointer user_data) { - LmMessageQueue *queue; + LmMessageQueue *queue; - queue = ((MessageQueueSource *)source)->queue; + queue = ((MessageQueueSource *)source)->queue; - if (queue->callback) { - (queue->callback) (queue, queue->user_data); - } + if (queue->callback) { + (queue->callback) (queue, queue->user_data); + } - return TRUE; + return TRUE; } LmMessageQueue * lm_message_queue_new (LmMessageQueueCallback callback, - gpointer user_data) + gpointer user_data) { - LmMessageQueue *queue; + LmMessageQueue *queue; - queue = g_new0 (LmMessageQueue, 1); + queue = g_new0 (LmMessageQueue, 1); - queue->messages = g_queue_new (); - queue->context = NULL; - queue->source = NULL; - queue->ref_count = 1; + queue->messages = g_queue_new (); + queue->context = NULL; + queue->source = NULL; + queue->ref_count = 1; - queue->callback = callback; - queue->user_data = user_data; + queue->callback = callback; + queue->user_data = user_data; - return queue; + return queue; } void lm_message_queue_attach (LmMessageQueue *queue, GMainContext *context) { - GSource *source; + GSource *source; - if (queue->source) { - if (queue->context == context) { - /* Already attached */ - return; - } - lm_message_queue_detach (queue); - } + if (queue->source) { + if (queue->context == context) { + /* Already attached */ + return; + } + lm_message_queue_detach (queue); + } - if (context) { - queue->context = g_main_context_ref (context); - } - - source = g_source_new (&source_funcs, sizeof (MessageQueueSource)); - ((MessageQueueSource *)source)->queue = queue; - queue->source = source; + if (context) { + queue->context = g_main_context_ref (context); + } + + source = g_source_new (&source_funcs, sizeof (MessageQueueSource)); + ((MessageQueueSource *)source)->queue = queue; + queue->source = source; - g_source_attach (source, queue->context); + g_source_attach (source, queue->context); } void lm_message_queue_detach (LmMessageQueue *queue) { - if (queue->source) { - g_source_destroy (queue->source); - g_source_unref (queue->source); - } + if (queue->source) { + g_source_destroy (queue->source); + g_source_unref (queue->source); + } - if (queue->context) { - g_main_context_unref (queue->context); - } + if (queue->context) { + g_main_context_unref (queue->context); + } - queue->source = NULL; - queue->context = NULL; + queue->source = NULL; + queue->context = NULL; } void lm_message_queue_push_tail (LmMessageQueue *queue, LmMessage *m) { - g_return_if_fail (queue != NULL); - g_return_if_fail (m != NULL); + g_return_if_fail (queue != NULL); + g_return_if_fail (m != NULL); - g_queue_push_tail (queue->messages, m); + g_queue_push_tail (queue->messages, m); } LmMessage * lm_message_queue_peek_nth (LmMessageQueue *queue, guint n) { - g_return_val_if_fail (queue != NULL, NULL); + g_return_val_if_fail (queue != NULL, NULL); - return (LmMessage *) g_queue_peek_nth (queue->messages, n); + return (LmMessage *) g_queue_peek_nth (queue->messages, n); } LmMessage * lm_message_queue_pop_nth (LmMessageQueue *queue, guint n) { - g_return_val_if_fail (queue != NULL, NULL); + g_return_val_if_fail (queue != NULL, NULL); - return (LmMessage *) g_queue_pop_nth (queue->messages, n); + return (LmMessage *) g_queue_pop_nth (queue->messages, n); } guint lm_message_queue_get_length (LmMessageQueue *queue) { - g_return_val_if_fail (queue != NULL, 0); + g_return_val_if_fail (queue != NULL, 0); - return g_queue_get_length (queue->messages); + return g_queue_get_length (queue->messages); } gboolean lm_message_queue_is_empty (LmMessageQueue *queue) { - g_return_val_if_fail (queue != NULL, TRUE); + g_return_val_if_fail (queue != NULL, TRUE); - return g_queue_is_empty (queue->messages); + return g_queue_is_empty (queue->messages); } LmMessageQueue * lm_message_queue_ref (LmMessageQueue *queue) { - g_return_val_if_fail (queue != NULL, NULL); + g_return_val_if_fail (queue != NULL, NULL); - queue->ref_count++; + queue->ref_count++; - return queue; + return queue; } void lm_message_queue_unref (LmMessageQueue *queue) { - g_return_if_fail (queue != NULL); + g_return_if_fail (queue != NULL); - queue->ref_count--; + queue->ref_count--; - if (queue->ref_count <= 0) { - message_queue_free (queue); - } + if (queue->ref_count <= 0) { + message_queue_free (queue); + } } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-message-queue.h --- a/loudmouth/lm-message-queue.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-message-queue.h Wed Oct 08 13:11:02 2008 +0200 @@ -27,20 +27,20 @@ typedef struct _LmMessageQueue LmMessageQueue; typedef void (* LmMessageQueueCallback) (LmMessageQueue *queue, - gpointer user_data); + gpointer user_data); LmMessageQueue * lm_message_queue_new (LmMessageQueueCallback func, - gpointer data); + gpointer data); void lm_message_queue_attach (LmMessageQueue *queue, - GMainContext *context); + GMainContext *context); void lm_message_queue_detach (LmMessageQueue *queue); void lm_message_queue_push_tail (LmMessageQueue *queue, - LmMessage *m); + LmMessage *m); LmMessage * lm_message_queue_peek_nth (LmMessageQueue *queue, - guint n); + guint n); LmMessage * lm_message_queue_pop_nth (LmMessageQueue *queue, - guint n); + guint n); guint lm_message_queue_get_length (LmMessageQueue *queue); gboolean lm_message_queue_is_empty (LmMessageQueue *queue); diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-message.c --- a/loudmouth/lm-message.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-message.c Wed Oct 08 13:11:02 2008 +0200 @@ -36,172 +36,172 @@ static struct TypeNames { - LmMessageType type; - const gchar *name; + LmMessageType type; + const gchar *name; } type_names[] = { - { LM_MESSAGE_TYPE_MESSAGE, "message" }, - { LM_MESSAGE_TYPE_PRESENCE, "presence" }, - { LM_MESSAGE_TYPE_IQ, "iq" }, - { LM_MESSAGE_TYPE_STREAM, "stream:stream" }, - { LM_MESSAGE_TYPE_STREAM_FEATURES, "stream:features" }, - { LM_MESSAGE_TYPE_STREAM_ERROR, "stream:error" }, - { LM_MESSAGE_TYPE_AUTH, "auth" }, - { LM_MESSAGE_TYPE_CHALLENGE, "challenge" }, - { LM_MESSAGE_TYPE_RESPONSE, "response" }, - { LM_MESSAGE_TYPE_SUCCESS, "success" }, - { LM_MESSAGE_TYPE_FAILURE, "failure" }, - { LM_MESSAGE_TYPE_PROCEED, "proceed" }, - { LM_MESSAGE_TYPE_STARTTLS, "starttls" }, - { LM_MESSAGE_TYPE_UNKNOWN, NULL } + { LM_MESSAGE_TYPE_MESSAGE, "message" }, + { LM_MESSAGE_TYPE_PRESENCE, "presence" }, + { LM_MESSAGE_TYPE_IQ, "iq" }, + { LM_MESSAGE_TYPE_STREAM, "stream:stream" }, + { LM_MESSAGE_TYPE_STREAM_FEATURES, "stream:features" }, + { LM_MESSAGE_TYPE_STREAM_ERROR, "stream:error" }, + { LM_MESSAGE_TYPE_AUTH, "auth" }, + { LM_MESSAGE_TYPE_CHALLENGE, "challenge" }, + { LM_MESSAGE_TYPE_RESPONSE, "response" }, + { LM_MESSAGE_TYPE_SUCCESS, "success" }, + { LM_MESSAGE_TYPE_FAILURE, "failure" }, + { LM_MESSAGE_TYPE_PROCEED, "proceed" }, + { LM_MESSAGE_TYPE_STARTTLS, "starttls" }, + { LM_MESSAGE_TYPE_UNKNOWN, NULL } }; static struct SubTypeNames { - LmMessageSubType type; - const gchar *name; + LmMessageSubType type; + const gchar *name; } sub_type_names[] = { - { LM_MESSAGE_SUB_TYPE_NORMAL, "normal" }, - { LM_MESSAGE_SUB_TYPE_CHAT, "chat" }, - { LM_MESSAGE_SUB_TYPE_GROUPCHAT, "groupchat" }, - { LM_MESSAGE_SUB_TYPE_HEADLINE, "headline" }, - { LM_MESSAGE_SUB_TYPE_UNAVAILABLE, "unavailable" }, - { LM_MESSAGE_SUB_TYPE_PROBE, "probe" }, - { LM_MESSAGE_SUB_TYPE_SUBSCRIBE, "subscribe" }, - { LM_MESSAGE_SUB_TYPE_UNSUBSCRIBE, "unsubscribe" }, - { LM_MESSAGE_SUB_TYPE_SUBSCRIBED, "subscribed" }, - { LM_MESSAGE_SUB_TYPE_UNSUBSCRIBED, "unsubscribed" }, - { LM_MESSAGE_SUB_TYPE_GET, "get" }, - { LM_MESSAGE_SUB_TYPE_SET, "set" }, - { LM_MESSAGE_SUB_TYPE_RESULT, "result" }, - { LM_MESSAGE_SUB_TYPE_ERROR, "error" } + { LM_MESSAGE_SUB_TYPE_NORMAL, "normal" }, + { LM_MESSAGE_SUB_TYPE_CHAT, "chat" }, + { LM_MESSAGE_SUB_TYPE_GROUPCHAT, "groupchat" }, + { LM_MESSAGE_SUB_TYPE_HEADLINE, "headline" }, + { LM_MESSAGE_SUB_TYPE_UNAVAILABLE, "unavailable" }, + { LM_MESSAGE_SUB_TYPE_PROBE, "probe" }, + { LM_MESSAGE_SUB_TYPE_SUBSCRIBE, "subscribe" }, + { LM_MESSAGE_SUB_TYPE_UNSUBSCRIBE, "unsubscribe" }, + { LM_MESSAGE_SUB_TYPE_SUBSCRIBED, "subscribed" }, + { LM_MESSAGE_SUB_TYPE_UNSUBSCRIBED, "unsubscribed" }, + { LM_MESSAGE_SUB_TYPE_GET, "get" }, + { LM_MESSAGE_SUB_TYPE_SET, "set" }, + { LM_MESSAGE_SUB_TYPE_RESULT, "result" }, + { LM_MESSAGE_SUB_TYPE_ERROR, "error" } }; struct LmMessagePriv { - LmMessageType type; - LmMessageSubType sub_type; - gint ref_count; + LmMessageType type; + LmMessageSubType sub_type; + gint ref_count; }; static LmMessageType message_type_from_string (const gchar *type_str) { - gint i; + gint i; - if (!type_str) { - return LM_MESSAGE_TYPE_UNKNOWN; - } + if (!type_str) { + return LM_MESSAGE_TYPE_UNKNOWN; + } - for (i = LM_MESSAGE_TYPE_MESSAGE; - i < LM_MESSAGE_TYPE_UNKNOWN; - ++i) { - if (strcmp (type_str, type_names[i].name) == 0) { - return type_names[i].type; - } + for (i = LM_MESSAGE_TYPE_MESSAGE; + i < LM_MESSAGE_TYPE_UNKNOWN; + ++i) { + if (strcmp (type_str, type_names[i].name) == 0) { + return type_names[i].type; } + } - return LM_MESSAGE_TYPE_UNKNOWN; + return LM_MESSAGE_TYPE_UNKNOWN; } const gchar * _lm_message_type_to_string (LmMessageType type) { - if (type < LM_MESSAGE_TYPE_MESSAGE || - type > LM_MESSAGE_TYPE_STARTTLS) { - type = LM_MESSAGE_TYPE_UNKNOWN; - } + if (type < LM_MESSAGE_TYPE_MESSAGE || + type > LM_MESSAGE_TYPE_STARTTLS) { + type = LM_MESSAGE_TYPE_UNKNOWN; + } - return type_names[type].name; + return type_names[type].name; } static LmMessageSubType message_sub_type_from_string (const gchar *type_str) { - gint i; + gint i; - if (!type_str) { - return LM_MESSAGE_SUB_TYPE_NOT_SET; - } + if (!type_str) { + return LM_MESSAGE_SUB_TYPE_NOT_SET; + } - for (i = LM_MESSAGE_SUB_TYPE_NORMAL; - i <= LM_MESSAGE_SUB_TYPE_ERROR; - ++i) { - if (g_ascii_strcasecmp (type_str, - sub_type_names[i].name) == 0) { - return i; - } + for (i = LM_MESSAGE_SUB_TYPE_NORMAL; + i <= LM_MESSAGE_SUB_TYPE_ERROR; + ++i) { + if (g_ascii_strcasecmp (type_str, + sub_type_names[i].name) == 0) { + return i; } + } - return LM_MESSAGE_SUB_TYPE_NOT_SET; + return LM_MESSAGE_SUB_TYPE_NOT_SET; } const gchar * _lm_message_sub_type_to_string (LmMessageSubType type) { - if (type < LM_MESSAGE_SUB_TYPE_NORMAL || - type > LM_MESSAGE_SUB_TYPE_ERROR) { - return NULL; - } + if (type < LM_MESSAGE_SUB_TYPE_NORMAL || + type > LM_MESSAGE_SUB_TYPE_ERROR) { + return NULL; + } - return sub_type_names[type].name; + return sub_type_names[type].name; } static LmMessageSubType message_sub_type_when_unset (LmMessageType type) { - LmMessageSubType sub_type = LM_MESSAGE_SUB_TYPE_NORMAL; + LmMessageSubType sub_type = LM_MESSAGE_SUB_TYPE_NORMAL; - switch (type) { - case LM_MESSAGE_TYPE_MESSAGE: - /* A message without type should be handled like a message with - * type=normal, but we won't set it to that since then the user - * will not know if it's set or not. - */ - sub_type = LM_MESSAGE_SUB_TYPE_NOT_SET; - break; - case LM_MESSAGE_TYPE_PRESENCE: - sub_type = LM_MESSAGE_SUB_TYPE_AVAILABLE; - break; - case LM_MESSAGE_TYPE_IQ: - sub_type = LM_MESSAGE_SUB_TYPE_GET; - break; - default: - break; - } + switch (type) { + case LM_MESSAGE_TYPE_MESSAGE: + /* A message without type should be handled like a message with + * type=normal, but we won't set it to that since then the user + * will not know if it's set or not. + */ + sub_type = LM_MESSAGE_SUB_TYPE_NOT_SET; + break; + case LM_MESSAGE_TYPE_PRESENCE: + sub_type = LM_MESSAGE_SUB_TYPE_AVAILABLE; + break; + case LM_MESSAGE_TYPE_IQ: + sub_type = LM_MESSAGE_SUB_TYPE_GET; + break; + default: + break; + } - return sub_type; + return sub_type; } LmMessage * _lm_message_new_from_node (LmMessageNode *node) { - LmMessage *m; - LmMessageType type; - LmMessageSubType sub_type; - const gchar *sub_type_str; - - type = message_type_from_string (node->name); + LmMessage *m; + LmMessageType type; + LmMessageSubType sub_type; + const gchar *sub_type_str; + + type = message_type_from_string (node->name); - if (type == LM_MESSAGE_TYPE_UNKNOWN) { - return NULL; - } + if (type == LM_MESSAGE_TYPE_UNKNOWN) { + return NULL; + } - sub_type_str = lm_message_node_get_attribute (node, "type"); - if (sub_type_str) { - sub_type = message_sub_type_from_string (sub_type_str); - } else { - sub_type = message_sub_type_when_unset (type); - } + sub_type_str = lm_message_node_get_attribute (node, "type"); + if (sub_type_str) { + sub_type = message_sub_type_from_string (sub_type_str); + } else { + sub_type = message_sub_type_when_unset (type); + } - m = g_new0 (LmMessage, 1); - m->priv = g_new0 (LmMessagePriv, 1); - - PRIV(m)->ref_count = 1; - PRIV(m)->type = type; - PRIV(m)->sub_type = sub_type; - - m->node = lm_message_node_ref (node); - - return m; + m = g_new0 (LmMessage, 1); + m->priv = g_new0 (LmMessagePriv, 1); + + PRIV(m)->ref_count = 1; + PRIV(m)->type = type; + PRIV(m)->sub_type = sub_type; + + m->node = lm_message_node_ref (node); + + return m; } /** @@ -219,31 +219,31 @@ LmMessage * lm_message_new (const gchar *to, LmMessageType type) { - LmMessage *m; - gchar *id; + LmMessage *m; + gchar *id; - m = g_new0 (LmMessage, 1); - m->priv = g_new0 (LmMessagePriv, 1); + m = g_new0 (LmMessage, 1); + m->priv = g_new0 (LmMessagePriv, 1); - PRIV(m)->ref_count = 1; - PRIV(m)->type = type; - PRIV(m)->sub_type = message_sub_type_when_unset (type); - - m->node = _lm_message_node_new (_lm_message_type_to_string (type)); + PRIV(m)->ref_count = 1; + PRIV(m)->type = type; + PRIV(m)->sub_type = message_sub_type_when_unset (type); + + m->node = _lm_message_node_new (_lm_message_type_to_string (type)); - id = _lm_utils_generate_id (); - lm_message_node_set_attribute (m->node, "id", id); - g_free (id); - - if (to) { - lm_message_node_set_attribute (m->node, "to", to); - } + id = _lm_utils_generate_id (); + lm_message_node_set_attribute (m->node, "id", id); + g_free (id); + + if (to) { + lm_message_node_set_attribute (m->node, "to", to); + } - if (type == LM_MESSAGE_TYPE_IQ) { - lm_message_node_set_attribute (m->node, "type", "get"); - } - - return m; + if (type == LM_MESSAGE_TYPE_IQ) { + lm_message_node_set_attribute (m->node, "type", "get"); + } + + return m; } /** @@ -259,23 +259,23 @@ **/ LmMessage * lm_message_new_with_sub_type (const gchar *to, - LmMessageType type, - LmMessageSubType sub_type) + LmMessageType type, + LmMessageSubType sub_type) { - LmMessage *m; - const gchar *type_str; + LmMessage *m; + const gchar *type_str; - m = lm_message_new (to, type); + m = lm_message_new (to, type); - type_str = _lm_message_sub_type_to_string (sub_type); + type_str = _lm_message_sub_type_to_string (sub_type); - if (type_str) { - lm_message_node_set_attributes (m->node, - "type", type_str, NULL); - PRIV(m)->sub_type = sub_type; - } + if (type_str) { + lm_message_node_set_attributes (m->node, + "type", type_str, NULL); + PRIV(m)->sub_type = sub_type; + } - return m; + return m; } /** @@ -289,9 +289,9 @@ LmMessageType lm_message_get_type (LmMessage *message) { - g_return_val_if_fail (message != NULL, LM_MESSAGE_TYPE_UNKNOWN); - - return PRIV(message)->type; + g_return_val_if_fail (message != NULL, LM_MESSAGE_TYPE_UNKNOWN); + + return PRIV(message)->type; } /** @@ -305,9 +305,9 @@ LmMessageSubType lm_message_get_sub_type (LmMessage *message) { - g_return_val_if_fail (message != NULL, LM_MESSAGE_TYPE_UNKNOWN); - - return PRIV(message)->sub_type; + g_return_val_if_fail (message != NULL, LM_MESSAGE_TYPE_UNKNOWN); + + return PRIV(message)->sub_type; } /** @@ -321,9 +321,9 @@ LmMessageNode * lm_message_get_node (LmMessage *message) { - g_return_val_if_fail (message != NULL, NULL); - - return message->node; + g_return_val_if_fail (message != NULL, NULL); + + return message->node; } /** @@ -337,11 +337,11 @@ LmMessage * lm_message_ref (LmMessage *message) { - g_return_val_if_fail (message != NULL, NULL); - - PRIV(message)->ref_count++; - - return message; + g_return_val_if_fail (message != NULL, NULL); + + PRIV(message)->ref_count++; + + return message; } /** @@ -354,13 +354,13 @@ void lm_message_unref (LmMessage *message) { - g_return_if_fail (message != NULL); + g_return_if_fail (message != NULL); - PRIV(message)->ref_count--; - - if (PRIV(message)->ref_count == 0) { - lm_message_node_unref (message->node); - g_free (message->priv); - g_free (message); - } + PRIV(message)->ref_count--; + + if (PRIV(message)->ref_count == 0) { + lm_message_node_unref (message->node); + g_free (message->priv); + g_free (message); + } } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-message.h --- a/loudmouth/lm-message.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-message.h Wed Oct 08 13:11:02 2008 +0200 @@ -32,9 +32,9 @@ typedef struct LmMessagePriv LmMessagePriv; typedef struct { - LmMessageNode *node; + LmMessageNode *node; - LmMessagePriv *priv; + LmMessagePriv *priv; } LmMessage; /** @@ -49,20 +49,20 @@ * Describes what type of message a message is. This maps directly to top level elements in the jabber protocol. */ typedef enum { - LM_MESSAGE_TYPE_MESSAGE, - LM_MESSAGE_TYPE_PRESENCE, - LM_MESSAGE_TYPE_IQ, - LM_MESSAGE_TYPE_STREAM, - LM_MESSAGE_TYPE_STREAM_ERROR, - LM_MESSAGE_TYPE_STREAM_FEATURES, - LM_MESSAGE_TYPE_AUTH, - LM_MESSAGE_TYPE_CHALLENGE, - LM_MESSAGE_TYPE_RESPONSE, - LM_MESSAGE_TYPE_SUCCESS, - LM_MESSAGE_TYPE_FAILURE, - LM_MESSAGE_TYPE_PROCEED, - LM_MESSAGE_TYPE_STARTTLS, - LM_MESSAGE_TYPE_UNKNOWN + LM_MESSAGE_TYPE_MESSAGE, + LM_MESSAGE_TYPE_PRESENCE, + LM_MESSAGE_TYPE_IQ, + LM_MESSAGE_TYPE_STREAM, + LM_MESSAGE_TYPE_STREAM_ERROR, + LM_MESSAGE_TYPE_STREAM_FEATURES, + LM_MESSAGE_TYPE_AUTH, + LM_MESSAGE_TYPE_CHALLENGE, + LM_MESSAGE_TYPE_RESPONSE, + LM_MESSAGE_TYPE_SUCCESS, + LM_MESSAGE_TYPE_FAILURE, + LM_MESSAGE_TYPE_PROCEED, + LM_MESSAGE_TYPE_STARTTLS, + LM_MESSAGE_TYPE_UNKNOWN } LmMessageType; /** @@ -86,29 +86,29 @@ * Describes the sub type of a message. This is equal to the "type" attribute in the jabber protocol. What sub type a message can have is depending on the type of the message. */ typedef enum { - LM_MESSAGE_SUB_TYPE_NOT_SET = -10, - LM_MESSAGE_SUB_TYPE_AVAILABLE = -1, - LM_MESSAGE_SUB_TYPE_NORMAL = 0, - LM_MESSAGE_SUB_TYPE_CHAT, - LM_MESSAGE_SUB_TYPE_GROUPCHAT, - LM_MESSAGE_SUB_TYPE_HEADLINE, - LM_MESSAGE_SUB_TYPE_UNAVAILABLE, - LM_MESSAGE_SUB_TYPE_PROBE, - LM_MESSAGE_SUB_TYPE_SUBSCRIBE, - LM_MESSAGE_SUB_TYPE_UNSUBSCRIBE, - LM_MESSAGE_SUB_TYPE_SUBSCRIBED, - LM_MESSAGE_SUB_TYPE_UNSUBSCRIBED, - LM_MESSAGE_SUB_TYPE_GET, - LM_MESSAGE_SUB_TYPE_SET, - LM_MESSAGE_SUB_TYPE_RESULT, - LM_MESSAGE_SUB_TYPE_ERROR + LM_MESSAGE_SUB_TYPE_NOT_SET = -10, + LM_MESSAGE_SUB_TYPE_AVAILABLE = -1, + LM_MESSAGE_SUB_TYPE_NORMAL = 0, + LM_MESSAGE_SUB_TYPE_CHAT, + LM_MESSAGE_SUB_TYPE_GROUPCHAT, + LM_MESSAGE_SUB_TYPE_HEADLINE, + LM_MESSAGE_SUB_TYPE_UNAVAILABLE, + LM_MESSAGE_SUB_TYPE_PROBE, + LM_MESSAGE_SUB_TYPE_SUBSCRIBE, + LM_MESSAGE_SUB_TYPE_UNSUBSCRIBE, + LM_MESSAGE_SUB_TYPE_SUBSCRIBED, + LM_MESSAGE_SUB_TYPE_UNSUBSCRIBED, + LM_MESSAGE_SUB_TYPE_GET, + LM_MESSAGE_SUB_TYPE_SET, + LM_MESSAGE_SUB_TYPE_RESULT, + LM_MESSAGE_SUB_TYPE_ERROR } LmMessageSubType; LmMessage * lm_message_new (const gchar *to, - LmMessageType type); + LmMessageType type); LmMessage * lm_message_new_with_sub_type (const gchar *to, - LmMessageType type, - LmMessageSubType sub_type); + LmMessageType type, + LmMessageSubType sub_type); LmMessageType lm_message_get_type (LmMessage *message); LmMessageSubType lm_message_get_sub_type (LmMessage *message); LmMessageNode * lm_message_get_node (LmMessage *message); diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-misc.c --- a/loudmouth/lm-misc.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-misc.c Wed Oct 08 13:11:02 2008 +0200 @@ -26,81 +26,81 @@ static void misc_setup_source (GMainContext *context, - GSource *source, - GSourceFunc function, - gpointer data) + GSource *source, + GSourceFunc function, + gpointer data) { - g_source_set_callback (source, (GSourceFunc)function, data, NULL); - g_source_attach (source, context); - g_source_unref (source); + g_source_set_callback (source, (GSourceFunc)function, data, NULL); + g_source_attach (source, context); + g_source_unref (source); } GSource * lm_misc_add_io_watch (GMainContext *context, - GIOChannel *channel, - GIOCondition condition, - GIOFunc function, - gpointer data) + GIOChannel *channel, + GIOCondition condition, + GIOFunc function, + gpointer data) { - GSource *source; + GSource *source; - g_return_val_if_fail (channel != NULL, 0); + g_return_val_if_fail (channel != NULL, 0); - source = g_io_create_watch (channel, condition); - misc_setup_source (context, source, (GSourceFunc) function, data); + source = g_io_create_watch (channel, condition); + misc_setup_source (context, source, (GSourceFunc) function, data); - return source; + return source; } GSource * lm_misc_add_idle (GMainContext *context, - GSourceFunc function, - gpointer data) + GSourceFunc function, + gpointer data) { - GSource *source; + GSource *source; - g_return_val_if_fail (function != NULL, 0); + g_return_val_if_fail (function != NULL, 0); - source = g_idle_source_new (); - misc_setup_source (context, source, function, data); + source = g_idle_source_new (); + misc_setup_source (context, source, function, data); - return source; + return source; } GSource * lm_misc_add_timeout (GMainContext *context, - guint interval, - GSourceFunc function, - gpointer data) + guint interval, + GSourceFunc function, + gpointer data) { - GSource *source; + GSource *source; - g_return_val_if_fail (function != NULL, 0); + g_return_val_if_fail (function != NULL, 0); - source = g_timeout_source_new (interval); - misc_setup_source (context, source, function, data); + source = g_timeout_source_new (interval); + misc_setup_source (context, source, function, data); - return source; + return source; } const char * lm_misc_io_condition_to_str (GIOCondition condition) { - static char buf[256]; + static char buf[256]; - buf[0] = '\0'; + buf[0] = '\0'; - if(condition & G_IO_ERR) - strcat(buf, "G_IO_ERR "); - if(condition & G_IO_HUP) - strcat(buf, "G_IO_HUP "); - if(condition & G_IO_NVAL) - strcat(buf, "G_IO_NVAL "); - if(condition & G_IO_IN) - strcat(buf, "G_IO_IN "); - if(condition & G_IO_OUT) - strcat(buf, "G_IO_OUT "); + if(condition & G_IO_ERR) + strcat(buf, "G_IO_ERR "); + if(condition & G_IO_HUP) + strcat(buf, "G_IO_HUP "); + if(condition & G_IO_NVAL) + strcat(buf, "G_IO_NVAL "); + if(condition & G_IO_IN) + strcat(buf, "G_IO_IN "); + if(condition & G_IO_OUT) + strcat(buf, "G_IO_OUT "); - return buf; + return buf; } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-misc.h --- a/loudmouth/lm-misc.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-misc.h Wed Oct 08 13:11:02 2008 +0200 @@ -24,17 +24,17 @@ #include GSource * lm_misc_add_io_watch (GMainContext *context, - GIOChannel *chan, - GIOCondition condition, - GIOFunc function, - gpointer data); + GIOChannel *chan, + GIOCondition condition, + GIOFunc function, + gpointer data); GSource * lm_misc_add_idle (GMainContext *context, - GSourceFunc function, - gpointer data); + GSourceFunc function, + gpointer data); GSource * lm_misc_add_timeout (GMainContext *context, - guint interval, - GSourceFunc function, - gpointer data); + guint interval, + GSourceFunc function, + gpointer data); const char * lm_misc_io_condition_to_str (GIOCondition condition); diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-old-socket.c --- a/loudmouth/lm-old-socket.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-old-socket.c Wed Oct 08 13:11:02 2008 +0200 @@ -58,69 +58,69 @@ #define SRV_LEN 8192 struct _LmOldSocket { - LmConnection *connection; - GMainContext *context; + LmConnection *connection; + GMainContext *context; - gchar *domain; - gchar *server; - guint port; + gchar *domain; + gchar *server; + guint port; - gboolean blocking; + gboolean blocking; - LmSSL *ssl; - gboolean ssl_started; - LmProxy *proxy; + LmSSL *ssl; + gboolean ssl_started; + LmProxy *proxy; - GIOChannel *io_channel; - GSource *watch_in; - GSource *watch_err; - GSource *watch_hup; + GIOChannel *io_channel; + GSource *watch_in; + GSource *watch_err; + GSource *watch_hup; - LmOldSocketT fd; + LmOldSocketT fd; - GSource *watch_connect; + GSource *watch_connect; - gboolean cancel_open; - - GSource *watch_out; - GString *out_buf; + gboolean cancel_open; + + GSource *watch_out; + GString *out_buf; - LmConnectData *connect_data; + LmConnectData *connect_data; - IncomingDataFunc data_func; - SocketClosedFunc closed_func; - ConnectResultFunc connect_func; - gpointer user_data; + IncomingDataFunc data_func; + SocketClosedFunc closed_func; + ConnectResultFunc connect_func; + gpointer user_data; - guint ref_count; + guint ref_count; - LmResolver *resolver; + LmResolver *resolver; #ifdef HAVE_ASYNCNS - GSource *watch_resolv; - asyncns_query_t *resolv_query; - asyncns_t *asyncns_ctx; - GIOChannel *resolv_channel; + GSource *watch_resolv; + asyncns_query_t *resolv_query; + asyncns_t *asyncns_ctx; + GIOChannel *resolv_channel; #endif }; static void socket_free (LmOldSocket *socket); static gboolean socket_do_connect (LmConnectData *connect_data); static gboolean socket_connect_cb (GIOChannel *source, - GIOCondition condition, - LmConnectData *connect_data); + GIOCondition condition, + LmConnectData *connect_data); static gboolean socket_in_event (GIOChannel *source, - GIOCondition condition, - LmOldSocket *socket); + GIOCondition condition, + LmOldSocket *socket); static gboolean socket_hup_event (GIOChannel *source, - GIOCondition condition, - LmOldSocket *socket); + GIOCondition condition, + LmOldSocket *socket); static gboolean socket_error_event (GIOChannel *source, - GIOCondition condition, - LmOldSocket *socket); + GIOCondition condition, + LmOldSocket *socket); static gboolean socket_buffered_write_cb (GIOChannel *source, - GIOCondition condition, - LmOldSocket *socket); + GIOCondition condition, + LmOldSocket *socket); static void socket_close_io_channel (GIOChannel *io_channel); static gboolean old_socket_output_is_buffered (LmOldSocket *socket, const gchar *buffer, @@ -132,265 +132,265 @@ static void socket_free (LmOldSocket *socket) { - g_free (socket->server); - g_free (socket->domain); + g_free (socket->server); + g_free (socket->domain); - if (socket->ssl) { - lm_ssl_unref (socket->ssl); - } + if (socket->ssl) { + lm_ssl_unref (socket->ssl); + } - if (socket->proxy) { - lm_proxy_unref (socket->proxy); - } - - if (socket->out_buf) { - g_string_free (socket->out_buf, TRUE); - } + if (socket->proxy) { + lm_proxy_unref (socket->proxy); + } + + if (socket->out_buf) { + g_string_free (socket->out_buf, TRUE); + } - if (socket->resolver) { - g_object_unref (socket->resolver); - } + if (socket->resolver) { + g_object_unref (socket->resolver); + } - g_free (socket); + g_free (socket); } static gint old_socket_do_write (LmOldSocket *socket, const gchar *buf, guint len) { - gint b_written; + gint b_written; - if (socket->ssl_started) { - b_written = _lm_ssl_send (socket->ssl, buf, len); - } else { - GIOStatus io_status = G_IO_STATUS_AGAIN; - gsize bytes_written; + if (socket->ssl_started) { + b_written = _lm_ssl_send (socket->ssl, buf, len); + } else { + GIOStatus io_status = G_IO_STATUS_AGAIN; + gsize bytes_written; - while (io_status == G_IO_STATUS_AGAIN) { - io_status = g_io_channel_write_chars (socket->io_channel, - buf, len, - &bytes_written, - NULL); - } + while (io_status == G_IO_STATUS_AGAIN) { + io_status = g_io_channel_write_chars (socket->io_channel, + buf, len, + &bytes_written, + NULL); + } - b_written = bytes_written; + b_written = bytes_written; - if (io_status != G_IO_STATUS_NORMAL) { - b_written = -1; - } - } + if (io_status != G_IO_STATUS_NORMAL) { + b_written = -1; + } + } - return b_written; + return b_written; } gint lm_old_socket_write (LmOldSocket *socket, const gchar *buf, gint len) { - gint b_written; + gint b_written; - if (old_socket_output_is_buffered (socket, buf, len)) { - return len; - } + if (old_socket_output_is_buffered (socket, buf, len)) { + return len; + } - b_written = old_socket_do_write (socket, buf, len); + b_written = old_socket_do_write (socket, buf, len); - if (b_written < len && b_written != -1) { - old_socket_setup_output_buffer (socket, - buf + b_written, - len - b_written); - return len; - } + if (b_written < len && b_written != -1) { + old_socket_setup_output_buffer (socket, + buf + b_written, + len - b_written); + return len; + } - return b_written; + return b_written; } static gboolean socket_read_incoming (LmOldSocket *socket, - gchar *buf, - gsize buf_size, - gsize *bytes_read, - gboolean *hangup, - gint *reason) + gchar *buf, + gsize buf_size, + gsize *bytes_read, + gboolean *hangup, + gint *reason) { - GIOStatus status; + GIOStatus status; - *hangup = FALSE; + *hangup = FALSE; - if (socket->ssl_started) { - status = _lm_ssl_read (socket->ssl, - buf, buf_size - 1, bytes_read); - } else { - status = g_io_channel_read_chars (socket->io_channel, - buf, buf_size - 1, - bytes_read, - NULL); - } + if (socket->ssl_started) { + status = _lm_ssl_read (socket->ssl, + buf, buf_size - 1, bytes_read); + } else { + status = g_io_channel_read_chars (socket->io_channel, + buf, buf_size - 1, + bytes_read, + NULL); + } - if (status != G_IO_STATUS_NORMAL || *bytes_read < 0) { - switch (status) { - case G_IO_STATUS_EOF: - *reason = LM_DISCONNECT_REASON_HUP; - break; - case G_IO_STATUS_AGAIN: - /* No data readable but we didn't hangup */ - return FALSE; - break; - case G_IO_STATUS_ERROR: - *reason = LM_DISCONNECT_REASON_ERROR; - break; - default: - *reason = LM_DISCONNECT_REASON_UNKNOWN; - } + if (status != G_IO_STATUS_NORMAL || *bytes_read < 0) { + switch (status) { + case G_IO_STATUS_EOF: + *reason = LM_DISCONNECT_REASON_HUP; + break; + case G_IO_STATUS_AGAIN: + /* No data readable but we didn't hangup */ + return FALSE; + break; + case G_IO_STATUS_ERROR: + *reason = LM_DISCONNECT_REASON_ERROR; + break; + default: + *reason = LM_DISCONNECT_REASON_UNKNOWN; + } - /* Notify connection_in_event that we hangup the connection */ - *hangup = TRUE; - - return FALSE; - } + /* Notify connection_in_event that we hangup the connection */ + *hangup = TRUE; + + return FALSE; + } - buf[*bytes_read] = '\0'; + buf[*bytes_read] = '\0'; - /* There is more data to be read */ - return TRUE; + /* There is more data to be read */ + return TRUE; } static gboolean socket_in_event (GIOChannel *source, - GIOCondition condition, - LmOldSocket *socket) + GIOCondition condition, + LmOldSocket *socket) { - gchar buf[IN_BUFFER_SIZE]; - gsize bytes_read = 0; - gboolean read_anything = FALSE; - gboolean hangup = 0; - gint reason = 0; + gchar buf[IN_BUFFER_SIZE]; + gsize bytes_read = 0; + gboolean read_anything = FALSE; + gboolean hangup = 0; + gint reason = 0; - if (!socket->io_channel) { - return FALSE; - } + if (!socket->io_channel) { + return FALSE; + } - while ((condition & G_IO_IN) && socket_read_incoming (socket, buf, IN_BUFFER_SIZE, - &bytes_read, &hangup, &reason)) { - - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, "\nRECV [%d]:\n", - (int)bytes_read); - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, - "-----------------------------------\n"); - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, "'%s'\n", buf); - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, - "-----------------------------------\n"); - - lm_verbose ("Read: %d chars\n", (int)bytes_read); + while ((condition & G_IO_IN) && socket_read_incoming (socket, buf, IN_BUFFER_SIZE, + &bytes_read, &hangup, &reason)) { + + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, "\nRECV [%d]:\n", + (int)bytes_read); + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, + "-----------------------------------\n"); + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, "'%s'\n", buf); + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, + "-----------------------------------\n"); + + lm_verbose ("Read: %d chars\n", (int)bytes_read); - (socket->data_func) (socket, buf, socket->user_data); + (socket->data_func) (socket, buf, socket->user_data); - read_anything = TRUE; + read_anything = TRUE; - condition = g_io_channel_get_buffer_condition (socket->io_channel); - } + condition = g_io_channel_get_buffer_condition (socket->io_channel); + } - /* If we have read something, delay the hangup so that the data can be - * processed. */ - if (hangup && !read_anything) { - (socket->closed_func) (socket, reason, socket->user_data); - return FALSE; - } + /* If we have read something, delay the hangup so that the data can be + * processed. */ + if (hangup && !read_anything) { + (socket->closed_func) (socket, reason, socket->user_data); + return FALSE; + } - return TRUE; + return TRUE; } - + static gboolean socket_hup_event (GIOChannel *source, - GIOCondition condition, - LmOldSocket *socket) + GIOCondition condition, + LmOldSocket *socket) { - lm_verbose ("HUP event: %d->'%s'\n", - condition, lm_misc_io_condition_to_str (condition)); + lm_verbose ("HUP event: %d->'%s'\n", + condition, lm_misc_io_condition_to_str (condition)); - if (!socket->io_channel) { - return FALSE; - } + if (!socket->io_channel) { + return FALSE; + } - (socket->closed_func) (socket, LM_DISCONNECT_REASON_HUP, - socket->user_data); - - return TRUE; + (socket->closed_func) (socket, LM_DISCONNECT_REASON_HUP, + socket->user_data); + + return TRUE; } static gboolean socket_error_event (GIOChannel *source, - GIOCondition condition, - LmOldSocket *socket) + GIOCondition condition, + LmOldSocket *socket) { - lm_verbose ("ERROR event: %d->'%s'\n", - condition, lm_misc_io_condition_to_str (condition)); + lm_verbose ("ERROR event: %d->'%s'\n", + condition, lm_misc_io_condition_to_str (condition)); - if (!socket->io_channel) { - return FALSE; - } + if (!socket->io_channel) { + return FALSE; + } - (socket->closed_func) (socket, LM_DISCONNECT_REASON_ERROR, - socket->user_data); - - return TRUE; + (socket->closed_func) (socket, LM_DISCONNECT_REASON_ERROR, + socket->user_data); + + return TRUE; } static gboolean _lm_old_socket_ssl_init (LmOldSocket *socket, gboolean delayed) { - GError *error = NULL; - const gchar *ssl_verify_domain = NULL; + GError *error = NULL; + const gchar *ssl_verify_domain = NULL; - lm_verbose ("Setting up SSL...\n"); + lm_verbose ("Setting up SSL...\n"); - _lm_ssl_initialize (socket->ssl); + _lm_ssl_initialize (socket->ssl); #ifdef HAVE_GNUTLS - /* GNU TLS requires the socket to be blocking */ - _lm_sock_set_blocking (socket->fd, TRUE); + /* GNU TLS requires the socket to be blocking */ + _lm_sock_set_blocking (socket->fd, TRUE); #endif - /* If we're using StartTLS, the correct thing is to verify against - * the domain. If we're using old SSL, we should verify against the - * hostname. */ - if (delayed) - ssl_verify_domain = socket->domain; - else - ssl_verify_domain = socket->server; - - if (!_lm_ssl_begin (socket->ssl, socket->fd, ssl_verify_domain, &error)) { - lm_verbose ("Could not begin SSL\n"); + /* If we're using StartTLS, the correct thing is to verify against + * the domain. If we're using old SSL, we should verify against the + * hostname. */ + if (delayed) + ssl_verify_domain = socket->domain; + else + ssl_verify_domain = socket->server; + + if (!_lm_ssl_begin (socket->ssl, socket->fd, ssl_verify_domain, &error)) { + lm_verbose ("Could not begin SSL\n"); - if (error) { - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, - "%s\n", error->message); - g_error_free (error); - } + if (error) { + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, + "%s\n", error->message); + g_error_free (error); + } - _lm_sock_shutdown (socket->fd); - _lm_sock_close (socket->fd); + _lm_sock_shutdown (socket->fd); + _lm_sock_close (socket->fd); - if (!delayed && socket->connect_func) { - (socket->connect_func) (socket, FALSE, socket->user_data); - } - - return FALSE; - } + if (!delayed && socket->connect_func) { + (socket->connect_func) (socket, FALSE, socket->user_data); + } + + return FALSE; + } #ifdef HAVE_GNUTLS - _lm_sock_set_blocking (socket->fd, FALSE); + _lm_sock_set_blocking (socket->fd, FALSE); #endif - socket->ssl_started = TRUE; + socket->ssl_started = TRUE; - return TRUE; + return TRUE; } gboolean lm_old_socket_starttls (LmOldSocket *socket) { - g_return_val_if_fail (lm_ssl_get_use_starttls (socket->ssl) == TRUE, FALSE); + g_return_val_if_fail (lm_ssl_get_use_starttls (socket->ssl) == TRUE, FALSE); - return _lm_old_socket_ssl_init (socket, TRUE); + return _lm_old_socket_ssl_init (socket, TRUE); } @@ -398,374 +398,374 @@ void _lm_old_socket_succeeded (LmConnectData *connect_data) { - LmOldSocket *socket; - - socket = connect_data->socket; + LmOldSocket *socket; + + socket = connect_data->socket; - if (socket->watch_connect) { - g_source_destroy (socket->watch_connect); - socket->watch_connect = NULL; - } + if (socket->watch_connect) { + g_source_destroy (socket->watch_connect); + socket->watch_connect = NULL; + } - /* Need some way to report error/success */ - if (socket->cancel_open) { - lm_verbose ("Cancelling connection...\n"); - if (socket->connect_func) { - (socket->connect_func) (socket, FALSE, socket->user_data); - } - return; - } - - socket->fd = connect_data->fd; - socket->io_channel = connect_data->io_channel; + /* Need some way to report error/success */ + if (socket->cancel_open) { + lm_verbose ("Cancelling connection...\n"); + if (socket->connect_func) { + (socket->connect_func) (socket, FALSE, socket->user_data); + } + return; + } + + socket->fd = connect_data->fd; + socket->io_channel = connect_data->io_channel; - g_object_unref (socket->resolver); - socket->resolver = NULL; + g_object_unref (socket->resolver); + socket->resolver = NULL; - socket->connect_data = NULL; - g_free (connect_data); + socket->connect_data = NULL; + g_free (connect_data); - /* old-style ssl should be started immediately */ - if (socket->ssl && (lm_ssl_get_use_starttls (socket->ssl) == FALSE)) { - if (!_lm_old_socket_ssl_init (socket, FALSE)) { - return; - } - } + /* old-style ssl should be started immediately */ + if (socket->ssl && (lm_ssl_get_use_starttls (socket->ssl) == FALSE)) { + if (!_lm_old_socket_ssl_init (socket, FALSE)) { + return; + } + } - socket->watch_in = - lm_misc_add_io_watch (socket->context, - socket->io_channel, - G_IO_IN, - (GIOFunc) socket_in_event, - socket); + socket->watch_in = + lm_misc_add_io_watch (socket->context, + socket->io_channel, + G_IO_IN, + (GIOFunc) socket_in_event, + socket); - /* FIXME: if we add these, we don't get ANY - * response from the server, this is to do with the way that - * windows handles watches, see bug #331214. - */ + /* FIXME: if we add these, we don't get ANY + * response from the server, this is to do with the way that + * windows handles watches, see bug #331214. + */ #ifndef G_OS_WIN32 - socket->watch_err = - lm_misc_add_io_watch (socket->context, - socket->io_channel, - G_IO_ERR, - (GIOFunc) socket_error_event, - socket); - - socket->watch_hup = - lm_misc_add_io_watch (socket->context, - socket->io_channel, - G_IO_HUP, - (GIOFunc) socket_hup_event, - socket); + socket->watch_err = + lm_misc_add_io_watch (socket->context, + socket->io_channel, + G_IO_ERR, + (GIOFunc) socket_error_event, + socket); + + socket->watch_hup = + lm_misc_add_io_watch (socket->context, + socket->io_channel, + G_IO_HUP, + (GIOFunc) socket_hup_event, + socket); #endif - if (socket->connect_func) { - (socket->connect_func) (socket, TRUE, socket->user_data); - } + if (socket->connect_func) { + (socket->connect_func) (socket, TRUE, socket->user_data); + } } gboolean _lm_old_socket_failed_with_error (LmConnectData *connect_data, int error) { - LmOldSocket *socket; - - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, - "Connection failed: %s (error %d)\n", - _lm_sock_get_error_str (error), error); - - socket = lm_old_socket_ref (connect_data->socket); + LmOldSocket *socket; + + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, + "Connection failed: %s (error %d)\n", + _lm_sock_get_error_str (error), error); + + socket = lm_old_socket_ref (connect_data->socket); - connect_data->current_addr = lm_resolver_results_get_next (socket->resolver); - - if (socket->watch_connect) { - g_source_destroy (socket->watch_connect); - socket->watch_connect = NULL; - } + connect_data->current_addr = lm_resolver_results_get_next (socket->resolver); + + if (socket->watch_connect) { + g_source_destroy (socket->watch_connect); + socket->watch_connect = NULL; + } - if (connect_data->io_channel != NULL) { - socket_close_io_channel (connect_data->io_channel); - } - - if (connect_data->current_addr == NULL) { - if (socket->connect_func) { - (socket->connect_func) (socket, FALSE, socket->user_data); - } - - /* if the user callback called connection_close(), this is already freed */ - if (socket->connect_data != NULL) { - if (socket->resolver) { - g_object_unref (socket->resolver); - } + if (connect_data->io_channel != NULL) { + socket_close_io_channel (connect_data->io_channel); + } + + if (connect_data->current_addr == NULL) { + if (socket->connect_func) { + (socket->connect_func) (socket, FALSE, socket->user_data); + } + + /* if the user callback called connection_close(), this is already freed */ + if (socket->connect_data != NULL) { + if (socket->resolver) { + g_object_unref (socket->resolver); + } - socket->connect_data = NULL; - g_free (connect_data); - } - } else { - /* try to connect to the next host */ - return socket_do_connect (connect_data); - } + socket->connect_data = NULL; + g_free (connect_data); + } + } else { + /* try to connect to the next host */ + return socket_do_connect (connect_data); + } - lm_old_socket_unref(socket); + lm_old_socket_unref(socket); - return FALSE; + return FALSE; } gboolean _lm_old_socket_failed (LmConnectData *connect_data) { - return _lm_old_socket_failed_with_error (connect_data, - _lm_sock_get_last_error()); + return _lm_old_socket_failed_with_error (connect_data, + _lm_sock_get_last_error()); } static gboolean socket_connect_cb (GIOChannel *source, - GIOCondition condition, - LmConnectData *connect_data) + GIOCondition condition, + LmConnectData *connect_data) { - LmOldSocket *socket; - struct addrinfo *addr; - int err; - socklen_t len; - LmOldSocketT fd; - gboolean result = FALSE; + LmOldSocket *socket; + struct addrinfo *addr; + int err; + socklen_t len; + LmOldSocketT fd; + gboolean result = FALSE; - socket = lm_old_socket_ref (connect_data->socket); - addr = connect_data->current_addr; - fd = g_io_channel_unix_get_fd (source); + socket = lm_old_socket_ref (connect_data->socket); + addr = connect_data->current_addr; + fd = g_io_channel_unix_get_fd (source); - if (condition == G_IO_ERR) { - len = sizeof (err); - _lm_sock_get_error (fd, &err, &len); - if (!_lm_sock_is_blocking_error (err)) { - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, - "Connection failed.\n"); + if (condition == G_IO_ERR) { + len = sizeof (err); + _lm_sock_get_error (fd, &err, &len); + if (!_lm_sock_is_blocking_error (err)) { + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, + "Connection failed.\n"); - /* error condition, but might be possible to recover - * from it (by connecting to the next host) */ - if (!_lm_old_socket_failed_with_error (connect_data, err)) { - socket->watch_connect = NULL; - goto out; - } - } - } + /* error condition, but might be possible to recover + * from it (by connecting to the next host) */ + if (!_lm_old_socket_failed_with_error (connect_data, err)) { + socket->watch_connect = NULL; + goto out; + } + } + } - if (_lm_connection_async_connect_waiting (socket->connection)) { - gint res; + if (_lm_connection_async_connect_waiting (socket->connection)) { + gint res; - fd = g_io_channel_unix_get_fd (source); + fd = g_io_channel_unix_get_fd (source); - res = _lm_sock_connect (fd, addr->ai_addr, (int)addr->ai_addrlen); - if (res < 0) { - err = _lm_sock_get_last_error (); - if (_lm_sock_is_blocking_success (err)) { - _lm_connection_set_async_connect_waiting (socket->connection, FALSE); + res = _lm_sock_connect (fd, addr->ai_addr, (int)addr->ai_addrlen); + if (res < 0) { + err = _lm_sock_get_last_error (); + if (_lm_sock_is_blocking_success (err)) { + _lm_connection_set_async_connect_waiting (socket->connection, FALSE); - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, - "Connection success (1).\n"); - - _lm_old_socket_succeeded (connect_data); - } - - if (_lm_connection_async_connect_waiting (socket->connection) && - !_lm_sock_is_blocking_error (err)) { - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, - "Connection failed.\n"); + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, + "Connection success (1).\n"); + + _lm_old_socket_succeeded (connect_data); + } + + if (_lm_connection_async_connect_waiting (socket->connection) && + !_lm_sock_is_blocking_error (err)) { + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, + "Connection failed.\n"); - _lm_sock_close (connect_data->fd); - _lm_old_socket_failed_with_error (connect_data, err); + _lm_sock_close (connect_data->fd); + _lm_old_socket_failed_with_error (connect_data, err); - socket->watch_connect = NULL; - goto out; - } - } - } else { - /* for blocking sockets, G_IO_OUT means we are connected */ - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, - "Connection success (2).\n"); - - _lm_old_socket_succeeded (connect_data); - } + socket->watch_connect = NULL; + goto out; + } + } + } else { + /* for blocking sockets, G_IO_OUT means we are connected */ + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, + "Connection success (2).\n"); + + _lm_old_socket_succeeded (connect_data); + } - result = TRUE; + result = TRUE; out: - lm_old_socket_unref(socket); - - return result; + lm_old_socket_unref(socket); + + return result; } static gboolean socket_do_connect (LmConnectData *connect_data) { - LmOldSocket *socket; - LmOldSocketT fd; - int res, err; - int port; - char name[NI_MAXHOST]; - char portname[NI_MAXSERV]; - struct addrinfo *addr; - - socket = connect_data->socket; - addr = connect_data->current_addr; + LmOldSocket *socket; + LmOldSocketT fd; + int res, err; + int port; + char name[NI_MAXHOST]; + char portname[NI_MAXSERV]; + struct addrinfo *addr; + + socket = connect_data->socket; + addr = connect_data->current_addr; - if (socket->proxy) { - port = htons (lm_proxy_get_port (socket->proxy)); - } else { - port = htons (socket->port); - } - - ((struct sockaddr_in *) addr->ai_addr)->sin_port = port; + if (socket->proxy) { + port = htons (lm_proxy_get_port (socket->proxy)); + } else { + port = htons (socket->port); + } + + ((struct sockaddr_in *) addr->ai_addr)->sin_port = port; - res = getnameinfo (addr->ai_addr, - (socklen_t)addr->ai_addrlen, - name, sizeof (name), - portname, sizeof (portname), - NI_NUMERICHOST | NI_NUMERICSERV); - - if (res < 0) { - return _lm_old_socket_failed (connect_data); - } + res = getnameinfo (addr->ai_addr, + (socklen_t)addr->ai_addrlen, + name, sizeof (name), + portname, sizeof (portname), + NI_NUMERICHOST | NI_NUMERICSERV); + + if (res < 0) { + return _lm_old_socket_failed (connect_data); + } - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, - "Trying %s port %s...\n", name, portname); - - fd = _lm_sock_makesocket (addr->ai_family, - addr->ai_socktype, - addr->ai_protocol); - - if (!_LM_SOCK_VALID (fd)) { - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, - "Failed making socket, error:%d...\n", - _lm_sock_get_last_error ()); + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, + "Trying %s port %s...\n", name, portname); + + fd = _lm_sock_makesocket (addr->ai_family, + addr->ai_socktype, + addr->ai_protocol); + + if (!_LM_SOCK_VALID (fd)) { + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, + "Failed making socket, error:%d...\n", + _lm_sock_get_last_error ()); - return _lm_old_socket_failed (connect_data); - } + return _lm_old_socket_failed (connect_data); + } - /* Even though it says _unix_new(), it is supported by glib on - * win32 because glib does some cool stuff to find out if it - * can treat it as a FD or a windows SOCKET. - */ - connect_data->fd = fd; - connect_data->io_channel = g_io_channel_unix_new (fd); - - g_io_channel_set_encoding (connect_data->io_channel, NULL, NULL); - g_io_channel_set_buffered (connect_data->io_channel, FALSE); + /* Even though it says _unix_new(), it is supported by glib on + * win32 because glib does some cool stuff to find out if it + * can treat it as a FD or a windows SOCKET. + */ + connect_data->fd = fd; + connect_data->io_channel = g_io_channel_unix_new (fd); + + g_io_channel_set_encoding (connect_data->io_channel, NULL, NULL); + g_io_channel_set_buffered (connect_data->io_channel, FALSE); - _lm_sock_set_blocking (connect_data->fd, socket->blocking); - - if (socket->proxy) { - socket->watch_connect = - lm_misc_add_io_watch (socket->context, - connect_data->io_channel, - G_IO_OUT|G_IO_ERR, - (GIOFunc) _lm_proxy_connect_cb, - connect_data); - } else { - socket->watch_connect = - lm_misc_add_io_watch (socket->context, - connect_data->io_channel, - G_IO_OUT|G_IO_ERR, - (GIOFunc) socket_connect_cb, - connect_data); - } + _lm_sock_set_blocking (connect_data->fd, socket->blocking); + + if (socket->proxy) { + socket->watch_connect = + lm_misc_add_io_watch (socket->context, + connect_data->io_channel, + G_IO_OUT|G_IO_ERR, + (GIOFunc) _lm_proxy_connect_cb, + connect_data); + } else { + socket->watch_connect = + lm_misc_add_io_watch (socket->context, + connect_data->io_channel, + G_IO_OUT|G_IO_ERR, + (GIOFunc) socket_connect_cb, + connect_data); + } - _lm_connection_set_async_connect_waiting (socket->connection, !socket->blocking); + _lm_connection_set_async_connect_waiting (socket->connection, !socket->blocking); - res = _lm_sock_connect (connect_data->fd, - addr->ai_addr, (int)addr->ai_addrlen); - if (res < 0) { - err = _lm_sock_get_last_error (); - if (!_lm_sock_is_blocking_error (err)) { - _lm_sock_close (connect_data->fd); - return _lm_old_socket_failed_with_error (connect_data, err); - } - } + res = _lm_sock_connect (connect_data->fd, + addr->ai_addr, (int)addr->ai_addrlen); + if (res < 0) { + err = _lm_sock_get_last_error (); + if (!_lm_sock_is_blocking_error (err)) { + _lm_sock_close (connect_data->fd); + return _lm_old_socket_failed_with_error (connect_data, err); + } + } - return TRUE; + return TRUE; } static gboolean old_socket_output_is_buffered (LmOldSocket *socket, - const gchar *buffer, - gint len) + const gchar *buffer, + gint len) { - if (socket->out_buf) { - lm_verbose ("Appending %d bytes to output buffer\n", len); - g_string_append_len (socket->out_buf, buffer, len); - return TRUE; - } + if (socket->out_buf) { + lm_verbose ("Appending %d bytes to output buffer\n", len); + g_string_append_len (socket->out_buf, buffer, len); + return TRUE; + } - return FALSE; + return FALSE; } static void old_socket_setup_output_buffer (LmOldSocket *socket, const gchar *buffer, gint len) { - lm_verbose ("OUTPUT BUFFER ENABLED\n"); + lm_verbose ("OUTPUT BUFFER ENABLED\n"); - socket->out_buf = g_string_new_len (buffer, len); + socket->out_buf = g_string_new_len (buffer, len); - socket->watch_out = - lm_misc_add_io_watch (socket->context, - socket->io_channel, - G_IO_OUT, - (GIOFunc) socket_buffered_write_cb, - socket); + socket->watch_out = + lm_misc_add_io_watch (socket->context, + socket->io_channel, + G_IO_OUT, + (GIOFunc) socket_buffered_write_cb, + socket); } static gboolean socket_buffered_write_cb (GIOChannel *source, - GIOCondition condition, - LmOldSocket *socket) + GIOCondition condition, + LmOldSocket *socket) { - gint b_written; - GString *out_buf; - /* FIXME: Do the writing */ + gint b_written; + GString *out_buf; + /* FIXME: Do the writing */ - out_buf = socket->out_buf; - if (!out_buf) { - /* Should not be possible */ - return FALSE; - } + out_buf = socket->out_buf; + if (!out_buf) { + /* Should not be possible */ + return FALSE; + } - b_written = old_socket_do_write (socket, out_buf->str, out_buf->len); + b_written = old_socket_do_write (socket, out_buf->str, out_buf->len); - if (b_written < 0) { - (socket->closed_func) (socket, LM_DISCONNECT_REASON_ERROR, - socket->user_data); - return FALSE; - } + if (b_written < 0) { + (socket->closed_func) (socket, LM_DISCONNECT_REASON_ERROR, + socket->user_data); + return FALSE; + } - g_string_erase (out_buf, 0, (gsize) b_written); - if (out_buf->len == 0) { - lm_verbose ("Output buffer is empty, going back to normal output\n"); + g_string_erase (out_buf, 0, (gsize) b_written); + if (out_buf->len == 0) { + lm_verbose ("Output buffer is empty, going back to normal output\n"); - if (socket->watch_out) { - g_source_destroy (socket->watch_out); - socket->watch_out = NULL; - } + if (socket->watch_out) { + g_source_destroy (socket->watch_out); + socket->watch_out = NULL; + } - g_string_free (out_buf, TRUE); - socket->out_buf = NULL; - return FALSE; - } + g_string_free (out_buf, TRUE); + socket->out_buf = NULL; + return FALSE; + } - return TRUE; + return TRUE; } static void socket_close_io_channel (GIOChannel *io_channel) { - gint fd; + gint fd; - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, - "Freeing up IOChannel and file descriptor\n"); + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, + "Freeing up IOChannel and file descriptor\n"); - fd = g_io_channel_unix_get_fd (io_channel); + fd = g_io_channel_unix_get_fd (io_channel); - g_io_channel_unref (io_channel); + g_io_channel_unref (io_channel); - _lm_sock_close (fd); + _lm_sock_close (fd); } /* FIXME: Need to have a way to only get srv reply and then decide if the @@ -779,29 +779,29 @@ LmResolverResult result, gpointer user_data) { - LmOldSocket *socket = (LmOldSocket *) user_data; - const gchar *remote_addr; + LmOldSocket *socket = (LmOldSocket *) user_data; + const gchar *remote_addr; - if (result != LM_RESOLVER_RESULT_OK) { - lm_verbose ("SRV lookup failed, trying jid domain\n"); - socket->server = g_strdup (socket->domain); - } else { - g_object_get (resolver, "host", &socket->server, NULL); - g_object_get (resolver, "port", &socket->port, NULL); - } + if (result != LM_RESOLVER_RESULT_OK) { + lm_verbose ("SRV lookup failed, trying jid domain\n"); + socket->server = g_strdup (socket->domain); + } else { + g_object_get (resolver, "host", &socket->server, NULL); + g_object_get (resolver, "port", &socket->port, NULL); + } - if (socket->proxy) { - remote_addr = lm_proxy_get_server (socket->proxy); - } else { - remote_addr = socket->server; - } + if (socket->proxy) { + remote_addr = lm_proxy_get_server (socket->proxy); + } else { + remote_addr = socket->server; + } - g_object_set (resolver, - "host", remote_addr, - "type", LM_RESOLVER_HOST, - NULL); + g_object_set (resolver, + "host", remote_addr, + "type", LM_RESOLVER_HOST, + NULL); - lm_resolver_lookup (resolver); + lm_resolver_lookup (resolver); } static void @@ -809,25 +809,25 @@ LmResolverResult result, gpointer user_data) { - LmOldSocket *socket = (LmOldSocket *) user_data; + LmOldSocket *socket = (LmOldSocket *) user_data; - if (result != LM_RESOLVER_RESULT_OK) { - lm_verbose ("error while resolving, bailing out\n"); - if (socket->connect_func) { - (socket->connect_func) (socket, FALSE, socket->user_data); - } - g_object_unref (socket->resolver); - socket->resolver = NULL; - g_free (socket->connect_data); - socket->connect_data = NULL; + if (result != LM_RESOLVER_RESULT_OK) { + lm_verbose ("error while resolving, bailing out\n"); + if (socket->connect_func) { + (socket->connect_func) (socket, FALSE, socket->user_data); + } + g_object_unref (socket->resolver); + socket->resolver = NULL; + g_free (socket->connect_data); + socket->connect_data = NULL; - return; - } + return; + } - socket->connect_data->current_addr = - lm_resolver_results_get_next (resolver); + socket->connect_data->current_addr = + lm_resolver_results_get_next (resolver); - socket_do_connect (socket->connect_data); + socket_do_connect (socket->connect_data); } LmOldSocket * @@ -845,215 +845,215 @@ LmProxy *proxy, GError **error) { - LmOldSocket *socket; - LmConnectData *data; + LmOldSocket *socket; + LmConnectData *data; - g_return_val_if_fail (domain != NULL, NULL); - g_return_val_if_fail ((port >= LM_MIN_PORT && port <= LM_MAX_PORT), NULL); - g_return_val_if_fail (data_func != NULL, NULL); - g_return_val_if_fail (closed_func != NULL, NULL); - g_return_val_if_fail (connect_func != NULL, NULL); + g_return_val_if_fail (domain != NULL, NULL); + g_return_val_if_fail ((port >= LM_MIN_PORT && port <= LM_MAX_PORT), NULL); + g_return_val_if_fail (data_func != NULL, NULL); + g_return_val_if_fail (closed_func != NULL, NULL); + g_return_val_if_fail (connect_func != NULL, NULL); - socket = g_new0 (LmOldSocket, 1); + socket = g_new0 (LmOldSocket, 1); - socket->ref_count = 1; + socket->ref_count = 1; - socket->connection = connection; - socket->domain = g_strdup (domain); - socket->server = g_strdup (server); - socket->port = port; - socket->cancel_open = FALSE; - socket->ssl = ssl; - socket->ssl_started = FALSE; - socket->proxy = NULL; - socket->blocking = blocking; + socket->connection = connection; + socket->domain = g_strdup (domain); + socket->server = g_strdup (server); + socket->port = port; + socket->cancel_open = FALSE; + socket->ssl = ssl; + socket->ssl_started = FALSE; + socket->proxy = NULL; + socket->blocking = blocking; - if (context) { - socket->context = g_main_context_ref (context); - } + if (context) { + socket->context = g_main_context_ref (context); + } - if (proxy) { - socket->proxy = lm_proxy_ref (proxy); - } + if (proxy) { + socket->proxy = lm_proxy_ref (proxy); + } - data = g_new0 (LmConnectData, 1); - data->socket = socket; - data->connection = socket->connection; - data->fd = -1; - socket->connect_data = data; + data = g_new0 (LmConnectData, 1); + data->socket = socket; + data->connection = socket->connection; + data->fd = -1; + socket->connect_data = data; - if (!server) { - socket->resolver = lm_resolver_new_for_service (socket->domain, - "xmpp-client", - "tcp", - old_socket_resolver_srv_cb, - socket); - } else { - socket->resolver = - lm_resolver_new_for_host (socket->server ? socket->server : socket->domain, - old_socket_resolver_host_cb, - socket); - } + if (!server) { + socket->resolver = lm_resolver_new_for_service (socket->domain, + "xmpp-client", + "tcp", + old_socket_resolver_srv_cb, + socket); + } else { + socket->resolver = + lm_resolver_new_for_host (socket->server ? socket->server : socket->domain, + old_socket_resolver_host_cb, + socket); + } - if (socket->context) { - g_object_set (socket->resolver, "context", context, NULL); - } + if (socket->context) { + g_object_set (socket->resolver, "context", context, NULL); + } - socket->data_func = data_func; - socket->closed_func = closed_func; - socket->connect_func = connect_func; - socket->user_data = user_data; + socket->data_func = data_func; + socket->closed_func = closed_func; + socket->connect_func = connect_func; + socket->user_data = user_data; - lm_resolver_lookup (socket->resolver); + lm_resolver_lookup (socket->resolver); #if 0 - if (socket->connect_data == NULL) { - /* Open failed synchronously, probably a DNS lookup problem */ - lm_old_socket_unref(socket); - - g_set_error (error, - LM_ERROR, - LM_ERROR_CONNECTION_FAILED, - "Failed to resolve server"); - - return NULL; - } - + if (socket->connect_data == NULL) { + /* Open failed synchronously, probably a DNS lookup problem */ + lm_old_socket_unref(socket); + + g_set_error (error, + LM_ERROR, + LM_ERROR_CONNECTION_FAILED, + "Failed to resolve server"); + + return NULL; + } + #endif - - return socket; + + return socket; } void lm_old_socket_flush (LmOldSocket *socket) { - g_return_if_fail (socket != NULL); - g_return_if_fail (socket->io_channel != NULL); + g_return_if_fail (socket != NULL); + g_return_if_fail (socket->io_channel != NULL); - g_io_channel_flush (socket->io_channel, NULL); + g_io_channel_flush (socket->io_channel, NULL); } void lm_old_socket_close (LmOldSocket *socket) { - LmConnectData *data; + LmConnectData *data; - g_return_if_fail (socket != NULL); + g_return_if_fail (socket != NULL); - if (socket->watch_connect) { - g_source_destroy (socket->watch_connect); - socket->watch_connect = NULL; - } - - data = socket->connect_data; - if (data) { - socket->connect_data = NULL; - g_free (data); - } + if (socket->watch_connect) { + g_source_destroy (socket->watch_connect); + socket->watch_connect = NULL; + } + + data = socket->connect_data; + if (data) { + socket->connect_data = NULL; + g_free (data); + } - if (socket->resolver) { - g_object_unref (socket->resolver); - socket->resolver = NULL; + if (socket->resolver) { + g_object_unref (socket->resolver); + socket->resolver = NULL; + } + + if (socket->io_channel) { + if (socket->watch_in) { + g_source_destroy (socket->watch_in); + socket->watch_in = NULL; } - if (socket->io_channel) { - if (socket->watch_in) { - g_source_destroy (socket->watch_in); - socket->watch_in = NULL; - } + if (socket->watch_err) { + g_source_destroy (socket->watch_err); + socket->watch_err = NULL; + } - if (socket->watch_err) { - g_source_destroy (socket->watch_err); - socket->watch_err = NULL; - } + if (socket->watch_hup) { + g_source_destroy (socket->watch_hup); + socket->watch_hup = NULL; + } - if (socket->watch_hup) { - g_source_destroy (socket->watch_hup); - socket->watch_hup = NULL; - } + if (socket->watch_out) { + g_source_destroy (socket->watch_out); + socket->watch_out = NULL; + } - if (socket->watch_out) { - g_source_destroy (socket->watch_out); - socket->watch_out = NULL; - } + socket_close_io_channel (socket->io_channel); - socket_close_io_channel (socket->io_channel); + socket->io_channel = NULL; + socket->fd = -1; + } - socket->io_channel = NULL; - socket->fd = -1; - } - - if (socket->ssl) { - _lm_ssl_close (socket->ssl); - } + if (socket->ssl) { + _lm_ssl_close (socket->ssl); + } } gchar * lm_old_socket_get_local_host (LmOldSocket *socket) { - return _lm_sock_get_local_host (socket->fd); + return _lm_sock_get_local_host (socket->fd); } LmOldSocket * lm_old_socket_ref (LmOldSocket *socket) { - g_return_val_if_fail (socket != NULL, NULL); + g_return_val_if_fail (socket != NULL, NULL); - socket->ref_count++; + socket->ref_count++; - return socket; + return socket; } void lm_old_socket_unref (LmOldSocket *socket) { - g_return_if_fail (socket != NULL); + g_return_if_fail (socket != NULL); - socket->ref_count--; + socket->ref_count--; - if (socket->ref_count <= 0) { - socket_free (socket); - } + if (socket->ref_count <= 0) { + socket_free (socket); + } } gboolean lm_old_socket_set_keepalive (LmOldSocket *socket, int delay) { #ifdef USE_TCP_KEEPALIVES - return _lm_sock_set_keepalive (socket->fd, delay); + return _lm_sock_set_keepalive (socket->fd, delay); #else - return FALSE; + return FALSE; #endif /* USE_TCP_KEEPALIVES */ } void lm_old_socket_asyncns_cancel (LmOldSocket *socket) { - if (!socket->resolver) { - return; - } + if (!socket->resolver) { + return; + } - lm_resolver_cancel (socket->resolver); + lm_resolver_cancel (socket->resolver); } gboolean lm_old_socket_get_use_starttls (LmOldSocket *socket) { - if (!socket->ssl) { - return FALSE; - } + if (!socket->ssl) { + return FALSE; + } - return lm_ssl_get_use_starttls (socket->ssl); + return lm_ssl_get_use_starttls (socket->ssl); } gboolean lm_old_socket_get_require_starttls (LmOldSocket *socket) { - if (!socket->ssl) { - return FALSE; - } + if (!socket->ssl) { + return FALSE; + } - return lm_ssl_get_require_starttls (socket->ssl); + return lm_ssl_get_require_starttls (socket->ssl); } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-old-socket.h --- a/loudmouth/lm-old-socket.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-old-socket.h Wed Oct 08 13:11:02 2008 +0200 @@ -28,16 +28,16 @@ typedef struct _LmOldSocket LmOldSocket; typedef void (* IncomingDataFunc) (LmOldSocket *socket, - const gchar *buf, - gpointer user_data); + const gchar *buf, + gpointer user_data); typedef void (* SocketClosedFunc) (LmOldSocket *socket, - LmDisconnectReason reason, - gpointer user_data); + LmDisconnectReason reason, + gpointer user_data); typedef void (* ConnectResultFunc) (LmOldSocket *socket, gboolean result, - gpointer user_data); + gpointer user_data); LmOldSocket * lm_old_socket_create (GMainContext *context, IncomingDataFunc data_func, @@ -63,7 +63,7 @@ gboolean lm_old_socket_set_keepalive (LmOldSocket *socket, int delay); gchar * lm_old_socket_get_local_host (LmOldSocket *socket); -void lm_old_socket_asyncns_cancel (LmOldSocket *socket); +void lm_old_socket_asyncns_cancel (LmOldSocket *socket); gboolean lm_old_socket_get_use_starttls (LmOldSocket *socket); gboolean lm_old_socket_get_require_starttls (LmOldSocket *socket); diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-parser.c --- a/loudmouth/lm-parser.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-parser.c Wed Oct 08 13:11:02 2008 +0200 @@ -34,246 +34,246 @@ #define LM_PARSER(o) ((LmParser *) o) struct LmParser { - LmParserMessageFunction function; - gpointer user_data; - GDestroyNotify notify; - - LmMessageNode *cur_root; - LmMessageNode *cur_node; - - GMarkupParser *m_parser; - GMarkupParseContext *context; + LmParserMessageFunction function; + gpointer user_data; + GDestroyNotify notify; + + LmMessageNode *cur_root; + LmMessageNode *cur_node; + + GMarkupParser *m_parser; + GMarkupParseContext *context; }; /* Used while parsing */ static void parser_start_node_cb (GMarkupParseContext *context, - const gchar *node_name, - const gchar **attribute_names, - const gchar **attribute_values, - gpointer user_data, - GError **error); + const gchar *node_name, + const gchar **attribute_names, + const gchar **attribute_values, + gpointer user_data, + GError **error); static void parser_end_node_cb (GMarkupParseContext *context, - const gchar *node_name, - gpointer user_data, - GError **error); + const gchar *node_name, + gpointer user_data, + GError **error); static void parser_text_cb (GMarkupParseContext *context, - const gchar *text, - gsize text_len, - gpointer user_data, - GError **error); + const gchar *text, + gsize text_len, + gpointer user_data, + GError **error); static void parser_error_cb (GMarkupParseContext *context, - GError *error, - gpointer user_data); + GError *error, + gpointer user_data); static void parser_start_node_cb (GMarkupParseContext *context, - const gchar *node_name, - const gchar **attribute_names, - const gchar **attribute_values, - gpointer user_data, - GError **error) -{ - LmParser *parser; - gint i; - - parser = LM_PARSER (user_data);; - + const gchar *node_name, + const gchar **attribute_names, + const gchar **attribute_values, + gpointer user_data, + GError **error) +{ + LmParser *parser; + gint i; + + parser = LM_PARSER (user_data);; + -/* parser->cur_depth++; */ +/* parser->cur_depth++; */ - if (!parser->cur_root) { - /* New toplevel element */ - parser->cur_root = _lm_message_node_new (node_name); - parser->cur_node = parser->cur_root; - } else { - LmMessageNode *parent_node; - - parent_node = parser->cur_node; - - parser->cur_node = _lm_message_node_new (node_name); - _lm_message_node_add_child_node (parent_node, - parser->cur_node); - } + if (!parser->cur_root) { + /* New toplevel element */ + parser->cur_root = _lm_message_node_new (node_name); + parser->cur_node = parser->cur_root; + } else { + LmMessageNode *parent_node; + + parent_node = parser->cur_node; + + parser->cur_node = _lm_message_node_new (node_name); + _lm_message_node_add_child_node (parent_node, + parser->cur_node); + } - for (i = 0; attribute_names[i]; ++i) { - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_PARSER, - "ATTRIBUTE: %s = %s\n", - attribute_names[i], - attribute_values[i]); - - lm_message_node_set_attributes (parser->cur_node, - attribute_names[i], - attribute_values[i], - NULL); - } - - if (strcmp ("stream:stream", node_name) == 0) { - parser_end_node_cb (context, - "stream:stream", - user_data, - error); - } + for (i = 0; attribute_names[i]; ++i) { + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_PARSER, + "ATTRIBUTE: %s = %s\n", + attribute_names[i], + attribute_values[i]); + + lm_message_node_set_attributes (parser->cur_node, + attribute_names[i], + attribute_values[i], + NULL); + } + + if (strcmp ("stream:stream", node_name) == 0) { + parser_end_node_cb (context, + "stream:stream", + user_data, + error); + } } static void parser_end_node_cb (GMarkupParseContext *context, - const gchar *node_name, - gpointer user_data, - GError **error) + const gchar *node_name, + gpointer user_data, + GError **error) { - LmParser *parser; - - parser = LM_PARSER (user_data); - - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_PARSER, - "Trying to close node: %s\n", node_name); + LmParser *parser; + + parser = LM_PARSER (user_data); + + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_PARSER, + "Trying to close node: %s\n", node_name); - if (!parser->cur_node) { - /* FIXME: LM-1 should look at this */ - return; + if (!parser->cur_node) { + /* FIXME: LM-1 should look at this */ + return; + } + + if (strcmp (parser->cur_node->name, node_name) != 0) { + if (strcmp (node_name, "stream:stream")) { + g_print ("Got an stream:stream end\n"); } - if (strcmp (parser->cur_node->name, node_name) != 0) { - if (strcmp (node_name, "stream:stream")) { - g_print ("Got an stream:stream end\n"); - } - - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_PARSER, - "Trying to close node that isn't open: %s", - node_name); - return; - } + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_PARSER, + "Trying to close node that isn't open: %s", + node_name); + return; + } - if (parser->cur_node == parser->cur_root) { - LmMessage *m; - - m = _lm_message_new_from_node (parser->cur_root); + if (parser->cur_node == parser->cur_root) { + LmMessage *m; + + m = _lm_message_new_from_node (parser->cur_root); + + if (!m) { + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_PARSER, + "Couldn't create message: %s\n", + parser->cur_root->name); + return; + } - if (!m) { - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_PARSER, - "Couldn't create message: %s\n", - parser->cur_root->name); - return; - } - - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_PARSER, - "Have a new message\n"); - if (parser->function) { - (* parser->function) (parser, m, parser->user_data); - } + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_PARSER, + "Have a new message\n"); + if (parser->function) { + (* parser->function) (parser, m, parser->user_data); + } - lm_message_unref (m); - lm_message_node_unref (parser->cur_root); - - - parser->cur_node = parser->cur_root = NULL; - } else { - LmMessageNode *tmp_node; - tmp_node = parser->cur_node; - parser->cur_node = parser->cur_node->parent; + lm_message_unref (m); + lm_message_node_unref (parser->cur_root); + + + parser->cur_node = parser->cur_root = NULL; + } else { + LmMessageNode *tmp_node; + tmp_node = parser->cur_node; + parser->cur_node = parser->cur_node->parent; - lm_message_node_unref (tmp_node); - } + lm_message_node_unref (tmp_node); + } } static void parser_text_cb (GMarkupParseContext *context, - const gchar *text, - gsize text_len, - gpointer user_data, - GError **error) + const gchar *text, + gsize text_len, + gpointer user_data, + GError **error) { - LmParser *parser; - - g_return_if_fail (user_data != NULL); - - parser = LM_PARSER (user_data); - - if (parser->cur_node && strcmp (text, "") != 0) { - lm_message_node_set_value (parser->cur_node, text); - } + LmParser *parser; + + g_return_if_fail (user_data != NULL); + + parser = LM_PARSER (user_data); + + if (parser->cur_node && strcmp (text, "") != 0) { + lm_message_node_set_value (parser->cur_node, text); + } } static void parser_error_cb (GMarkupParseContext *context, - GError *error, - gpointer user_data) + GError *error, + gpointer user_data) { - g_return_if_fail (user_data != NULL); - g_return_if_fail (error != NULL); - - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_PARSER, - "Parsing failed: %s\n", error->message); + g_return_if_fail (user_data != NULL); + g_return_if_fail (error != NULL); + + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_PARSER, + "Parsing failed: %s\n", error->message); } LmParser * lm_parser_new (LmParserMessageFunction function, - gpointer user_data, - GDestroyNotify notify) + gpointer user_data, + GDestroyNotify notify) { - LmParser *parser; - - parser = g_new0 (LmParser, 1); - if (!parser) { - return NULL; - } - - parser->m_parser = g_new0 (GMarkupParser, 1); - if (!parser->m_parser) { - g_free (parser); - return NULL; - } + LmParser *parser; + + parser = g_new0 (LmParser, 1); + if (!parser) { + return NULL; + } + + parser->m_parser = g_new0 (GMarkupParser, 1); + if (!parser->m_parser) { + g_free (parser); + return NULL; + } - parser->function = function; - parser->user_data = user_data; - parser->notify = notify; - - parser->m_parser->start_element = parser_start_node_cb; - parser->m_parser->end_element = parser_end_node_cb; - parser->m_parser->text = parser_text_cb; - parser->m_parser->error = parser_error_cb; + parser->function = function; + parser->user_data = user_data; + parser->notify = notify; + + parser->m_parser->start_element = parser_start_node_cb; + parser->m_parser->end_element = parser_end_node_cb; + parser->m_parser->text = parser_text_cb; + parser->m_parser->error = parser_error_cb; - parser->context = g_markup_parse_context_new (parser->m_parser, 0, - parser, NULL); + parser->context = g_markup_parse_context_new (parser->m_parser, 0, + parser, NULL); - parser->cur_root = NULL; - parser->cur_node = NULL; + parser->cur_root = NULL; + parser->cur_node = NULL; - return parser; + return parser; } gboolean lm_parser_parse (LmParser *parser, const gchar *string) { - g_return_val_if_fail (parser != NULL, FALSE); - - if (!parser->context) { - parser->context = g_markup_parse_context_new (parser->m_parser, 0, - parser, NULL); - } + g_return_val_if_fail (parser != NULL, FALSE); + + if (!parser->context) { + parser->context = g_markup_parse_context_new (parser->m_parser, 0, + parser, NULL); + } - if (g_markup_parse_context_parse (parser->context, string, - (gssize)strlen (string), NULL)) { - return TRUE; - } else { - g_markup_parse_context_free (parser->context); - parser->context = NULL; - return FALSE; - } + if (g_markup_parse_context_parse (parser->context, string, + (gssize)strlen (string), NULL)) { + return TRUE; + } else { + g_markup_parse_context_free (parser->context); + parser->context = NULL; + return FALSE; + } } void lm_parser_free (LmParser *parser) { - if (parser->notify) { - (* parser->notify) (parser->user_data); - } + if (parser->notify) { + (* parser->notify) (parser->user_data); + } - if (parser->context) { - g_markup_parse_context_free (parser->context); - } - g_free (parser->m_parser); - g_free (parser); + if (parser->context) { + g_markup_parse_context_free (parser->context); + } + g_free (parser->m_parser); + g_free (parser); } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-parser.h --- a/loudmouth/lm-parser.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-parser.h Wed Oct 08 13:11:02 2008 +0200 @@ -27,14 +27,14 @@ typedef struct LmParser LmParser; typedef void (* LmParserMessageFunction) (LmParser *parser, - LmMessage *message, - gpointer user_data); + LmMessage *message, + gpointer user_data); LmParser * lm_parser_new (LmParserMessageFunction function, - gpointer user_data, - GDestroyNotify notify); + gpointer user_data, + GDestroyNotify notify); gboolean lm_parser_parse (LmParser *parser, - const gchar *string); + const gchar *string); void lm_parser_free (LmParser *parser); #endif /* __LM_PARSER_H__ */ diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-proxy.c --- a/loudmouth/lm-proxy.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-proxy.c Wed Oct 08 13:11:02 2008 +0200 @@ -31,8 +31,8 @@ * * connection = lm_connection_new ("myserver"); * proxy = lm_proxy_new_with_server (LM_PROXY_TYPE_HTTP, - * "myproxyserver", - * 8080); + * "myproxyserver", + * 8080); * lm_connection_set_proxy (connection, proxy); * ...]]> */ @@ -58,28 +58,28 @@ #include "lm-utils.h" struct _LmProxy { - LmProxyType type; - gchar *server; - guint port; - gchar *username; - gchar *password; - guint io_watch; + LmProxyType type; + gchar *server; + guint port; + gchar *username; + gchar *password; + guint io_watch; - gint ref_count; + gint ref_count; }; static void proxy_free (LmProxy *proxy); static gboolean proxy_http_negotiate (LmProxy *proxy, - gint fd, - const gchar *server, - guint port); + gint fd, + const gchar *server, + guint port); static gboolean proxy_negotiate (LmProxy *proxy, - gint fd, - const gchar *server, - guint port); + gint fd, + const gchar *server, + guint port); static gboolean proxy_http_read_cb (GIOChannel *source, - GIOCondition condition, - gpointer data); + GIOCondition condition, + gpointer data); static gboolean proxy_read_cb (GIOChannel *source, GIOCondition condition, gpointer data); @@ -87,159 +87,159 @@ static void proxy_free (LmProxy *proxy) { - g_free (proxy->server); - g_free (proxy->username); - g_free (proxy->password); + g_free (proxy->server); + g_free (proxy->username); + g_free (proxy->password); - g_free (proxy); + g_free (proxy); } static gboolean proxy_http_negotiate (LmProxy *proxy, gint fd, const gchar *server, guint port) { - gchar *str; + gchar *str; - if (proxy->username && proxy->password) { - gchar *tmp1; - gchar *tmp2; + if (proxy->username && proxy->password) { + gchar *tmp1; + gchar *tmp2; - tmp1 = g_strdup_printf ("%s:%s", - proxy->username, - proxy->password); - tmp2 = g_base64_encode ((const guchar *) tmp1, - (gsize) strlen (tmp1)); - g_free (tmp1); + tmp1 = g_strdup_printf ("%s:%s", + proxy->username, + proxy->password); + tmp2 = g_base64_encode ((const guchar *) tmp1, + (gsize) strlen (tmp1)); + g_free (tmp1); - str = g_strdup_printf ("CONNECT %s:%u HTTP/1.1\r\nHost: %s:%u\r\nProxy-Authorization: Basic %s\r\n\r\n", - server, port, - server, port, - tmp2); - g_free (tmp2); - } else { - str = g_strdup_printf ("CONNECT %s:%u HTTP/1.1\r\nHost: %s:%u\r\n\r\n", - server, port, - server, port); - } + str = g_strdup_printf ("CONNECT %s:%u HTTP/1.1\r\nHost: %s:%u\r\nProxy-Authorization: Basic %s\r\n\r\n", + server, port, + server, port, + tmp2); + g_free (tmp2); + } else { + str = g_strdup_printf ("CONNECT %s:%u HTTP/1.1\r\nHost: %s:%u\r\n\r\n", + server, port, + server, port); + } - send (fd, str, strlen (str), 0); - g_free (str); - return TRUE; + send (fd, str, strlen (str), 0); + g_free (str); + return TRUE; } /* returns TRUE when connected through proxy */ static gboolean proxy_http_read_cb (GIOChannel *source, GIOCondition condition, gpointer data) { - gchar buf[512]; - gsize bytes_read; - GError *error = NULL; + gchar buf[512]; + gsize bytes_read; + GError *error = NULL; - g_io_channel_read_chars (source, buf, 512, &bytes_read, &error); + g_io_channel_read_chars (source, buf, 512, &bytes_read, &error); - if (bytes_read < 16) { - return FALSE; - } + if (bytes_read < 16) { + return FALSE; + } - if (strncmp (buf, "HTTP/1.1 200", 12) != 0 && - strncmp (buf, "HTTP/1.0 200", 12) != 0) { - return FALSE; - } + if (strncmp (buf, "HTTP/1.1 200", 12) != 0 && + strncmp (buf, "HTTP/1.0 200", 12) != 0) { + return FALSE; + } - if (strncmp (buf + (bytes_read - 4), "\r\n\r\n", 4) != 0) { - return FALSE; - } + if (strncmp (buf + (bytes_read - 4), "\r\n\r\n", 4) != 0) { + return FALSE; + } - return TRUE; + return TRUE; } static gboolean proxy_read_cb (GIOChannel *source, GIOCondition condition, gpointer data) { - LmConnectData *connect_data; - LmConnection *connection; - LmProxy *proxy; - gboolean retval = FALSE; + LmConnectData *connect_data; + LmConnection *connection; + LmProxy *proxy; + gboolean retval = FALSE; - connect_data = (LmConnectData *) data; - connection = connect_data->connection; - proxy = lm_connection_get_proxy (connection); + connect_data = (LmConnectData *) data; + connection = connect_data->connection; + proxy = lm_connection_get_proxy (connection); - g_return_val_if_fail (proxy != NULL, FALSE); + g_return_val_if_fail (proxy != NULL, FALSE); - if (lm_connection_is_open (connection)) { - return FALSE; - } + if (lm_connection_is_open (connection)) { + return FALSE; + } - switch (lm_proxy_get_type (proxy)) { - default: - case LM_PROXY_TYPE_NONE: - g_assert_not_reached (); - break; - case LM_PROXY_TYPE_HTTP: - retval = proxy_http_read_cb (source, condition, data); - break; - } + switch (lm_proxy_get_type (proxy)) { + default: + case LM_PROXY_TYPE_NONE: + g_assert_not_reached (); + break; + case LM_PROXY_TYPE_HTTP: + retval = proxy_http_read_cb (source, condition, data); + break; + } - if (retval == TRUE) { - g_source_remove (proxy->io_watch); - _lm_old_socket_succeeded ((LmConnectData *) data); - } + if (retval == TRUE) { + g_source_remove (proxy->io_watch); + _lm_old_socket_succeeded ((LmConnectData *) data); + } - return FALSE; + return FALSE; } gboolean proxy_negotiate (LmProxy *proxy, gint fd, const gchar *server, guint port) { - g_return_val_if_fail (proxy != NULL, FALSE); + g_return_val_if_fail (proxy != NULL, FALSE); - switch (proxy->type) { - case LM_PROXY_TYPE_NONE: - return TRUE; - case LM_PROXY_TYPE_HTTP: - return proxy_http_negotiate (proxy, fd, server, port); - default: - g_assert_not_reached (); - } + switch (proxy->type) { + case LM_PROXY_TYPE_NONE: + return TRUE; + case LM_PROXY_TYPE_HTTP: + return proxy_http_negotiate (proxy, fd, server, port); + default: + g_assert_not_reached (); + } - return FALSE; + return FALSE; } gboolean _lm_proxy_connect_cb (GIOChannel *source, GIOCondition condition, gpointer data) { - LmConnection *connection; - LmConnectData *connect_data; - LmProxy *proxy; - int error; - socklen_t len; + LmConnection *connection; + LmConnectData *connect_data; + LmProxy *proxy; + int error; + socklen_t len; - connect_data = (LmConnectData *) data; - connection = connect_data->connection; - proxy = lm_connection_get_proxy (connection); + connect_data = (LmConnectData *) data; + connection = connect_data->connection; + proxy = lm_connection_get_proxy (connection); - g_return_val_if_fail (proxy != NULL, FALSE); + g_return_val_if_fail (proxy != NULL, FALSE); - if (condition == G_IO_ERR) { - len = sizeof (error); - _lm_sock_get_error (connect_data->fd, &error, &len); - _lm_old_socket_failed_with_error (connect_data, error); - return FALSE; - } else if (condition == G_IO_OUT) { - if (!proxy_negotiate (lm_connection_get_proxy (connection), connect_data->fd, lm_connection_get_server (connection), lm_connection_get_port (connection))) { - _lm_old_socket_failed (connect_data); - return FALSE; - } - - proxy->io_watch = g_io_add_watch (connect_data->io_channel, - G_IO_IN|G_IO_ERR, - (GIOFunc) proxy_read_cb, - connect_data); - } else { - g_assert_not_reached (); - } + if (condition == G_IO_ERR) { + len = sizeof (error); + _lm_sock_get_error (connect_data->fd, &error, &len); + _lm_old_socket_failed_with_error (connect_data, error); + return FALSE; + } else if (condition == G_IO_OUT) { + if (!proxy_negotiate (lm_connection_get_proxy (connection), connect_data->fd, lm_connection_get_server (connection), lm_connection_get_port (connection))) { + _lm_old_socket_failed (connect_data); + return FALSE; + } + + proxy->io_watch = g_io_add_watch (connect_data->io_channel, + G_IO_IN|G_IO_ERR, + (GIOFunc) proxy_read_cb, + connect_data); + } else { + g_assert_not_reached (); + } - return FALSE; + return FALSE; } /** @@ -254,22 +254,22 @@ LmProxy * lm_proxy_new (LmProxyType type) { - LmProxy *proxy; + LmProxy *proxy; - proxy = g_new0 (LmProxy, 1); - - proxy->ref_count = 1; - proxy->type = type; + proxy = g_new0 (LmProxy, 1); + + proxy->ref_count = 1; + proxy->type = type; - switch (proxy->type) { - case LM_PROXY_TYPE_HTTP: - proxy->port = 8000; - break; - default: - proxy->port = 0; - } + switch (proxy->type) { + case LM_PROXY_TYPE_HTTP: + proxy->port = 8000; + break; + default: + proxy->port = 0; + } - return proxy; + return proxy; } /** @@ -285,16 +285,16 @@ **/ LmProxy * lm_proxy_new_with_server (LmProxyType type, - const gchar *server, - guint port) + const gchar *server, + guint port) { - LmProxy *proxy; + LmProxy *proxy; - proxy = lm_proxy_new (type); - lm_proxy_set_server (proxy, server); - lm_proxy_set_port (proxy, port); + proxy = lm_proxy_new (type); + lm_proxy_set_server (proxy, server); + lm_proxy_set_port (proxy, port); - return proxy; + return proxy; } /** @@ -308,9 +308,9 @@ LmProxyType lm_proxy_get_type (LmProxy *proxy) { - g_return_val_if_fail (proxy != NULL, LM_PROXY_TYPE_NONE); + g_return_val_if_fail (proxy != NULL, LM_PROXY_TYPE_NONE); - return proxy->type; + return proxy->type; } /** @@ -323,9 +323,9 @@ void lm_proxy_set_type (LmProxy *proxy, LmProxyType type) { - g_return_if_fail (proxy != NULL); + g_return_if_fail (proxy != NULL); - proxy->type = type; + proxy->type = type; } /** @@ -339,9 +339,9 @@ const gchar * lm_proxy_get_server (LmProxy *proxy) { - g_return_val_if_fail (proxy != NULL, NULL); - - return proxy->server; + g_return_val_if_fail (proxy != NULL, NULL); + + return proxy->server; } /** @@ -354,11 +354,11 @@ void lm_proxy_set_server (LmProxy *proxy, const gchar *server) { - g_return_if_fail (proxy != NULL); - g_return_if_fail (server != NULL); - - g_free (proxy->server); - proxy->server = _lm_utils_hostname_to_punycode (server); + g_return_if_fail (proxy != NULL); + g_return_if_fail (server != NULL); + + g_free (proxy->server); + proxy->server = _lm_utils_hostname_to_punycode (server); } /** @@ -372,9 +372,9 @@ guint lm_proxy_get_port (LmProxy *proxy) { - g_return_val_if_fail (proxy != NULL, 0); + g_return_val_if_fail (proxy != NULL, 0); - return proxy->port; + return proxy->port; } /** @@ -387,9 +387,9 @@ void lm_proxy_set_port (LmProxy *proxy, guint port) { - g_return_if_fail (proxy != NULL); - - proxy->port = port; + g_return_if_fail (proxy != NULL); + + proxy->port = port; } /** @@ -403,9 +403,9 @@ const gchar * lm_proxy_get_username (LmProxy *proxy) { - g_return_val_if_fail (proxy != NULL, NULL); - - return proxy->username; + g_return_val_if_fail (proxy != NULL, NULL); + + return proxy->username; } /** @@ -418,15 +418,15 @@ void lm_proxy_set_username (LmProxy *proxy, const gchar *username) { - g_return_if_fail (proxy != NULL); - - g_free (proxy->username); - - if (username) { - proxy->username = g_strdup (username); - } else { - proxy->username = NULL; - } + g_return_if_fail (proxy != NULL); + + g_free (proxy->username); + + if (username) { + proxy->username = g_strdup (username); + } else { + proxy->username = NULL; + } } /** * lm_proxy_get_password: @@ -439,9 +439,9 @@ const gchar * lm_proxy_get_password (LmProxy *proxy) { - g_return_val_if_fail (proxy != NULL, NULL); - - return proxy->password; + g_return_val_if_fail (proxy != NULL, NULL); + + return proxy->password; } /** @@ -454,15 +454,15 @@ void lm_proxy_set_password (LmProxy *proxy, const gchar *password) { - g_return_if_fail (proxy != NULL); - - g_free (proxy->password); + g_return_if_fail (proxy != NULL); + + g_free (proxy->password); - if (password) { - proxy->password = g_strdup (password); - } else { - proxy->password = NULL; - } + if (password) { + proxy->password = g_strdup (password); + } else { + proxy->password = NULL; + } } /** @@ -476,10 +476,10 @@ LmProxy * lm_proxy_ref (LmProxy *proxy) { - g_return_val_if_fail (proxy != NULL, NULL); - - proxy->ref_count++; - return proxy; + g_return_val_if_fail (proxy != NULL, NULL); + + proxy->ref_count++; + return proxy; } /** @@ -492,11 +492,11 @@ void lm_proxy_unref (LmProxy *proxy) { - g_return_if_fail (proxy != NULL); - - proxy->ref_count--; + g_return_if_fail (proxy != NULL); + + proxy->ref_count--; - if (proxy->ref_count == 0) { - proxy_free (proxy); - } + if (proxy->ref_count == 0) { + proxy_free (proxy); + } } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-proxy.h --- a/loudmouth/lm-proxy.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-proxy.h Wed Oct 08 13:11:02 2008 +0200 @@ -41,34 +41,34 @@ * The type of the proxy. */ typedef enum { - LM_PROXY_TYPE_NONE = 0, - LM_PROXY_TYPE_HTTP + LM_PROXY_TYPE_NONE = 0, + LM_PROXY_TYPE_HTTP } LmProxyType; LmProxy * lm_proxy_new (LmProxyType type); LmProxy * lm_proxy_new_with_server (LmProxyType type, - const gchar *server, - guint port); + const gchar *server, + guint port); LmProxyType lm_proxy_get_type (LmProxy *proxy); void lm_proxy_set_type (LmProxy *proxy, - LmProxyType type); + LmProxyType type); const gchar * lm_proxy_get_server (LmProxy *proxy); void lm_proxy_set_server (LmProxy *proxy, - const gchar *server); + const gchar *server); guint lm_proxy_get_port (LmProxy *proxy); void lm_proxy_set_port (LmProxy *proxy, - guint port); + guint port); const gchar * lm_proxy_get_username (LmProxy *proxy); void lm_proxy_set_username (LmProxy *proxy, - const gchar *username); + const gchar *username); const gchar * lm_proxy_get_password (LmProxy *proxy); void lm_proxy_set_password (LmProxy *proxy, - const gchar *password); + const gchar *password); LmProxy * lm_proxy_ref (LmProxy *proxy); void lm_proxy_unref (LmProxy *proxy); diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-resolver.c --- a/loudmouth/lm-resolver.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-resolver.c Wed Oct 08 13:11:02 2008 +0200 @@ -40,25 +40,25 @@ typedef struct LmResolverPriv LmResolverPriv; struct LmResolverPriv { - GMainContext *context; + GMainContext *context; - LmResolverCallback callback; - gpointer user_data; + LmResolverCallback callback; + gpointer user_data; - /* -- Properties -- */ - LmResolverType type; - gchar *host; - guint port; + /* -- Properties -- */ + LmResolverType type; + gchar *host; + guint port; - /* For SRV lookups */ - gchar *domain; - gchar *service; - gchar *protocol; + /* For SRV lookups */ + gchar *domain; + gchar *service; + gchar *protocol; - /* The results */ - LmResolverResult result; - struct addrinfo *results; - struct addrinfo *current_result; + /* The results */ + LmResolverResult result; + struct addrinfo *results; + struct addrinfo *current_result; }; static void resolver_finalize (GObject *object); @@ -74,116 +74,116 @@ G_DEFINE_TYPE (LmResolver, lm_resolver, G_TYPE_OBJECT) enum { - PROP_0, - PROP_CONTEXT, - PROP_TYPE, - PROP_HOST, - PROP_PORT, - PROP_DOMAIN, - PROP_SERVICE, - PROP_PROTOCOL + PROP_0, + PROP_CONTEXT, + PROP_TYPE, + PROP_HOST, + PROP_PORT, + PROP_DOMAIN, + PROP_SERVICE, + PROP_PROTOCOL }; static void lm_resolver_class_init (LmResolverClass *class) { - GObjectClass *object_class = G_OBJECT_CLASS (class); + GObjectClass *object_class = G_OBJECT_CLASS (class); - object_class->finalize = resolver_finalize; - object_class->get_property = resolver_get_property; - object_class->set_property = resolver_set_property; + object_class->finalize = resolver_finalize; + object_class->get_property = resolver_get_property; + object_class->set_property = resolver_set_property; - g_object_class_install_property (object_class, - PROP_CONTEXT, - g_param_spec_pointer ("context", - "Context", - "Main context to use", - G_PARAM_READWRITE)); + g_object_class_install_property (object_class, + PROP_CONTEXT, + g_param_spec_pointer ("context", + "Context", + "Main context to use", + G_PARAM_READWRITE)); - g_object_class_install_property (object_class, - PROP_TYPE, - g_param_spec_int ("type", - "Type", - "Resolver Type", - LM_RESOLVER_HOST, - LM_RESOLVER_SRV, - LM_RESOLVER_HOST, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (object_class, + PROP_TYPE, + g_param_spec_int ("type", + "Type", + "Resolver Type", + LM_RESOLVER_HOST, + LM_RESOLVER_SRV, + LM_RESOLVER_HOST, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); - g_object_class_install_property (object_class, - PROP_HOST, - g_param_spec_string ("host", - "Host", - "Host to lookup", - NULL, - G_PARAM_READWRITE)); + g_object_class_install_property (object_class, + PROP_HOST, + g_param_spec_string ("host", + "Host", + "Host to lookup", + NULL, + G_PARAM_READWRITE)); - g_object_class_install_property (object_class, - PROP_PORT, - g_param_spec_uint ("port", - "Port", - "Port number", - 0, - LM_MAX_PORT, - 0, - G_PARAM_READWRITE)); + g_object_class_install_property (object_class, + PROP_PORT, + g_param_spec_uint ("port", + "Port", + "Port number", + 0, + LM_MAX_PORT, + 0, + G_PARAM_READWRITE)); - g_object_class_install_property (object_class, - PROP_DOMAIN, - g_param_spec_string ("domain", - "Domain", - "Domain to lookup", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (object_class, + PROP_DOMAIN, + g_param_spec_string ("domain", + "Domain", + "Domain to lookup", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); - g_object_class_install_property (object_class, - PROP_SERVICE, - g_param_spec_string ("service", - "Service", - "Service to lookup", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (object_class, + PROP_SERVICE, + g_param_spec_string ("service", + "Service", + "Service to lookup", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); - g_object_class_install_property (object_class, - PROP_PROTOCOL, - g_param_spec_string ("protocol", - "Protocol", - "Protocol for SRV lookup", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (object_class, + PROP_PROTOCOL, + g_param_spec_string ("protocol", + "Protocol", + "Protocol for SRV lookup", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); - g_type_class_add_private (object_class, sizeof (LmResolverPriv)); + g_type_class_add_private (object_class, sizeof (LmResolverPriv)); } static void lm_resolver_init (LmResolver *resolver) { - LmResolverPriv *priv; + LmResolverPriv *priv; - priv = GET_PRIV (resolver); + priv = GET_PRIV (resolver); } static void resolver_finalize (GObject *object) { - LmResolverPriv *priv; + LmResolverPriv *priv; - priv = GET_PRIV (object); + priv = GET_PRIV (object); - g_free (priv->host); - g_free (priv->domain); - g_free (priv->service); - g_free (priv->protocol); + g_free (priv->host); + g_free (priv->domain); + g_free (priv->service); + g_free (priv->protocol); - if (priv->context) { - g_main_context_unref (priv->context); - } + if (priv->context) { + g_main_context_unref (priv->context); + } - if (priv->results) { - freeaddrinfo (priv->results); - } + if (priv->results) { + freeaddrinfo (priv->results); + } - (G_OBJECT_CLASS (lm_resolver_parent_class)->finalize) (object); + (G_OBJECT_CLASS (lm_resolver_parent_class)->finalize) (object); } static void @@ -192,36 +192,36 @@ GValue *value, GParamSpec *pspec) { - LmResolverPriv *priv; + LmResolverPriv *priv; - priv = GET_PRIV (object); + priv = GET_PRIV (object); - switch (param_id) { - case PROP_CONTEXT: - g_value_set_pointer (value, priv->context); - break; - case PROP_TYPE: - g_value_set_int (value, priv->type); - break; - case PROP_HOST: - g_value_set_string (value, priv->host); - break; - case PROP_PORT: - g_value_set_uint (value, priv->port); - break; - case PROP_DOMAIN: - g_value_set_string (value, priv->domain); - break; - case PROP_SERVICE: - g_value_set_string (value, priv->service); - break; - case PROP_PROTOCOL: - g_value_set_string (value, priv->protocol); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); - break; - }; + switch (param_id) { + case PROP_CONTEXT: + g_value_set_pointer (value, priv->context); + break; + case PROP_TYPE: + g_value_set_int (value, priv->type); + break; + case PROP_HOST: + g_value_set_string (value, priv->host); + break; + case PROP_PORT: + g_value_set_uint (value, priv->port); + break; + case PROP_DOMAIN: + g_value_set_string (value, priv->domain); + break; + case PROP_SERVICE: + g_value_set_string (value, priv->service); + break; + case PROP_PROTOCOL: + g_value_set_string (value, priv->protocol); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); + break; + }; } static void @@ -230,61 +230,61 @@ const GValue *value, GParamSpec *pspec) { - LmResolverPriv *priv; + LmResolverPriv *priv; - priv = GET_PRIV (object); + priv = GET_PRIV (object); - switch (param_id) { - case PROP_CONTEXT: - if (priv->context) { - g_main_context_unref (priv->context); - } + switch (param_id) { + case PROP_CONTEXT: + if (priv->context) { + g_main_context_unref (priv->context); + } - priv->context = (GMainContext *) g_value_get_pointer (value); - g_main_context_ref (priv->context); - break; - case PROP_TYPE: - priv->type = g_value_get_int (value); - break; - case PROP_HOST: - g_free (priv->host); - priv->host = g_value_dup_string (value); - break; - case PROP_PORT: - priv->port = g_value_get_uint (value); - break; - case PROP_DOMAIN: - g_free (priv->domain); - priv->domain = g_value_dup_string (value); - break; - case PROP_SERVICE: - g_free (priv->service); - priv->service = g_value_dup_string (value); - break; - case PROP_PROTOCOL: - g_free (priv->protocol); - priv->protocol = g_value_dup_string (value); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); - break; - }; + priv->context = (GMainContext *) g_value_get_pointer (value); + g_main_context_ref (priv->context); + break; + case PROP_TYPE: + priv->type = g_value_get_int (value); + break; + case PROP_HOST: + g_free (priv->host); + priv->host = g_value_dup_string (value); + break; + case PROP_PORT: + priv->port = g_value_get_uint (value); + break; + case PROP_DOMAIN: + g_free (priv->domain); + priv->domain = g_value_dup_string (value); + break; + case PROP_SERVICE: + g_free (priv->service); + priv->service = g_value_dup_string (value); + break; + case PROP_PROTOCOL: + g_free (priv->protocol); + priv->protocol = g_value_dup_string (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); + break; + }; } LmResolver * lm_resolver_new (GMainContext *context) { - LmResolver *resolver; + LmResolver *resolver; #if HAVE_ASYNCNS - resolver = g_object_new (LM_TYPE_ASYNCNS_RESOLVER, NULL); + resolver = g_object_new (LM_TYPE_ASYNCNS_RESOLVER, NULL); #else - resolver = g_object_new (LM_TYPE_BLOCKING_RESOLVER, NULL); + resolver = g_object_new (LM_TYPE_BLOCKING_RESOLVER, NULL); #endif - g_object_set (resolver, "context", context, NULL); + g_object_set (resolver, "context", context, NULL); - return resolver; + return resolver; } LmResolver * @@ -292,23 +292,23 @@ LmResolverCallback callback, gpointer user_data) { - LmResolver *resolver; - LmResolverPriv *priv; + LmResolver *resolver; + LmResolverPriv *priv; - g_return_val_if_fail (host != NULL, NULL); - g_return_val_if_fail (callback != NULL, NULL); + g_return_val_if_fail (host != NULL, NULL); + g_return_val_if_fail (callback != NULL, NULL); - resolver = g_object_new (LM_TYPE_ASYNCNS_RESOLVER, - "type", LM_RESOLVER_HOST, - "host", host, - NULL); + resolver = g_object_new (LM_TYPE_ASYNCNS_RESOLVER, + "type", LM_RESOLVER_HOST, + "host", host, + NULL); - priv = GET_PRIV (resolver); + priv = GET_PRIV (resolver); - priv->callback = callback; - priv->user_data = user_data; + priv->callback = callback; + priv->user_data = user_data; - return resolver; + return resolver; } LmResolver * @@ -318,37 +318,37 @@ LmResolverCallback callback, gpointer user_data) { - LmResolver *resolver; - LmResolverPriv *priv; + LmResolver *resolver; + LmResolverPriv *priv; - g_return_val_if_fail (domain != NULL, NULL); - g_return_val_if_fail (service != NULL, NULL); - g_return_val_if_fail (protocol != NULL, NULL); - g_return_val_if_fail (callback != NULL, NULL); + g_return_val_if_fail (domain != NULL, NULL); + g_return_val_if_fail (service != NULL, NULL); + g_return_val_if_fail (protocol != NULL, NULL); + g_return_val_if_fail (callback != NULL, NULL); - resolver = g_object_new (LM_TYPE_ASYNCNS_RESOLVER, - "type", LM_RESOLVER_SRV, - "domain", domain, - "service", service, - "protocol", protocol, - NULL); + resolver = g_object_new (LM_TYPE_ASYNCNS_RESOLVER, + "type", LM_RESOLVER_SRV, + "domain", domain, + "service", service, + "protocol", protocol, + NULL); - priv = GET_PRIV (resolver); + priv = GET_PRIV (resolver); - priv->callback = callback; - priv->user_data = user_data; + priv->callback = callback; + priv->user_data = user_data; - return resolver; + return resolver; } void lm_resolver_lookup (LmResolver *resolver) { - if (!LM_RESOLVER_GET_CLASS(resolver)) { - g_assert_not_reached (); - } + if (!LM_RESOLVER_GET_CLASS(resolver)) { + g_assert_not_reached (); + } - LM_RESOLVER_GET_CLASS(resolver)->lookup (resolver); + LM_RESOLVER_GET_CLASS(resolver)->lookup (resolver); } void @@ -362,44 +362,44 @@ void lm_resolver_cancel (LmResolver *resolver) { - if (!LM_RESOLVER_GET_CLASS(resolver)->cancel) { - g_assert_not_reached (); - } + if (!LM_RESOLVER_GET_CLASS(resolver)->cancel) { + g_assert_not_reached (); + } - LM_RESOLVER_GET_CLASS(resolver)->cancel (resolver); + LM_RESOLVER_GET_CLASS(resolver)->cancel (resolver); } /* To iterate through the results */ struct addrinfo * lm_resolver_results_get_next (LmResolver *resolver) { - LmResolverPriv *priv; - struct addrinfo *ret_val; + LmResolverPriv *priv; + struct addrinfo *ret_val; - g_return_val_if_fail (LM_IS_RESOLVER (resolver), NULL); + g_return_val_if_fail (LM_IS_RESOLVER (resolver), NULL); - priv = GET_PRIV (resolver); + priv = GET_PRIV (resolver); - if (!priv->current_result) { - return NULL; - } + if (!priv->current_result) { + return NULL; + } - ret_val = priv->current_result; - priv->current_result = priv->current_result->ai_next; + ret_val = priv->current_result; + priv->current_result = priv->current_result->ai_next; - return ret_val; + return ret_val; } void lm_resolver_results_reset (LmResolver *resolver) { - LmResolverPriv *priv; + LmResolverPriv *priv; - g_return_if_fail (LM_IS_RESOLVER (resolver)); + g_return_if_fail (LM_IS_RESOLVER (resolver)); - priv = GET_PRIV (resolver); + priv = GET_PRIV (resolver); - priv->current_result = priv->results; + priv->current_result = priv->results; } gchar * @@ -407,11 +407,11 @@ const gchar *service, const gchar *protocol) { - g_return_val_if_fail (domain != NULL, NULL); - g_return_val_if_fail (service != NULL, NULL); - g_return_val_if_fail (protocol != NULL, NULL); + g_return_val_if_fail (domain != NULL, NULL); + g_return_val_if_fail (service != NULL, NULL); + g_return_val_if_fail (protocol != NULL, NULL); - return g_strdup_printf ("_%s._%s.%s", service, protocol, domain); + return g_strdup_printf ("_%s._%s.%s", service, protocol, domain); } void @@ -419,18 +419,18 @@ LmResolverResult result, struct addrinfo *results) { - LmResolverPriv *priv; + LmResolverPriv *priv; - g_return_if_fail (LM_IS_RESOLVER (resolver)); + g_return_if_fail (LM_IS_RESOLVER (resolver)); - priv = GET_PRIV (resolver); + priv = GET_PRIV (resolver); - priv->result = result; - priv->results = priv->current_result = results; + priv->result = result; + priv->results = priv->current_result = results; - g_print ("Calling resolver callback\n"); + g_print ("Calling resolver callback\n"); - priv->callback (resolver, result, priv->user_data); + priv->callback (resolver, result, priv->user_data); } gboolean @@ -439,59 +439,59 @@ gchar **out_server, guint *out_port) { - int qdcount; - int ancount; - int len; - const unsigned char *pos; - unsigned char *end; - HEADER *head; - char name[256]; - char pref_name[256]; - guint pref_port = 0; - guint pref_prio = 9999; + int qdcount; + int ancount; + int len; + const unsigned char *pos; + unsigned char *end; + HEADER *head; + char name[256]; + char pref_name[256]; + guint pref_port = 0; + guint pref_prio = 9999; - pref_name[0] = 0; + pref_name[0] = 0; - pos = srv + sizeof (HEADER); - end = srv + srv_len; - head = (HEADER *) srv; + pos = srv + sizeof (HEADER); + end = srv + srv_len; + head = (HEADER *) srv; - qdcount = ntohs (head->qdcount); - ancount = ntohs (head->ancount); + qdcount = ntohs (head->qdcount); + ancount = ntohs (head->ancount); - /* Ignore the questions */ - while (qdcount-- > 0 && (len = dn_expand (srv, end, pos, name, 255)) >= 0) { - g_assert (len >= 0); - pos += len + QFIXEDSZ; - } + /* Ignore the questions */ + while (qdcount-- > 0 && (len = dn_expand (srv, end, pos, name, 255)) >= 0) { + g_assert (len >= 0); + pos += len + QFIXEDSZ; + } - /* Parse the answers */ - while (ancount-- > 0 && (len = dn_expand (srv, end, pos, name, 255)) >= 0) { - /* Ignore the initial string */ - uint16_t pref, weight, port; + /* Parse the answers */ + while (ancount-- > 0 && (len = dn_expand (srv, end, pos, name, 255)) >= 0) { + /* Ignore the initial string */ + uint16_t pref, weight, port; - g_assert (len >= 0); - pos += len; - /* Ignore type, ttl, class and dlen */ - pos += 10; - GETSHORT (pref, pos); - GETSHORT (weight, pos); - GETSHORT (port, pos); + g_assert (len >= 0); + pos += len; + /* Ignore type, ttl, class and dlen */ + pos += 10; + GETSHORT (pref, pos); + GETSHORT (weight, pos); + GETSHORT (port, pos); - len = dn_expand (srv, end, pos, name, 255); - if (pref < pref_prio) { - pref_prio = pref; - strcpy (pref_name, name); - pref_port = port; - } - pos += len; - } + len = dn_expand (srv, end, pos, name, 255); + if (pref < pref_prio) { + pref_prio = pref; + strcpy (pref_name, name); + pref_port = port; + } + pos += len; + } - if (pref_name[0]) { - *out_server = g_strdup (pref_name); - *out_port = pref_port; - return TRUE; - } - return FALSE; + if (pref_name[0]) { + *out_server = g_strdup (pref_name); + *out_port = pref_port; + return TRUE; + } + return FALSE; } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-resolver.h --- a/loudmouth/lm-resolver.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-resolver.h Wed Oct 08 13:11:02 2008 +0200 @@ -36,26 +36,26 @@ typedef struct LmResolverClass LmResolverClass; struct LmResolver { - GObject parent; + GObject parent; }; struct LmResolverClass { - GObjectClass parent_class; - - /* */ - void (*lookup) (LmResolver *resolver); - void (*cancel) (LmResolver *resolver); + GObjectClass parent_class; + + /* */ + void (*lookup) (LmResolver *resolver); + void (*cancel) (LmResolver *resolver); }; typedef enum { - LM_RESOLVER_HOST, - LM_RESOLVER_SRV + LM_RESOLVER_HOST, + LM_RESOLVER_SRV } LmResolverType; typedef enum { - LM_RESOLVER_RESULT_OK, - LM_RESOLVER_RESULT_FAILED, - LM_RESOLVER_RESULT_CANCELLED + LM_RESOLVER_RESULT_OK, + LM_RESOLVER_RESULT_FAILED, + LM_RESOLVER_RESULT_CANCELLED } LmResolverResult; typedef void (*LmResolverCallback) (LmResolver *resolver, diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-sasl.c --- a/loudmouth/lm-sasl.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-sasl.c Wed Oct 08 13:11:02 2008 +0200 @@ -39,58 +39,58 @@ #include "md5.h" typedef enum { - AUTH_TYPE_PLAIN = 1, - AUTH_TYPE_DIGEST = 2 + AUTH_TYPE_PLAIN = 1, + AUTH_TYPE_DIGEST = 2 } AuthType; typedef enum { - SASL_AUTH_STATE_NO_MECH, - SASL_AUTH_STATE_PLAIN_STARTED, - SASL_AUTH_STATE_DIGEST_MD5_STARTED, - SASL_AUTH_STATE_DIGEST_MD5_SENT_AUTH_RESPONSE, - SASL_AUTH_STATE_DIGEST_MD5_SENT_FINAL_RESPONSE, + SASL_AUTH_STATE_NO_MECH, + SASL_AUTH_STATE_PLAIN_STARTED, + SASL_AUTH_STATE_DIGEST_MD5_STARTED, + SASL_AUTH_STATE_DIGEST_MD5_SENT_AUTH_RESPONSE, + SASL_AUTH_STATE_DIGEST_MD5_SENT_FINAL_RESPONSE, } SaslAuthState; struct _LmSASL { - LmConnection *connection; - AuthType auth_type; - SaslAuthState state; - gchar *username; - gchar *password; - gchar *server; - gchar *digest_md5_rspauth; - LmMessageHandler *features_cb; - LmMessageHandler *challenge_cb; - LmMessageHandler *success_cb; - LmMessageHandler *failure_cb; + LmConnection *connection; + AuthType auth_type; + SaslAuthState state; + gchar *username; + gchar *password; + gchar *server; + gchar *digest_md5_rspauth; + LmMessageHandler *features_cb; + LmMessageHandler *challenge_cb; + LmMessageHandler *success_cb; + LmMessageHandler *failure_cb; - gboolean features_received; - gboolean start_auth; + gboolean features_received; + gboolean start_auth; - LmSASLResultHandler handler; + LmSASLResultHandler handler; }; #define XMPP_NS_SASL_AUTH "urn:ietf:params:xml:ns:xmpp-sasl" static LmHandlerResult sasl_features_cb (LmMessageHandler *handler, - LmConnection *connection, - LmMessage *message, - gpointer user_data); + LmConnection *connection, + LmMessage *message, + gpointer user_data); static LmHandlerResult sasl_challenge_cb (LmMessageHandler *handler, - LmConnection *connection, - LmMessage *message, - gpointer user_data); + LmConnection *connection, + LmMessage *message, + gpointer user_data); static LmHandlerResult sasl_success_cb (LmMessageHandler *handler, - LmConnection *connection, - LmMessage *message, - gpointer user_data); + LmConnection *connection, + LmMessage *message, + gpointer user_data); static LmHandlerResult sasl_failure_cb (LmMessageHandler *handler, - LmConnection *connection, - LmMessage *message, - gpointer user_data); + LmConnection *connection, + LmMessage *message, + gpointer user_data); /* DIGEST-MD5 mechanism code from libgibber */ @@ -98,748 +98,748 @@ static gchar * sasl_strndup_unescaped (const gchar *str, gsize len) { - const gchar *s; - gchar *d; - gchar *ret; + const gchar *s; + gchar *d; + gchar *ret; - ret = g_malloc0 (len + 1); - for (s = str, d = ret ; s < (str + len) ; s++, d++) { - if (*s == '\\') s++; - *d = *s; - } + ret = g_malloc0 (len + 1); + for (s = str, d = ret ; s < (str + len) ; s++, d++) { + if (*s == '\\') s++; + *d = *s; + } - return ret; + return ret; } static GHashTable * sasl_digest_md5_challenge_to_hash (const gchar * challenge) { - const gchar *keystart, *keyend, *valstart; - const gchar *c = challenge; - gchar *key, *val; - GHashTable *result; - - result = g_hash_table_new_full (g_str_hash, g_str_equal, - g_free, g_free); + const gchar *keystart, *keyend, *valstart; + const gchar *c = challenge; + gchar *key, *val; + GHashTable *result; + + result = g_hash_table_new_full (g_str_hash, g_str_equal, + g_free, g_free); - do { - while (g_ascii_isspace(*c)) c++; + do { + while (g_ascii_isspace(*c)) c++; - keystart = c; - for (; *c != '\0' && *c != '='; c++); + keystart = c; + for (; *c != '\0' && *c != '='; c++); - if (*c == '\0' || c == keystart) goto error; + if (*c == '\0' || c == keystart) goto error; - keyend = c; - c++; + keyend = c; + c++; - if (*c == '"') { - c++; - valstart = c; - for (; *c != '\0' && *c != '"'; c++); - if (*c == '\0' || c == valstart) goto error; - val = sasl_strndup_unescaped (valstart, c - valstart); - c++; - } else { - valstart = c; - for (; *c != '\0' && *c != ','; c++); - if (c == valstart) goto error; - val = g_strndup (valstart, c - valstart); - } + if (*c == '"') { + c++; + valstart = c; + for (; *c != '\0' && *c != '"'; c++); + if (*c == '\0' || c == valstart) goto error; + val = sasl_strndup_unescaped (valstart, c - valstart); + c++; + } else { + valstart = c; + for (; *c != '\0' && *c != ','; c++); + if (c == valstart) goto error; + val = g_strndup (valstart, c - valstart); + } - key = g_strndup (keystart, keyend - keystart); + key = g_strndup (keystart, keyend - keystart); - g_hash_table_insert (result, key, val); + g_hash_table_insert (result, key, val); - if (*c == ',') c++; - } while (*c != '\0'); + if (*c == ',') c++; + } while (*c != '\0'); - return result; -error: - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, - "Failed to parse challenge: %s", challenge); + return result; + error: + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, + "Failed to parse challenge: %s", challenge); - g_hash_table_destroy (result); - return NULL; + g_hash_table_destroy (result); + return NULL; } static gchar * sasl_md5_hex_hash (gchar *value, gsize len) { - md5_byte_t digest_md5[16]; - md5_state_t md5_calc; - GString *str; - int i; + md5_byte_t digest_md5[16]; + md5_state_t md5_calc; + GString *str; + int i; - str = g_string_sized_new (32); + str = g_string_sized_new (32); - md5_init (&md5_calc); - md5_append (&md5_calc, (const md5_byte_t *)value, len); - md5_finish (&md5_calc, digest_md5); + md5_init (&md5_calc); + md5_append (&md5_calc, (const md5_byte_t *)value, len); + md5_finish (&md5_calc, digest_md5); - for (i = 0 ; i < 16 ; i++) { - g_string_append_printf (str, "%02x", digest_md5[i]); - } + for (i = 0 ; i < 16 ; i++) { + g_string_append_printf (str, "%02x", digest_md5[i]); + } - return g_string_free (str, FALSE); + return g_string_free (str, FALSE); } static gchar * sasl_digest_md5_generate_cnonce(void) { - /* RFC 2831 recommends the the nonce to be either hexadecimal or base64 with - * at least 64 bits of entropy */ + /* RFC 2831 recommends the the nonce to be either hexadecimal or base64 with + * at least 64 bits of entropy */ #define NR 8 - guint32 n[NR]; - int i; + guint32 n[NR]; + int i; - for (i = 0; i < NR; i++) { - n[i] = g_random_int(); - } + for (i = 0; i < NR; i++) { + n[i] = g_random_int(); + } - return g_base64_encode ((const guchar *)n, (gsize)sizeof(n)); + return g_base64_encode ((const guchar *)n, (gsize)sizeof(n)); } static gchar * sasl_md5_prepare_response (LmSASL *sasl, GHashTable *challenge) { - GString *response; - const gchar *realm, *nonce; - gchar *a1, *a1h, *a2, *a2h, *kd, *kdh; - gchar *cnonce = NULL; - gchar *tmp; - md5_byte_t digest_md5[16]; - md5_state_t md5_calc; - gsize len; + GString *response; + const gchar *realm, *nonce; + gchar *a1, *a1h, *a2, *a2h, *kd, *kdh; + gchar *cnonce = NULL; + gchar *tmp; + md5_byte_t digest_md5[16]; + md5_state_t md5_calc; + gsize len; - response = g_string_new (""); + response = g_string_new (""); - if (sasl->username == NULL || sasl->password == NULL) { - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, - "%s: no username or password provided", G_STRFUNC); - if (sasl->handler) { - sasl->handler (sasl, sasl->connection, - FALSE, "no username/password provided"); - } - goto error; - } + if (sasl->username == NULL || sasl->password == NULL) { + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, + "%s: no username or password provided", G_STRFUNC); + if (sasl->handler) { + sasl->handler (sasl, sasl->connection, + FALSE, "no username/password provided"); + } + goto error; + } - nonce = g_hash_table_lookup (challenge, "nonce"); - if (nonce == NULL || nonce == '\0') { - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, - "%s: server didn't provide a nonce in the challenge", - G_STRFUNC); - if (sasl->handler) { - sasl->handler (sasl, sasl->connection, - FALSE, "server error"); - } - goto error; - } + nonce = g_hash_table_lookup (challenge, "nonce"); + if (nonce == NULL || nonce == '\0') { + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, + "%s: server didn't provide a nonce in the challenge", + G_STRFUNC); + if (sasl->handler) { + sasl->handler (sasl, sasl->connection, + FALSE, "server error"); + } + goto error; + } - cnonce = sasl_digest_md5_generate_cnonce (); + cnonce = sasl_digest_md5_generate_cnonce (); - /* FIXME challenge can contain multiple realms */ - realm = g_hash_table_lookup (challenge, "realm"); - if (realm == NULL) { - realm = sasl->server; - } + /* FIXME challenge can contain multiple realms */ + realm = g_hash_table_lookup (challenge, "realm"); + if (realm == NULL) { + realm = sasl->server; + } - /* FIXME properly escape values */ - g_string_append_printf (response, "username=\"%s\"", sasl->username); - g_string_append_printf (response, ",realm=\"%s\"", realm); - g_string_append_printf (response, ",digest-uri=\"xmpp/%s\"", realm); - g_string_append_printf (response, ",nonce=\"%s\",nc=00000001", nonce); - g_string_append_printf (response, ",cnonce=\"%s\"", cnonce); - /* FIXME should check if auth is in the cop challenge val */ - g_string_append_printf (response, ",qop=auth,charset=utf-8"); + /* FIXME properly escape values */ + g_string_append_printf (response, "username=\"%s\"", sasl->username); + g_string_append_printf (response, ",realm=\"%s\"", realm); + g_string_append_printf (response, ",digest-uri=\"xmpp/%s\"", realm); + g_string_append_printf (response, ",nonce=\"%s\",nc=00000001", nonce); + g_string_append_printf (response, ",cnonce=\"%s\"", cnonce); + /* FIXME should check if auth is in the cop challenge val */ + g_string_append_printf (response, ",qop=auth,charset=utf-8"); - tmp = g_strdup_printf ("%s:%s:%s", - sasl->username, realm, sasl->password); - md5_init (&md5_calc); - md5_append (&md5_calc, (const md5_byte_t *)tmp, strlen(tmp)); - md5_finish (&md5_calc, digest_md5); - g_free (tmp); + tmp = g_strdup_printf ("%s:%s:%s", + sasl->username, realm, sasl->password); + md5_init (&md5_calc); + md5_append (&md5_calc, (const md5_byte_t *)tmp, strlen(tmp)); + md5_finish (&md5_calc, digest_md5); + g_free (tmp); - a1 = g_strdup_printf ("0123456789012345:%s:%s", nonce, cnonce); - len = strlen (a1); - memcpy (a1, digest_md5, 16); - a1h = sasl_md5_hex_hash (a1, len); + a1 = g_strdup_printf ("0123456789012345:%s:%s", nonce, cnonce); + len = strlen (a1); + memcpy (a1, digest_md5, 16); + a1h = sasl_md5_hex_hash (a1, len); - a2 = g_strdup_printf ("AUTHENTICATE:xmpp/%s", realm); - a2h = sasl_md5_hex_hash (a2, strlen(a2)); + a2 = g_strdup_printf ("AUTHENTICATE:xmpp/%s", realm); + a2h = sasl_md5_hex_hash (a2, strlen(a2)); - kd = g_strdup_printf ("%s:%s:00000001:%s:auth:%s", - a1h, nonce, cnonce, a2h); - kdh = sasl_md5_hex_hash (kd, strlen(kd)); - g_string_append_printf (response, ",response=%s", kdh); + kd = g_strdup_printf ("%s:%s:00000001:%s:auth:%s", + a1h, nonce, cnonce, a2h); + kdh = sasl_md5_hex_hash (kd, strlen(kd)); + g_string_append_printf (response, ",response=%s", kdh); - g_free (kd); - g_free (kdh); - g_free (a2); - g_free (a2h); + g_free (kd); + g_free (kdh); + g_free (a2); + g_free (a2h); - /* Calculate the response we expect from the server */ - a2 = g_strdup_printf (":xmpp/%s", realm); - a2h = sasl_md5_hex_hash (a2, strlen(a2)); + /* Calculate the response we expect from the server */ + a2 = g_strdup_printf (":xmpp/%s", realm); + a2h = sasl_md5_hex_hash (a2, strlen(a2)); - kd = g_strdup_printf ("%s:%s:00000001:%s:auth:%s", a1h, nonce, cnonce, a2h); - g_free (sasl->digest_md5_rspauth); - sasl->digest_md5_rspauth = sasl_md5_hex_hash (kd, strlen(kd)); + kd = g_strdup_printf ("%s:%s:00000001:%s:auth:%s", a1h, nonce, cnonce, a2h); + g_free (sasl->digest_md5_rspauth); + sasl->digest_md5_rspauth = sasl_md5_hex_hash (kd, strlen(kd)); - g_free (a1); - g_free (a1h); - g_free (a2); - g_free (a2h); - g_free (kd); + g_free (a1); + g_free (a1h); + g_free (a2); + g_free (a2h); + g_free (kd); -out: - g_free (cnonce); - if (response) { - return g_string_free (response, FALSE); - } else { - return NULL; - } + out: + g_free (cnonce); + if (response) { + return g_string_free (response, FALSE); + } else { + return NULL; + } -error: - g_string_free (response, TRUE); - response = NULL; - goto out; + error: + g_string_free (response, TRUE); + response = NULL; + goto out; } static gboolean sasl_digest_md5_send_initial_response (LmSASL *sasl, GHashTable *challenge) { - LmMessage *msg; - gchar *response; - gchar *response64; - int result; + LmMessage *msg; + gchar *response; + gchar *response64; + int result; - response = sasl_md5_prepare_response(sasl, challenge); - if (response == NULL) { - return FALSE; - } + response = sasl_md5_prepare_response(sasl, challenge); + if (response == NULL) { + return FALSE; + } - response64 = g_base64_encode ((const guchar *) response, - (gsize) strlen(response)); + response64 = g_base64_encode ((const guchar *) response, + (gsize) strlen(response)); - msg = lm_message_new (NULL, LM_MESSAGE_TYPE_RESPONSE); - lm_message_node_set_attributes (msg->node, - "xmlns", XMPP_NS_SASL_AUTH, - NULL); - lm_message_node_set_value (msg->node, response64); + msg = lm_message_new (NULL, LM_MESSAGE_TYPE_RESPONSE); + lm_message_node_set_attributes (msg->node, + "xmlns", XMPP_NS_SASL_AUTH, + NULL); + lm_message_node_set_value (msg->node, response64); - result = lm_connection_send (sasl->connection, msg, NULL); + result = lm_connection_send (sasl->connection, msg, NULL); - g_free (response); - g_free (response64); - lm_message_unref (msg); + g_free (response); + g_free (response64); + lm_message_unref (msg); - if (!result) { - return FALSE; - } + if (!result) { + return FALSE; + } - sasl->state = SASL_AUTH_STATE_DIGEST_MD5_SENT_AUTH_RESPONSE; + sasl->state = SASL_AUTH_STATE_DIGEST_MD5_SENT_AUTH_RESPONSE; - return TRUE; + return TRUE; } static gboolean sasl_digest_md5_check_server_response(LmSASL *sasl, GHashTable *challenge) { - LmMessage *msg; - const gchar *rspauth; - int result; + LmMessage *msg; + const gchar *rspauth; + int result; - rspauth = g_hash_table_lookup (challenge, "rspauth"); - if (rspauth == NULL) { - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SSL, - "%s: server sent an invalid reply (no rspauth)\n", - G_STRFUNC); + rspauth = g_hash_table_lookup (challenge, "rspauth"); + if (rspauth == NULL) { + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SSL, + "%s: server sent an invalid reply (no rspauth)\n", + G_STRFUNC); - if (sasl->handler) { - sasl->handler (sasl, sasl->connection, - TRUE, "server error"); - } - return FALSE; - } + if (sasl->handler) { + sasl->handler (sasl, sasl->connection, + TRUE, "server error"); + } + return FALSE; + } - if (strcmp (sasl->digest_md5_rspauth, rspauth) != 0) { - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SSL, - "%s: server sent an invalid reply (rspauth not matching)\n", - G_STRFUNC); + if (strcmp (sasl->digest_md5_rspauth, rspauth) != 0) { + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SSL, + "%s: server sent an invalid reply (rspauth not matching)\n", + G_STRFUNC); - if (sasl->handler) { - sasl->handler (sasl, sasl->connection, - TRUE, "server error"); - } - return FALSE; - } + if (sasl->handler) { + sasl->handler (sasl, sasl->connection, + TRUE, "server error"); + } + return FALSE; + } - msg = lm_message_new (NULL, LM_MESSAGE_TYPE_RESPONSE); - lm_message_node_set_attributes (msg->node, - "xmlns", XMPP_NS_SASL_AUTH, - NULL); + msg = lm_message_new (NULL, LM_MESSAGE_TYPE_RESPONSE); + lm_message_node_set_attributes (msg->node, + "xmlns", XMPP_NS_SASL_AUTH, + NULL); - result = lm_connection_send (sasl->connection, msg, NULL); - lm_message_unref (msg); + result = lm_connection_send (sasl->connection, msg, NULL); + lm_message_unref (msg); - if (!result) { - g_warning ("Failed to send SASL response\n"); - return FALSE; - } + if (!result) { + g_warning ("Failed to send SASL response\n"); + return FALSE; + } - sasl->state = SASL_AUTH_STATE_DIGEST_MD5_SENT_FINAL_RESPONSE; + sasl->state = SASL_AUTH_STATE_DIGEST_MD5_SENT_FINAL_RESPONSE; - return TRUE; + return TRUE; } static gboolean sasl_digest_md5_handle_challenge (LmSASL *sasl, LmMessageNode *node) { - const gchar *encoded; - gchar *challenge; - gsize len; - GHashTable *h; + const gchar *encoded; + gchar *challenge; + gsize len; + GHashTable *h; - encoded = lm_message_node_get_value (node); - if (!encoded) { - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, - "%s: got empty challenge!", G_STRFUNC); - return FALSE; - } + encoded = lm_message_node_get_value (node); + if (!encoded) { + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, + "%s: got empty challenge!", G_STRFUNC); + return FALSE; + } - challenge = (gchar *) g_base64_decode (encoded, &len); - h = sasl_digest_md5_challenge_to_hash (challenge); - g_free(challenge); + challenge = (gchar *) g_base64_decode (encoded, &len); + h = sasl_digest_md5_challenge_to_hash (challenge); + g_free(challenge); - if (!h) { - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, - "%s: server sent an invalid challenge", G_STRFUNC); - if (sasl->handler) { - sasl->handler (sasl, sasl->connection, - FALSE, "server error"); - } - return FALSE; - } + if (!h) { + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, + "%s: server sent an invalid challenge", G_STRFUNC); + if (sasl->handler) { + sasl->handler (sasl, sasl->connection, + FALSE, "server error"); + } + return FALSE; + } - switch (sasl->state) { - case SASL_AUTH_STATE_DIGEST_MD5_STARTED: - sasl_digest_md5_send_initial_response (sasl, h); - break; - case SASL_AUTH_STATE_DIGEST_MD5_SENT_AUTH_RESPONSE: - sasl_digest_md5_check_server_response (sasl, h); - break; - default: - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, - "%s: server sent a challenge at the wrong time", - G_STRFUNC); - if (sasl->handler) { - sasl->handler (sasl, sasl->connection, - FALSE, "server error"); - } + switch (sasl->state) { + case SASL_AUTH_STATE_DIGEST_MD5_STARTED: + sasl_digest_md5_send_initial_response (sasl, h); + break; + case SASL_AUTH_STATE_DIGEST_MD5_SENT_AUTH_RESPONSE: + sasl_digest_md5_check_server_response (sasl, h); + break; + default: + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, + "%s: server sent a challenge at the wrong time", + G_STRFUNC); + if (sasl->handler) { + sasl->handler (sasl, sasl->connection, + FALSE, "server error"); + } - return FALSE; - } + return FALSE; + } - g_hash_table_destroy(h); + g_hash_table_destroy(h); - return TRUE; + return TRUE; } static LmHandlerResult sasl_challenge_cb (LmMessageHandler *handler, - LmConnection *connection, - LmMessage *message, - gpointer user_data) + LmConnection *connection, + LmMessage *message, + gpointer user_data) { - LmSASL *sasl; - const gchar *ns; + LmSASL *sasl; + const gchar *ns; - ns = lm_message_node_get_attribute (message->node, "xmlns"); - if (!ns || strcmp (ns, XMPP_NS_SASL_AUTH) != 0) { - return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; - } + ns = lm_message_node_get_attribute (message->node, "xmlns"); + if (!ns || strcmp (ns, XMPP_NS_SASL_AUTH) != 0) { + return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; + } - sasl = (LmSASL *) user_data; + sasl = (LmSASL *) user_data; - switch (sasl->auth_type) { - case AUTH_TYPE_PLAIN: - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SSL, - "%s: server sent challenge for PLAIN mechanism", - G_STRFUNC); + switch (sasl->auth_type) { + case AUTH_TYPE_PLAIN: + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SSL, + "%s: server sent challenge for PLAIN mechanism", + G_STRFUNC); - if (sasl->handler) { - sasl->handler (sasl, sasl->connection, - FALSE, "server error"); - } - break; - case AUTH_TYPE_DIGEST: - sasl_digest_md5_handle_challenge (sasl, message->node); - break; - default: - g_warning ("Wrong auth type"); - break; - } + if (sasl->handler) { + sasl->handler (sasl, sasl->connection, + FALSE, "server error"); + } + break; + case AUTH_TYPE_DIGEST: + sasl_digest_md5_handle_challenge (sasl, message->node); + break; + default: + g_warning ("Wrong auth type"); + break; + } - return LM_HANDLER_RESULT_REMOVE_MESSAGE; + return LM_HANDLER_RESULT_REMOVE_MESSAGE; } static LmHandlerResult sasl_success_cb (LmMessageHandler *handler, - LmConnection *connection, - LmMessage *message, - gpointer user_data) + LmConnection *connection, + LmMessage *message, + gpointer user_data) { - LmSASL *sasl; - const gchar *ns; - - ns = lm_message_node_get_attribute (message->node, "xmlns"); - if (!ns || strcmp (ns, XMPP_NS_SASL_AUTH) != 0) { - return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; - } + LmSASL *sasl; + const gchar *ns; + + ns = lm_message_node_get_attribute (message->node, "xmlns"); + if (!ns || strcmp (ns, XMPP_NS_SASL_AUTH) != 0) { + return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; + } - sasl = (LmSASL *) user_data; + sasl = (LmSASL *) user_data; - switch (sasl->auth_type) { - case AUTH_TYPE_PLAIN: - if (sasl->state != SASL_AUTH_STATE_PLAIN_STARTED) { - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, - "%s: server sent success before finishing auth", - G_STRFUNC); - if (sasl->handler) { - sasl->handler (sasl, sasl->connection, - FALSE, "server error"); - } - } - break; - case AUTH_TYPE_DIGEST: - if (sasl->state != SASL_AUTH_STATE_DIGEST_MD5_SENT_AUTH_RESPONSE && - sasl->state != SASL_AUTH_STATE_DIGEST_MD5_SENT_FINAL_RESPONSE) { - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, - "%s: server sent success before finishing auth", - G_STRFUNC); - if (sasl->handler) { - sasl->handler (sasl, sasl->connection, - FALSE, "server error"); - } - } - break; - default: - g_warning ("Wrong auth type"); - break; - } + switch (sasl->auth_type) { + case AUTH_TYPE_PLAIN: + if (sasl->state != SASL_AUTH_STATE_PLAIN_STARTED) { + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, + "%s: server sent success before finishing auth", + G_STRFUNC); + if (sasl->handler) { + sasl->handler (sasl, sasl->connection, + FALSE, "server error"); + } + } + break; + case AUTH_TYPE_DIGEST: + if (sasl->state != SASL_AUTH_STATE_DIGEST_MD5_SENT_AUTH_RESPONSE && + sasl->state != SASL_AUTH_STATE_DIGEST_MD5_SENT_FINAL_RESPONSE) { + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, + "%s: server sent success before finishing auth", + G_STRFUNC); + if (sasl->handler) { + sasl->handler (sasl, sasl->connection, + FALSE, "server error"); + } + } + break; + default: + g_warning ("Wrong auth type"); + break; + } - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, - "%s: SASL authentication successful", G_STRFUNC); + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, + "%s: SASL authentication successful", G_STRFUNC); - if (sasl->handler) { - sasl->handler (sasl, sasl->connection, TRUE, NULL); - } + if (sasl->handler) { + sasl->handler (sasl, sasl->connection, TRUE, NULL); + } - return LM_HANDLER_RESULT_REMOVE_MESSAGE; - + return LM_HANDLER_RESULT_REMOVE_MESSAGE; + } static LmHandlerResult sasl_failure_cb (LmMessageHandler *handler, - LmConnection *connection, - LmMessage *message, - gpointer user_data) + LmConnection *connection, + LmMessage *message, + gpointer user_data) { - LmSASL *sasl; - const gchar *ns; - const gchar *reason = "unknown reason"; - - ns = lm_message_node_get_attribute (message->node, "xmlns"); - if (!ns || strcmp (ns, XMPP_NS_SASL_AUTH) != 0) { - return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; - } + LmSASL *sasl; + const gchar *ns; + const gchar *reason = "unknown reason"; + + ns = lm_message_node_get_attribute (message->node, "xmlns"); + if (!ns || strcmp (ns, XMPP_NS_SASL_AUTH) != 0) { + return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; + } - sasl = (LmSASL *) user_data; + sasl = (LmSASL *) user_data; - if (message->node->children) { - const gchar *r; - - r = lm_message_node_get_value (message->node->children); - if (r) { - reason = r; - } - } - - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, - "%s: SASL authentication failed: %s", G_STRFUNC, reason); + if (message->node->children) { + const gchar *r; + + r = lm_message_node_get_value (message->node->children); + if (r) { + reason = r; + } + } + + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, + "%s: SASL authentication failed: %s", G_STRFUNC, reason); - if (sasl->handler) { - sasl->handler (sasl, sasl->connection, FALSE, reason); - } + if (sasl->handler) { + sasl->handler (sasl, sasl->connection, FALSE, reason); + } - return LM_HANDLER_RESULT_REMOVE_MESSAGE; + return LM_HANDLER_RESULT_REMOVE_MESSAGE; } static gboolean sasl_start (LmSASL *sasl) { - LmMessage *auth_msg; - gboolean result; - const char *mech = NULL; + LmMessage *auth_msg; + gboolean result; + const char *mech = NULL; - auth_msg = lm_message_new (NULL, LM_MESSAGE_TYPE_AUTH); + auth_msg = lm_message_new (NULL, LM_MESSAGE_TYPE_AUTH); - if (sasl->auth_type == AUTH_TYPE_PLAIN) { - GString *str; - gchar *cstr; + if (sasl->auth_type == AUTH_TYPE_PLAIN) { + GString *str; + gchar *cstr; - str = g_string_new (""); + str = g_string_new (""); - mech = "PLAIN"; - sasl->state = SASL_AUTH_STATE_PLAIN_STARTED; + mech = "PLAIN"; + sasl->state = SASL_AUTH_STATE_PLAIN_STARTED; - if (sasl->username == NULL || sasl->password == NULL) { - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, - "%s: no username or password provided", - G_STRFUNC); - if (sasl->handler) { - sasl->handler (sasl, sasl->connection, FALSE, "no username/password provided"); - } + if (sasl->username == NULL || sasl->password == NULL) { + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, + "%s: no username or password provided", + G_STRFUNC); + if (sasl->handler) { + sasl->handler (sasl, sasl->connection, FALSE, "no username/password provided"); + } - return FALSE; - } + return FALSE; + } - g_string_append_c (str, '\0'); - g_string_append (str, sasl->username); - g_string_append_c (str, '\0'); - g_string_append (str, sasl->password); - cstr = g_base64_encode ((const guchar *) str->str, - (gsize) str->len); + g_string_append_c (str, '\0'); + g_string_append (str, sasl->username); + g_string_append_c (str, '\0'); + g_string_append (str, sasl->password); + cstr = g_base64_encode ((const guchar *) str->str, + (gsize) str->len); - lm_message_node_set_value (auth_msg->node, cstr); + lm_message_node_set_value (auth_msg->node, cstr); - g_string_free (str, TRUE); - g_free (cstr); + g_string_free (str, TRUE); + g_free (cstr); - /* Here we say the Google magic word. Bad Google. */ - lm_message_node_set_attributes (auth_msg->node, - "xmlns:ga", "http://www.google.com/talk/protocol/auth", - "ga:client-uses-full-bind-result", "true", - NULL); + /* Here we say the Google magic word. Bad Google. */ + lm_message_node_set_attributes (auth_msg->node, + "xmlns:ga", "http://www.google.com/talk/protocol/auth", + "ga:client-uses-full-bind-result", "true", + NULL); - } - else if (sasl->auth_type == AUTH_TYPE_DIGEST) { - mech = "DIGEST-MD5"; - sasl->state = SASL_AUTH_STATE_DIGEST_MD5_STARTED; - } + } + else if (sasl->auth_type == AUTH_TYPE_DIGEST) { + mech = "DIGEST-MD5"; + sasl->state = SASL_AUTH_STATE_DIGEST_MD5_STARTED; + } - lm_message_node_set_attributes (auth_msg->node, - "xmlns", XMPP_NS_SASL_AUTH, - "mechanism", mech, - NULL); + lm_message_node_set_attributes (auth_msg->node, + "xmlns", XMPP_NS_SASL_AUTH, + "mechanism", mech, + NULL); - result = lm_connection_send (sasl->connection, auth_msg, NULL); - lm_message_unref (auth_msg); + result = lm_connection_send (sasl->connection, auth_msg, NULL); + lm_message_unref (auth_msg); - if (!result) { - return FALSE; - } + if (!result) { + return FALSE; + } - return TRUE; + return TRUE; } static gboolean sasl_set_auth_type (LmSASL *sasl, LmMessageNode *mechanisms) { - LmMessageNode *m; - const gchar *ns; + LmMessageNode *m; + const gchar *ns; - sasl->auth_type = 0; + sasl->auth_type = 0; - ns = lm_message_node_get_attribute (mechanisms, "xmlns"); - if (!ns || strcmp (ns, XMPP_NS_SASL_AUTH) != 0) { - return FALSE; - } + ns = lm_message_node_get_attribute (mechanisms, "xmlns"); + if (!ns || strcmp (ns, XMPP_NS_SASL_AUTH) != 0) { + return FALSE; + } - for (m = mechanisms->children; m; m = m->next) { - const gchar *name; - - name = lm_message_node_get_value (m); + for (m = mechanisms->children; m; m = m->next) { + const gchar *name; + + name = lm_message_node_get_value (m); - if (!name) { - continue; - } - if (strcmp (name, "PLAIN") == 0) { - sasl->auth_type |= AUTH_TYPE_PLAIN; - continue; - } - if (strcmp (name, "DIGEST-MD5") == 0) { - sasl->auth_type |= AUTH_TYPE_DIGEST; - continue; - } + if (!name) { + continue; + } + if (strcmp (name, "PLAIN") == 0) { + sasl->auth_type |= AUTH_TYPE_PLAIN; + continue; + } + if (strcmp (name, "DIGEST-MD5") == 0) { + sasl->auth_type |= AUTH_TYPE_DIGEST; + continue; + } - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, - "%s: unknown SASL auth mechanism: %s", G_STRFUNC, name); - } + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, + "%s: unknown SASL auth mechanism: %s", G_STRFUNC, name); + } - return TRUE; + return TRUE; } static gboolean sasl_authenticate (LmSASL *sasl) { - if (sasl->auth_type == 0) { - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, - "%s: no supported SASL auth mechanisms found", - G_STRFUNC); + if (sasl->auth_type == 0) { + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, + "%s: no supported SASL auth mechanisms found", + G_STRFUNC); - return FALSE; - } + return FALSE; + } - /* Prefer DIGEST */ - if (sasl->auth_type & AUTH_TYPE_DIGEST) { - sasl->auth_type = AUTH_TYPE_DIGEST; - return sasl_start (sasl); - } - else if (sasl->auth_type & AUTH_TYPE_PLAIN) { - sasl->auth_type = AUTH_TYPE_PLAIN; - return sasl_start (sasl); - } + /* Prefer DIGEST */ + if (sasl->auth_type & AUTH_TYPE_DIGEST) { + sasl->auth_type = AUTH_TYPE_DIGEST; + return sasl_start (sasl); + } + else if (sasl->auth_type & AUTH_TYPE_PLAIN) { + sasl->auth_type = AUTH_TYPE_PLAIN; + return sasl_start (sasl); + } - return FALSE; + return FALSE; } static LmHandlerResult sasl_features_cb (LmMessageHandler *handler, - LmConnection *connection, - LmMessage *message, - gpointer user_data) + LmConnection *connection, + LmMessage *message, + gpointer user_data) { - LmMessageNode *mechanisms; - LmSASL *sasl; + LmMessageNode *mechanisms; + LmSASL *sasl; - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, "Stream features received\n"); - mechanisms = lm_message_node_find_child (message->node, "mechanisms"); - if (!mechanisms) { - return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; - } + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL, "Stream features received\n"); + mechanisms = lm_message_node_find_child (message->node, "mechanisms"); + if (!mechanisms) { + return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; + } - sasl = (LmSASL *) user_data; - sasl->features_received = TRUE; + sasl = (LmSASL *) user_data; + sasl->features_received = TRUE; - sasl_set_auth_type (sasl, mechanisms); + sasl_set_auth_type (sasl, mechanisms); - if (sasl->start_auth) { - sasl_authenticate (sasl); - } + if (sasl->start_auth) { + sasl_authenticate (sasl); + } - return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; + return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; } LmSASL * lm_sasl_new (LmConnection *connection) { - LmSASL *sasl; - - sasl = g_new0 (LmSASL, 1); + LmSASL *sasl; + + sasl = g_new0 (LmSASL, 1); - sasl->connection = connection; - sasl->features_received = FALSE; - sasl->start_auth = FALSE; + sasl->connection = connection; + sasl->features_received = FALSE; + sasl->start_auth = FALSE; - sasl->features_cb = lm_message_handler_new (sasl_features_cb, - sasl, - NULL); + sasl->features_cb = lm_message_handler_new (sasl_features_cb, + sasl, + NULL); - lm_connection_register_message_handler (connection, - sasl->features_cb, - LM_MESSAGE_TYPE_STREAM_FEATURES, - LM_HANDLER_PRIORITY_LAST); - return sasl; + lm_connection_register_message_handler (connection, + sasl->features_cb, + LM_MESSAGE_TYPE_STREAM_FEATURES, + LM_HANDLER_PRIORITY_LAST); + return sasl; } void lm_sasl_authenticate (LmSASL *sasl, - const gchar *username, - const gchar *password, - const gchar *server, - LmSASLResultHandler handler) + const gchar *username, + const gchar *password, + const gchar *server, + LmSASLResultHandler handler) { - sasl->username = g_strdup (username); - sasl->password = g_strdup (password); - sasl->server = g_strdup (server); - sasl->handler = handler; + sasl->username = g_strdup (username); + sasl->password = g_strdup (password); + sasl->server = g_strdup (server); + sasl->handler = handler; - sasl->challenge_cb = lm_message_handler_new (sasl_challenge_cb, - sasl, - NULL); - lm_connection_register_message_handler (sasl->connection, - sasl->challenge_cb, - LM_MESSAGE_TYPE_CHALLENGE, - LM_HANDLER_PRIORITY_FIRST); - - sasl->success_cb = lm_message_handler_new (sasl_success_cb, - sasl, - NULL); - lm_connection_register_message_handler (sasl->connection, - sasl->success_cb, - LM_MESSAGE_TYPE_SUCCESS, - LM_HANDLER_PRIORITY_FIRST); + sasl->challenge_cb = lm_message_handler_new (sasl_challenge_cb, + sasl, + NULL); + lm_connection_register_message_handler (sasl->connection, + sasl->challenge_cb, + LM_MESSAGE_TYPE_CHALLENGE, + LM_HANDLER_PRIORITY_FIRST); + + sasl->success_cb = lm_message_handler_new (sasl_success_cb, + sasl, + NULL); + lm_connection_register_message_handler (sasl->connection, + sasl->success_cb, + LM_MESSAGE_TYPE_SUCCESS, + LM_HANDLER_PRIORITY_FIRST); - sasl->failure_cb = lm_message_handler_new (sasl_failure_cb, - sasl, - NULL); - lm_connection_register_message_handler (sasl->connection, - sasl->failure_cb, - LM_MESSAGE_TYPE_FAILURE, - LM_HANDLER_PRIORITY_FIRST); + sasl->failure_cb = lm_message_handler_new (sasl_failure_cb, + sasl, + NULL); + lm_connection_register_message_handler (sasl->connection, + sasl->failure_cb, + LM_MESSAGE_TYPE_FAILURE, + LM_HANDLER_PRIORITY_FIRST); - if (sasl->features_received) { - sasl_authenticate (sasl); - } else { - sasl->start_auth = TRUE; - } + if (sasl->features_received) { + sasl_authenticate (sasl); + } else { + sasl->start_auth = TRUE; + } } void lm_sasl_free (LmSASL *sasl) { - g_return_if_fail (sasl != NULL); + g_return_if_fail (sasl != NULL); - g_free (sasl->username); - g_free (sasl->password); - g_free (sasl->server); + g_free (sasl->username); + g_free (sasl->password); + g_free (sasl->server); - if (sasl->features_cb) { - lm_connection_unregister_message_handler (sasl->connection, - sasl->features_cb, - LM_MESSAGE_TYPE_STREAM_FEATURES); - } + if (sasl->features_cb) { + lm_connection_unregister_message_handler (sasl->connection, + sasl->features_cb, + LM_MESSAGE_TYPE_STREAM_FEATURES); + } - if (sasl->challenge_cb) { - lm_connection_unregister_message_handler (sasl->connection, - sasl->challenge_cb, - LM_MESSAGE_TYPE_CHALLENGE); - } + if (sasl->challenge_cb) { + lm_connection_unregister_message_handler (sasl->connection, + sasl->challenge_cb, + LM_MESSAGE_TYPE_CHALLENGE); + } - if (sasl->success_cb) { - lm_connection_unregister_message_handler (sasl->connection, - sasl->success_cb, - LM_MESSAGE_TYPE_SUCCESS); - } + if (sasl->success_cb) { + lm_connection_unregister_message_handler (sasl->connection, + sasl->success_cb, + LM_MESSAGE_TYPE_SUCCESS); + } - if (sasl->failure_cb) { - lm_connection_unregister_message_handler (sasl->connection, - sasl->failure_cb, - LM_MESSAGE_TYPE_FAILURE); - } + if (sasl->failure_cb) { + lm_connection_unregister_message_handler (sasl->connection, + sasl->failure_cb, + LM_MESSAGE_TYPE_FAILURE); + } - g_free (sasl); + g_free (sasl); } void lm_sasl_get_auth_params (LmSASL *sasl, const gchar **username, - const gchar **password) + const gchar **password) { - *username = sasl->username; - *password = sasl->password; + *username = sasl->username; + *password = sasl->password; } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-sasl.h --- a/loudmouth/lm-sasl.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-sasl.h Wed Oct 08 13:11:02 2008 +0200 @@ -32,23 +32,23 @@ typedef struct _LmSASL LmSASL; typedef void (*LmSASLResultHandler) (LmSASL *sasl, - LmConnection *connection, - gboolean success, - const gchar *reason); + LmConnection *connection, + gboolean success, + const gchar *reason); LmSASL *lm_sasl_new (LmConnection *connection); void lm_sasl_authenticate (LmSASL *sasl, - const gchar *username, - const gchar *password, - const gchar *server, - LmSASLResultHandler handler); + const gchar *username, + const gchar *password, + const gchar *server, + LmSASLResultHandler handler); void lm_sasl_free (LmSASL *sasl); void lm_sasl_get_auth_params (LmSASL *sasl, const gchar **username, - const gchar **password); + const gchar **password); G_END_DECLS diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-sha.c --- a/loudmouth/lm-sha.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-sha.c Wed Oct 08 13:11:02 2008 +0200 @@ -52,13 +52,13 @@ #define SHA1_HASH_WORDS 5 struct _SHA1Context { - guint64 totalLength; - guint32 hash[SHA1_HASH_WORDS]; - guint32 bufferLength; - union { - guint32 words[16]; - guint8 bytes[64]; - } buffer; + guint64 totalLength; + guint32 hash[SHA1_HASH_WORDS]; + guint32 bufferLength; + union { + guint32 words[16]; + guint8 bytes[64]; + } buffer; }; typedef struct _SHA1Context SHA1Context; @@ -67,9 +67,9 @@ extern "C" { #endif -static void SHA1Init (SHA1Context *sc); -static void SHA1Update (SHA1Context *sc, const void *udata, guint32 len); -static void SHA1Final (SHA1Context *sc, guint8 hash[SHA1_HASH_SIZE]); + static void SHA1Init (SHA1Context *sc); + static void SHA1Update (SHA1Context *sc, const void *udata, guint32 len); + static void SHA1Final (SHA1Context *sc, guint8 hash[SHA1_HASH_SIZE]); #ifdef __cplusplus } @@ -77,7 +77,7 @@ #ifndef lint static const char rcsid[] = - "$Id$"; +"$Id$"; #endif /* !lint */ #define ROTL(x, n) (((x) << (n)) | ((x) >> (32 - (n)))) @@ -112,14 +112,14 @@ #else /* WORDS_BIGENDIAN */ #define BYTESWAP(x) ((ROTR((x), 8) & 0xff00ff00L) | \ - (ROTL((x), 8) & 0x00ff00ffL)) + (ROTL((x), 8) & 0x00ff00ffL)) #define BYTESWAP64(x) _byteswap64(x) static inline guint64 _byteswap64(guint64 x) { - guint32 a = x >> 32; - guint32 b = (guint32) x; - return ((guint64) BYTESWAP(b) << 32) | (guint64) BYTESWAP(a); + guint32 a = x >> 32; + guint32 b = (guint32) x; + return ((guint64) BYTESWAP(b) << 32) | (guint64) BYTESWAP(a); } #endif /* WORDS_BIGENDIAN */ @@ -132,469 +132,469 @@ #define BYTESWAP64(x) _byteswap64(x) #define _BYTESWAP(x) ((ROTR((x), 8) & 0xff00ff00L) | \ - (ROTL((x), 8) & 0x00ff00ffL)) + (ROTL((x), 8) & 0x00ff00ffL)) #define _BYTESWAP64(x) __byteswap64(x) static inline guint64 __byteswap64(guint64 x) { - guint32 a = x >> 32; - guint32 b = (guint32) x; - return ((guint64) _BYTESWAP(b) << 32) | (guint64) _BYTESWAP(a); + guint32 a = x >> 32; + guint32 b = (guint32) x; + return ((guint64) _BYTESWAP(b) << 32) | (guint64) _BYTESWAP(a); } static inline guint32 _byteswap(guint32 x) { - if (!littleEndian) - return x; - else - return _BYTESWAP(x); + if (!littleEndian) + return x; + else + return _BYTESWAP(x); } static inline guint64 _byteswap64(guint64 x) { - if (!littleEndian) - return x; - else - return _BYTESWAP64(x); + if (!littleEndian) + return x; + else + return _BYTESWAP64(x); } static inline void setEndian(void) { - union { - guint32 w; - guint8 b[4]; - } endian; + union { + guint32 w; + guint8 b[4]; + } endian; - endian.w = 1L; - littleEndian = endian.b[0] != 0; + endian.w = 1L; + littleEndian = endian.b[0] != 0; } #endif /* !RUNTIME_ENDIAN */ static const guint8 padding[64] = { - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; static void SHA1Init (SHA1Context *sc) { #ifdef RUNTIME_ENDIAN - setEndian (); + setEndian (); #endif /* RUNTIME_ENDIAN */ #ifdef G_OS_WIN32 - sc->totalLength = 0L; + sc->totalLength = 0L; #else - sc->totalLength = 0LL; + sc->totalLength = 0LL; #endif - sc->hash[0] = 0x67452301L; - sc->hash[1] = 0xefcdab89L; - sc->hash[2] = 0x98badcfeL; - sc->hash[3] = 0x10325476L; - sc->hash[4] = 0xc3d2e1f0L; - sc->bufferLength = 0L; + sc->hash[0] = 0x67452301L; + sc->hash[1] = 0xefcdab89L; + sc->hash[2] = 0x98badcfeL; + sc->hash[3] = 0x10325476L; + sc->hash[4] = 0xc3d2e1f0L; + sc->bufferLength = 0L; } static void burnStack (int size) { - char buf[128]; + char buf[128]; - memset (buf, 0, sizeof (buf)); - size -= sizeof (buf); - if (size > 0) - burnStack (size); + memset (buf, 0, sizeof (buf)); + size -= sizeof (buf); + if (size > 0) + burnStack (size); } static void SHA1Guts (SHA1Context *sc, const guint32 *cbuf) { - guint32 buf[80]; - guint32 *W, *W3, *W8, *W14, *W16; - guint32 a, b, c, d, e, temp; - int i; + guint32 buf[80]; + guint32 *W, *W3, *W8, *W14, *W16; + guint32 a, b, c, d, e, temp; + int i; - W = buf; + W = buf; - for (i = 15; i >= 0; i--) { - *(W++) = BYTESWAP(*cbuf); - cbuf++; - } + for (i = 15; i >= 0; i--) { + *(W++) = BYTESWAP(*cbuf); + cbuf++; + } - W16 = &buf[0]; - W14 = &buf[2]; - W8 = &buf[8]; - W3 = &buf[13]; + W16 = &buf[0]; + W14 = &buf[2]; + W8 = &buf[8]; + W3 = &buf[13]; - for (i = 63; i >= 0; i--) { - *W = *(W3++) ^ *(W8++) ^ *(W14++) ^ *(W16++); - *W = ROTL(*W, 1); - W++; - } + for (i = 63; i >= 0; i--) { + *W = *(W3++) ^ *(W8++) ^ *(W14++) ^ *(W16++); + *W = ROTL(*W, 1); + W++; + } - a = sc->hash[0]; - b = sc->hash[1]; - c = sc->hash[2]; - d = sc->hash[3]; - e = sc->hash[4]; + a = sc->hash[0]; + b = sc->hash[1]; + c = sc->hash[2]; + d = sc->hash[3]; + e = sc->hash[4]; - W = buf; + W = buf; #ifndef SHA1_UNROLL #define SHA1_UNROLL 20 #endif /* !SHA1_UNROLL */ #if SHA1_UNROLL == 1 - for (i = 19; i >= 0; i--) - DO_ROUND(F_0_19, K_0_19); + for (i = 19; i >= 0; i--) + DO_ROUND(F_0_19, K_0_19); - for (i = 19; i >= 0; i--) - DO_ROUND(F_20_39, K_20_39); + for (i = 19; i >= 0; i--) + DO_ROUND(F_20_39, K_20_39); - for (i = 19; i >= 0; i--) - DO_ROUND(F_40_59, K_40_59); + for (i = 19; i >= 0; i--) + DO_ROUND(F_40_59, K_40_59); - for (i = 19; i >= 0; i--) - DO_ROUND(F_60_79, K_60_79); + for (i = 19; i >= 0; i--) + DO_ROUND(F_60_79, K_60_79); #elif SHA1_UNROLL == 2 - for (i = 9; i >= 0; i--) { - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - } + for (i = 9; i >= 0; i--) { + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + } - for (i = 9; i >= 0; i--) { - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - } + for (i = 9; i >= 0; i--) { + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + } - for (i = 9; i >= 0; i--) { - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - } + for (i = 9; i >= 0; i--) { + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + } - for (i = 9; i >= 0; i--) { - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - } + for (i = 9; i >= 0; i--) { + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + } #elif SHA1_UNROLL == 4 - for (i = 4; i >= 0; i--) { - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - } + for (i = 4; i >= 0; i--) { + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + } - for (i = 4; i >= 0; i--) { - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - } + for (i = 4; i >= 0; i--) { + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + } - for (i = 4; i >= 0; i--) { - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - } + for (i = 4; i >= 0; i--) { + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + } - for (i = 4; i >= 0; i--) { - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - } + for (i = 4; i >= 0; i--) { + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + } #elif SHA1_UNROLL == 5 - for (i = 3; i >= 0; i--) { - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - } + for (i = 3; i >= 0; i--) { + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + } - for (i = 3; i >= 0; i--) { - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - } + for (i = 3; i >= 0; i--) { + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + } - for (i = 3; i >= 0; i--) { - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - } + for (i = 3; i >= 0; i--) { + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + } - for (i = 3; i >= 0; i--) { - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - } + for (i = 3; i >= 0; i--) { + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + } #elif SHA1_UNROLL == 10 - for (i = 1; i >= 0; i--) { - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - } + for (i = 1; i >= 0; i--) { + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + } - for (i = 1; i >= 0; i--) { - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - } + for (i = 1; i >= 0; i--) { + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + } - for (i = 1; i >= 0; i--) { - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - } + for (i = 1; i >= 0; i--) { + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + } - for (i = 1; i >= 0; i--) { - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - } + for (i = 1; i >= 0; i--) { + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + } #elif SHA1_UNROLL == 20 - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); + DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); + DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); + DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); + DO_ROUND(F_60_79, K_60_79); #else /* SHA1_UNROLL */ #error SHA1_UNROLL must be 1, 2, 4, 5, 10 or 20! #endif - sc->hash[0] += a; - sc->hash[1] += b; - sc->hash[2] += c; - sc->hash[3] += d; - sc->hash[4] += e; + sc->hash[0] += a; + sc->hash[1] += b; + sc->hash[2] += c; + sc->hash[3] += d; + sc->hash[4] += e; } static void SHA1Update (SHA1Context *sc, const void *udata, guint32 len) { - guint32 bufferBytesLeft; - guint32 bytesToCopy; - int needBurn = 0; - guint8 *data = (guint8 *)udata; + guint32 bufferBytesLeft; + guint32 bytesToCopy; + int needBurn = 0; + guint8 *data = (guint8 *)udata; #ifdef SHA1_FAST_COPY - if (sc->bufferLength) { - bufferBytesLeft = 64L - sc->bufferLength; + if (sc->bufferLength) { + bufferBytesLeft = 64L - sc->bufferLength; - bytesToCopy = bufferBytesLeft; - if (bytesToCopy > len) - bytesToCopy = len; + bytesToCopy = bufferBytesLeft; + if (bytesToCopy > len) + bytesToCopy = len; - memcpy (&sc->buffer.bytes[sc->bufferLength], data, bytesToCopy); + memcpy (&sc->buffer.bytes[sc->bufferLength], data, bytesToCopy); - sc->totalLength += bytesToCopy * 8L; + sc->totalLength += bytesToCopy * 8L; - sc->bufferLength += bytesToCopy; - data += bytesToCopy; - len -= bytesToCopy; + sc->bufferLength += bytesToCopy; + data += bytesToCopy; + len -= bytesToCopy; - if (sc->bufferLength == 64L) { - SHA1Guts (sc, sc->buffer.words); - needBurn = 1; - sc->bufferLength = 0L; - } - } + if (sc->bufferLength == 64L) { + SHA1Guts (sc, sc->buffer.words); + needBurn = 1; + sc->bufferLength = 0L; + } + } - while (len > 63) { - sc->totalLength += 512L; + while (len > 63) { + sc->totalLength += 512L; - SHA1Guts (sc, data); - needBurn = 1; + SHA1Guts (sc, data); + needBurn = 1; - data += 64L; - len -= 64L; - } + data += 64L; + len -= 64L; + } - if (len) { - memcpy (&sc->buffer.bytes[sc->bufferLength], data, len); + if (len) { + memcpy (&sc->buffer.bytes[sc->bufferLength], data, len); - sc->totalLength += len * 8L; + sc->totalLength += len * 8L; - sc->bufferLength += len; - } + sc->bufferLength += len; + } #else /* SHA1_FAST_COPY */ - while (len) { - bufferBytesLeft = 64L - sc->bufferLength; + while (len) { + bufferBytesLeft = 64L - sc->bufferLength; - bytesToCopy = bufferBytesLeft; - if (bytesToCopy > len) - bytesToCopy = len; + bytesToCopy = bufferBytesLeft; + if (bytesToCopy > len) + bytesToCopy = len; - memcpy (&sc->buffer.bytes[sc->bufferLength], data, bytesToCopy); + memcpy (&sc->buffer.bytes[sc->bufferLength], data, bytesToCopy); - sc->totalLength += bytesToCopy * 8L; + sc->totalLength += bytesToCopy * 8L; - sc->bufferLength += bytesToCopy; - data += bytesToCopy; - len -= bytesToCopy; + sc->bufferLength += bytesToCopy; + data += bytesToCopy; + len -= bytesToCopy; - if (sc->bufferLength == 64L) { - SHA1Guts (sc, sc->buffer.words); - needBurn = 1; - sc->bufferLength = 0L; - } - } + if (sc->bufferLength == 64L) { + SHA1Guts (sc, sc->buffer.words); + needBurn = 1; + sc->bufferLength = 0L; + } + } #endif /* SHA1_FAST_COPY */ - if (needBurn) - burnStack (sizeof (guint32[86]) + sizeof (guint32 *[5]) + sizeof (int)); + if (needBurn) + burnStack (sizeof (guint32[86]) + sizeof (guint32 *[5]) + sizeof (int)); } static void SHA1Final (SHA1Context *sc, guint8 hash[SHA1_HASH_SIZE]) { - guint32 bytesToPad; - guint64 lengthPad; - int i; + guint32 bytesToPad; + guint64 lengthPad; + int i; - bytesToPad = 120L - sc->bufferLength; - if (bytesToPad > 64L) - bytesToPad -= 64L; + bytesToPad = 120L - sc->bufferLength; + if (bytesToPad > 64L) + bytesToPad -= 64L; - lengthPad = BYTESWAP64(sc->totalLength); + lengthPad = BYTESWAP64(sc->totalLength); - SHA1Update (sc, padding, bytesToPad); - SHA1Update (sc, &lengthPad, 8L); + SHA1Update (sc, padding, bytesToPad); + SHA1Update (sc, &lengthPad, 8L); - if (hash) { - for (i = 0; i < SHA1_HASH_WORDS; i++) { + if (hash) { + for (i = 0; i < SHA1_HASH_WORDS; i++) { #ifdef SHA1_FAST_COPY - *((guint32 *) hash) = BYTESWAP(sc->hash[i]); + *((guint32 *) hash) = BYTESWAP(sc->hash[i]); #else /* SHA1_FAST_COPY */ - hash[0] = (guint8) (sc->hash[i] >> 24); - hash[1] = (guint8) (sc->hash[i] >> 16); - hash[2] = (guint8) (sc->hash[i] >> 8); - hash[3] = (guint8) sc->hash[i]; + hash[0] = (guint8) (sc->hash[i] >> 24); + hash[1] = (guint8) (sc->hash[i] >> 16); + hash[2] = (guint8) (sc->hash[i] >> 8); + hash[3] = (guint8) sc->hash[i]; #endif /* SHA1_FAST_COPY */ - hash += 4; - } - } + hash += 4; + } + } } /** @@ -608,24 +608,24 @@ gchar * lm_sha_hash (const gchar *str) { - gchar *ret_val; - SHA1Context ctx; - guint8 hash[SHA1_HASH_SIZE]; - gchar *ch; - guint i; + gchar *ret_val; + SHA1Context ctx; + guint8 hash[SHA1_HASH_SIZE]; + gchar *ch; + guint i; - ret_val = g_malloc (SHA1_HASH_SIZE*2 + 1); + ret_val = g_malloc (SHA1_HASH_SIZE*2 + 1); - SHA1Init (&ctx); - SHA1Update (&ctx, str, strlen (str)); - SHA1Final (&ctx, hash); + SHA1Init (&ctx); + SHA1Update (&ctx, str, strlen (str)); + SHA1Final (&ctx, hash); - ch = ret_val; + ch = ret_val; - for (i = 0; i < SHA1_HASH_SIZE; ++i) { - g_snprintf (ch, 3, "%02x", hash[i]); - ch += 2; - } + for (i = 0; i < SHA1_HASH_SIZE; ++i) { + g_snprintf (ch, 3, "%02x", hash[i]); + ch += 2; + } - return ret_val; + return ret_val; } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-simple-io.c --- a/loudmouth/lm-simple-io.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-simple-io.c Wed Oct 08 13:11:02 2008 +0200 @@ -28,7 +28,7 @@ typedef struct LmSimpleIOPriv LmSimpleIOPriv; struct LmSimpleIOPriv { - gint my_prop; + gint my_prop; }; static void simple_io_finalize (GObject *object); @@ -52,53 +52,53 @@ simple_io_writer_iface_init)) enum { - PROP_0, - PROP_MY_PROP + PROP_0, + PROP_MY_PROP }; static void lm_simple_io_class_init (LmSimpleIOClass *class) { - GObjectClass *object_class = G_OBJECT_CLASS (class); + GObjectClass *object_class = G_OBJECT_CLASS (class); - object_class->finalize = simple_io_finalize; - object_class->get_property = simple_io_get_property; - object_class->set_property = simple_io_set_property; + object_class->finalize = simple_io_finalize; + object_class->get_property = simple_io_get_property; + object_class->set_property = simple_io_set_property; - g_object_class_install_property (object_class, - PROP_MY_PROP, - g_param_spec_string ("my-prop", - "My Prop", - "My Property", - NULL, - G_PARAM_READWRITE)); - - g_type_class_add_private (object_class, sizeof (LmSimpleIOPriv)); + g_object_class_install_property (object_class, + PROP_MY_PROP, + g_param_spec_string ("my-prop", + "My Prop", + "My Property", + NULL, + G_PARAM_READWRITE)); + + g_type_class_add_private (object_class, sizeof (LmSimpleIOPriv)); } static void lm_simple_io_init (LmSimpleIO *simple_io) { - LmSimpleIOPriv *priv; + LmSimpleIOPriv *priv; - priv = GET_PRIV (simple_io); + priv = GET_PRIV (simple_io); } static void simple_io_finalize (GObject *object) { - LmSimpleIOPriv *priv; + LmSimpleIOPriv *priv; - priv = GET_PRIV (object); + priv = GET_PRIV (object); - (G_OBJECT_CLASS (lm_simple_io_parent_class)->finalize) (object); + (G_OBJECT_CLASS (lm_simple_io_parent_class)->finalize) (object); } static void simple_io_writer_iface_init (LmXmppWriterIface *iface) { - iface->send_message = simple_io_send_message; - iface->send_text = simple_io_send_text; + iface->send_message = simple_io_send_message; + iface->send_text = simple_io_send_text; } static void @@ -107,18 +107,18 @@ GValue *value, GParamSpec *pspec) { - LmSimpleIOPriv *priv; + LmSimpleIOPriv *priv; - priv = GET_PRIV (object); + priv = GET_PRIV (object); - switch (param_id) { - case PROP_MY_PROP: - g_value_set_int (value, priv->my_prop); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); - break; - }; + switch (param_id) { + case PROP_MY_PROP: + g_value_set_int (value, priv->my_prop); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); + break; + }; } static void @@ -127,18 +127,18 @@ const GValue *value, GParamSpec *pspec) { - LmSimpleIOPriv *priv; + LmSimpleIOPriv *priv; - priv = GET_PRIV (object); + priv = GET_PRIV (object); - switch (param_id) { - case PROP_MY_PROP: - priv->my_prop = g_value_get_int (value); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); - break; - }; + switch (param_id) { + case PROP_MY_PROP: + priv->my_prop = g_value_get_int (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); + break; + }; } static void diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-simple-io.h --- a/loudmouth/lm-simple-io.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-simple-io.h Wed Oct 08 13:11:02 2008 +0200 @@ -36,11 +36,11 @@ typedef struct LmSimpleIOClass LmSimpleIOClass; struct LmSimpleIO { - GObject parent; + GObject parent; }; struct LmSimpleIOClass { - GObjectClass parent_class; + GObjectClass parent_class; }; GType lm_simple_io_get_type (void); diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-sock.c --- a/loudmouth/lm-sock.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-sock.c Wed Oct 08 13:11:02 2008 +0200 @@ -63,313 +63,313 @@ _lm_sock_library_init (void) { #ifdef G_OS_WIN32 - WORD version; - WSADATA data; - int error; + WORD version; + WSADATA data; + int error; #endif /* G_OS_WIN32 */ - - if (initialised) { - return TRUE; - } + + if (initialised) { + return TRUE; + } - lm_verbose ("Socket library initialising...\n"); - + lm_verbose ("Socket library initialising...\n"); + #ifdef G_OS_WIN32 - lm_verbose ("Checking for winsock 2.0 or above...\n"); - - version = MAKEWORD (2, 0); - - error = WSAStartup (version, &data); - if (error != 0) { - g_printerr ("WSAStartup() failed, error:%d\n", error); - return FALSE; - } - - /* Confirm that the WinSock DLL supports 2.0. - * Note that if the DLL supports versions greater - * than 2.0 in addition to 2.0, it will still return - * 2.0 in wVersion since that is the version we - * requested. - */ - if (LOBYTE (data.wVersion) != 2 || - HIBYTE (data.wVersion) != 0) { - /* Tell the user that we could not find a usable - * WinSock DLL. - */ - g_printerr ("Socket library version is not sufficient!\n"); - WSACleanup (); - return FALSE; - } + lm_verbose ("Checking for winsock 2.0 or above...\n"); + + version = MAKEWORD (2, 0); + + error = WSAStartup (version, &data); + if (error != 0) { + g_printerr ("WSAStartup() failed, error:%d\n", error); + return FALSE; + } + + /* Confirm that the WinSock DLL supports 2.0. + * Note that if the DLL supports versions greater + * than 2.0 in addition to 2.0, it will still return + * 2.0 in wVersion since that is the version we + * requested. + */ + if (LOBYTE (data.wVersion) != 2 || + HIBYTE (data.wVersion) != 0) { + /* Tell the user that we could not find a usable + * WinSock DLL. + */ + g_printerr ("Socket library version is not sufficient!\n"); + WSACleanup (); + return FALSE; + } #endif /* G_OS_WIN32 */ - initialised = TRUE; - - return TRUE; + initialised = TRUE; + + return TRUE; } void _lm_sock_library_shutdown (void) { - if (!initialised) { - return; - } + if (!initialised) { + return; + } - lm_verbose ("Socket library shutting down...\n"); + lm_verbose ("Socket library shutting down...\n"); #ifdef G_OS_WIN32 - WSACleanup (); + WSACleanup (); #endif /* G_OS_WIN32 */ - initialised = FALSE; + initialised = FALSE; } void _lm_sock_set_blocking (LmOldSocketT sock, - gboolean block) + gboolean block) { - int res; + int res; #ifndef G_OS_WIN32 - res = fcntl (sock, F_SETFL, block ? 0 : O_NONBLOCK); + res = fcntl (sock, F_SETFL, block ? 0 : O_NONBLOCK); #else /* G_OS_WIN32 */ - u_long mode = (block ? 0 : 1); - res = ioctlsocket (sock, FIONBIO, &mode); + u_long mode = (block ? 0 : 1); + res = ioctlsocket (sock, FIONBIO, &mode); #endif /* G_OS_WIN32 */ - if (res != 0) { - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, - "Could not set connection to be %s\n", - block ? "blocking" : "non-blocking"); - } + if (res != 0) { + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_NET, + "Could not set connection to be %s\n", + block ? "blocking" : "non-blocking"); + } } void _lm_sock_shutdown (LmOldSocketT sock) { - shutdown (sock, LM_SHUTDOWN); + shutdown (sock, LM_SHUTDOWN); } void _lm_sock_close (LmOldSocketT sock) { #ifndef G_OS_WIN32 - close (sock); + close (sock); #else /* G_OS_WIN32 */ - closesocket (sock); + closesocket (sock); #endif /* G_OS_WIN32 */ } LmOldSocketT _lm_sock_makesocket (int af, - int type, - int protocol) + int type, + int protocol) { - return (LmOldSocketT)socket (af, type, protocol); + return (LmOldSocketT)socket (af, type, protocol); } int _lm_sock_connect (LmOldSocketT sock, - const struct sockaddr *name, - int namelen) + const struct sockaddr *name, + int namelen) { - return connect (sock, name, namelen); + return connect (sock, name, namelen); } gboolean _lm_sock_is_blocking_error (int err) { #ifndef G_OS_WIN32 - return (err == _LM_SOCK_EINPROGRESS); + return (err == _LM_SOCK_EINPROGRESS); #else /* G_OS_WIN32 */ - return (err == _LM_SOCK_EINPROGRESS || - err == _LM_SOCK_EWOULDBLOCK || - err == _LM_SOCK_EINVAL); + return (err == _LM_SOCK_EINPROGRESS || + err == _LM_SOCK_EWOULDBLOCK || + err == _LM_SOCK_EINVAL); #endif /* G_OS_WIN32 */ } gboolean _lm_sock_is_blocking_success (int err) { - return (err == _LM_SOCK_EALREADY || err == _LM_SOCK_EISCONN); + return (err == _LM_SOCK_EALREADY || err == _LM_SOCK_EISCONN); } int _lm_sock_get_last_error (void) { #ifndef G_OS_WIN32 - return errno; + return errno; #else /* G_OS_WIN32 */ - return WSAGetLastError (); + return WSAGetLastError (); #endif /* G_OS_WIN32 */ } void _lm_sock_get_error (LmOldSocketT sock, - void *error, - socklen_t *len) + void *error, + socklen_t *len) { - getsockopt (sock, SOL_SOCKET, SO_ERROR, (void*) error, len); + getsockopt (sock, SOL_SOCKET, SO_ERROR, (void*) error, len); } const gchar * _lm_sock_get_error_str (int err) { #ifndef G_OS_WIN32 - return strerror (err); + return strerror (err); #else /* G_OS_WIN32 */ - switch (err) { - case WSAEINTR: return _("Connect interrupted and canceled"); - case WSAEACCES: return _("Permission denied"); - case WSAEFAULT: return _("Bad address"); - case WSAEINVAL: return _("Invalid argument"); - case WSAEMFILE: return _("Too many open sockets"); - case WSAEWOULDBLOCK: return _("Resource temporarily unavailable"); - case WSAEINPROGRESS: return _("Operation now in progress"); - case WSAEALREADY: return _("Operation already in progress"); - case WSAENOTSOCK: return _("Socket operation on nonsocket"); - case WSAEDESTADDRREQ: return _("Destination address required"); - case WSAEMSGSIZE: return _("Message too long"); - case WSAEPROTOTYPE: return _("Protocol wrong type for socket"); - case WSAENOPROTOOPT: return _("Bad protocol option"); - case WSAEPROTONOSUPPORT: return _("Protocol not supported"); - case WSAESOCKTNOSUPPORT: return _("Socket type not supported"); - case WSAEOPNOTSUPP: return _("Operation not supported"); - case WSAEPFNOSUPPORT: return _("Protocol family not supported"); - case WSAEAFNOSUPPORT: return _("Address family not supported by protocol family"); - case WSAEADDRINUSE: return _("Address already in use"); - case WSAEADDRNOTAVAIL: return _("Can not assign requested address"); - case WSAENETDOWN: return _("Network is down"); - case WSAENETUNREACH: return _("Network is unreachable"); - case WSAENETRESET: return _("Network dropped connection on reset"); - case WSAECONNABORTED: return _("Software caused connection abort"); - case WSAECONNRESET: return _("Connection reset by peer"); - case WSAENOBUFS: return _("No buffer space available"); - case WSAEISCONN: return _("Socket is already connected"); - case WSAENOTCONN: return _("Socket is not connected"); - case WSAESHUTDOWN: return _("Can not send after socket shutdown"); - case WSAETIMEDOUT: return _("Connection timed out"); - case WSAECONNREFUSED: return _("Connection refused"); - case WSAEHOSTDOWN: return _("Host is down"); - case WSAEHOSTUNREACH: return _("No route to host"); - case WSAEPROCLIM: return _("Too many processes"); - case WSASYSNOTREADY: return _("Network subsystem is unavailable"); - case WSAVERNOTSUPPORTED: return _("Winsock library version is out of range "); - case WSANOTINITIALISED: return _("Successful WSAStartup not yet performed"); - case WSAEDISCON: return _("Graceful shutdown in progress"); - case WSATYPE_NOT_FOUND: return _("Class type not found"); - case WSAHOST_NOT_FOUND: return _("Host not found"); - case WSATRY_AGAIN: return _("Nonauthoritative host not found"); - case WSANO_RECOVERY: return _("This is a nonrecoverable error"); - case WSANO_DATA: return _("Valid name, no data record of requested type"); - case WSA_INVALID_HANDLE: return _("Specified event object handle is invalid"); - case WSA_INVALID_PARAMETER: return _("One or more parameters are invalid"); - case WSA_IO_INCOMPLETE: return _("Overlapped I/O event object no in signaled state"); - case WSA_IO_PENDING: return _("Overlapped operations will complete later"); - case WSA_NOT_ENOUGH_MEMORY: return _("Insufficient memory available"); - case WSA_OPERATION_ABORTED: return _("Overlapped operation aborted"); - /* os dependent */ - case WSASYSCALLFAILURE: return _("System call failure"); - } - - return _("Unknown"); + switch (err) { + case WSAEINTR: return _("Connect interrupted and canceled"); + case WSAEACCES: return _("Permission denied"); + case WSAEFAULT: return _("Bad address"); + case WSAEINVAL: return _("Invalid argument"); + case WSAEMFILE: return _("Too many open sockets"); + case WSAEWOULDBLOCK: return _("Resource temporarily unavailable"); + case WSAEINPROGRESS: return _("Operation now in progress"); + case WSAEALREADY: return _("Operation already in progress"); + case WSAENOTSOCK: return _("Socket operation on nonsocket"); + case WSAEDESTADDRREQ: return _("Destination address required"); + case WSAEMSGSIZE: return _("Message too long"); + case WSAEPROTOTYPE: return _("Protocol wrong type for socket"); + case WSAENOPROTOOPT: return _("Bad protocol option"); + case WSAEPROTONOSUPPORT: return _("Protocol not supported"); + case WSAESOCKTNOSUPPORT: return _("Socket type not supported"); + case WSAEOPNOTSUPP: return _("Operation not supported"); + case WSAEPFNOSUPPORT: return _("Protocol family not supported"); + case WSAEAFNOSUPPORT: return _("Address family not supported by protocol family"); + case WSAEADDRINUSE: return _("Address already in use"); + case WSAEADDRNOTAVAIL: return _("Can not assign requested address"); + case WSAENETDOWN: return _("Network is down"); + case WSAENETUNREACH: return _("Network is unreachable"); + case WSAENETRESET: return _("Network dropped connection on reset"); + case WSAECONNABORTED: return _("Software caused connection abort"); + case WSAECONNRESET: return _("Connection reset by peer"); + case WSAENOBUFS: return _("No buffer space available"); + case WSAEISCONN: return _("Socket is already connected"); + case WSAENOTCONN: return _("Socket is not connected"); + case WSAESHUTDOWN: return _("Can not send after socket shutdown"); + case WSAETIMEDOUT: return _("Connection timed out"); + case WSAECONNREFUSED: return _("Connection refused"); + case WSAEHOSTDOWN: return _("Host is down"); + case WSAEHOSTUNREACH: return _("No route to host"); + case WSAEPROCLIM: return _("Too many processes"); + case WSASYSNOTREADY: return _("Network subsystem is unavailable"); + case WSAVERNOTSUPPORTED: return _("Winsock library version is out of range "); + case WSANOTINITIALISED: return _("Successful WSAStartup not yet performed"); + case WSAEDISCON: return _("Graceful shutdown in progress"); + case WSATYPE_NOT_FOUND: return _("Class type not found"); + case WSAHOST_NOT_FOUND: return _("Host not found"); + case WSATRY_AGAIN: return _("Nonauthoritative host not found"); + case WSANO_RECOVERY: return _("This is a nonrecoverable error"); + case WSANO_DATA: return _("Valid name, no data record of requested type"); + case WSA_INVALID_HANDLE: return _("Specified event object handle is invalid"); + case WSA_INVALID_PARAMETER: return _("One or more parameters are invalid"); + case WSA_IO_INCOMPLETE: return _("Overlapped I/O event object no in signaled state"); + case WSA_IO_PENDING: return _("Overlapped operations will complete later"); + case WSA_NOT_ENOUGH_MEMORY: return _("Insufficient memory available"); + case WSA_OPERATION_ABORTED: return _("Overlapped operation aborted"); + /* os dependent */ + case WSASYSCALLFAILURE: return _("System call failure"); + } + + return _("Unknown"); #endif /* G_OS_WIN32 */ } const gchar * _lm_sock_addrinfo_get_error_str (int err) { - switch (err) { - case EAI_AGAIN: - return _("The nameserver failed to return an " - "address, try again later"); - case EAI_BADFLAGS: - return _("Internal error trying to obtain remote address"); - case EAI_FAIL: - return _("The nameserver encountered errors " - "looking up this address"); - /* EAI_NODATA is apparently missing on FreeBSD. On recent GNU libc, - * it requires _GNU_SOURCE to be defined; in the unlikely case that - * that GNU libc returns this value we'll return the default message */ + switch (err) { + case EAI_AGAIN: + return _("The nameserver failed to return an " + "address, try again later"); + case EAI_BADFLAGS: + return _("Internal error trying to obtain remote address"); + case EAI_FAIL: + return _("The nameserver encountered errors " + "looking up this address"); + /* EAI_NODATA is apparently missing on FreeBSD. On recent GNU libc, + * it requires _GNU_SOURCE to be defined; in the unlikely case that + * that GNU libc returns this value we'll return the default message */ #ifdef EAI_NODATA - case EAI_NODATA: - return _("The remote host exists but no address " - "is available"); + case EAI_NODATA: + return _("The remote host exists but no address " + "is available"); #endif - case EAI_NONAME: - return _("The remote address is unknown"); - case EAI_FAMILY: - case EAI_SERVICE: - case EAI_SOCKTYPE: - return _("The remote address is not obtainable " - "for that socket type."); - default: - break; - } + case EAI_NONAME: + return _("The remote address is unknown"); + case EAI_FAMILY: + case EAI_SERVICE: + case EAI_SOCKTYPE: + return _("The remote address is not obtainable " + "for that socket type."); + default: + break; + } - return _("The remote address could not be obtained "); + return _("The remote address could not be obtained "); } #ifdef USE_TCP_KEEPALIVES gboolean _lm_sock_set_keepalive (LmOldSocketT sock, int delay) { - int opt; + int opt; - opt = 1; - if (setsockopt (sock, SOL_SOCKET, SO_KEEPALIVE, &opt, sizeof (opt)) < 0) { - return FALSE; - } + opt = 1; + if (setsockopt (sock, SOL_SOCKET, SO_KEEPALIVE, &opt, sizeof (opt)) < 0) { + return FALSE; + } - opt = 3; /* 3 keepalives before considering connection dead */ - if (setsockopt (sock, IPPROTO_TCP, TCP_KEEPCNT, &opt, sizeof (opt)) < 0) { - return FALSE; - } + opt = 3; /* 3 keepalives before considering connection dead */ + if (setsockopt (sock, IPPROTO_TCP, TCP_KEEPCNT, &opt, sizeof (opt)) < 0) { + return FALSE; + } - opt = delay; - if (setsockopt (sock, IPPROTO_TCP, TCP_KEEPIDLE, &opt, sizeof (opt)) < 0) { - return FALSE; - } + opt = delay; + if (setsockopt (sock, IPPROTO_TCP, TCP_KEEPIDLE, &opt, sizeof (opt)) < 0) { + return FALSE; + } - opt = delay; - if (setsockopt (sock, IPPROTO_TCP, TCP_KEEPINTVL, &opt, sizeof (opt)) < 0) { - return FALSE; - } + opt = delay; + if (setsockopt (sock, IPPROTO_TCP, TCP_KEEPINTVL, &opt, sizeof (opt)) < 0) { + return FALSE; + } - return TRUE; + return TRUE; } #endif /* USE_TCP_KEEPALIVES */ gchar * _lm_sock_get_local_host (LmOldSocketT sock) { - struct sockaddr addr_info; - void *sock_addr; - socklen_t namelen; - char addrbuf[IPV6_MAX_ADDRESS_LEN]; - const char *host; + struct sockaddr addr_info; + void *sock_addr; + socklen_t namelen; + char addrbuf[IPV6_MAX_ADDRESS_LEN]; + const char *host; - namelen = sizeof (struct sockaddr); - if (getsockname (sock, &addr_info, &namelen)) { - return NULL; - } + namelen = sizeof (struct sockaddr); + if (getsockname (sock, &addr_info, &namelen)) { + return NULL; + } - switch (addr_info.sa_family) { - case AF_INET: - - sock_addr = & (((struct sockaddr_in *) &addr_info)->sin_addr); - break; - case AF_INET6: - sock_addr = & (((struct sockaddr_in6 *) &addr_info)->sin6_addr); - break; - default: - return NULL; - } - /* inet_ntoa has been obsoleted in favour of inet_ntop */ - host = inet_ntop (addr_info.sa_family, - sock_addr, - addrbuf, - IPV6_MAX_ADDRESS_LEN); + switch (addr_info.sa_family) { + case AF_INET: + + sock_addr = & (((struct sockaddr_in *) &addr_info)->sin_addr); + break; + case AF_INET6: + sock_addr = & (((struct sockaddr_in6 *) &addr_info)->sin6_addr); + break; + default: + return NULL; + } + /* inet_ntoa has been obsoleted in favour of inet_ntop */ + host = inet_ntop (addr_info.sa_family, + sock_addr, + addrbuf, + IPV6_MAX_ADDRESS_LEN); - return g_strdup (host); + return g_strdup (host); } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-socket.c --- a/loudmouth/lm-socket.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-socket.c Wed Oct 08 13:11:02 2008 +0200 @@ -26,10 +26,10 @@ static void socket_base_init (LmSocketIface *iface); enum { - READABLE, - WRITABLE, - DISCONNECTED, - LAST_SIGNAL + READABLE, + WRITABLE, + DISCONNECTED, + LAST_SIGNAL }; static guint signals[LAST_SIGNAL] = { 0 }; @@ -37,106 +37,106 @@ GType lm_socket_get_type (void) { - static GType iface_type = 0; + static GType iface_type = 0; - if (!iface_type) { - static const GTypeInfo iface_info = { - sizeof (LmSocketIface), - (GBaseInitFunc) socket_base_init, - (GBaseFinalizeFunc) NULL, - }; + if (!iface_type) { + static const GTypeInfo iface_info = { + sizeof (LmSocketIface), + (GBaseInitFunc) socket_base_init, + (GBaseFinalizeFunc) NULL, + }; - iface_type = g_type_register_static (G_TYPE_INTERFACE, - "LmSocketIface", - &iface_info, - 0); + iface_type = g_type_register_static (G_TYPE_INTERFACE, + "LmSocketIface", + &iface_info, + 0); - g_type_interface_add_prerequisite (iface_type, G_TYPE_OBJECT); - } + g_type_interface_add_prerequisite (iface_type, G_TYPE_OBJECT); + } - return iface_type; + return iface_type; } static void socket_base_init (LmSocketIface *iface) { - static gboolean initialized = FALSE; + static gboolean initialized = FALSE; - if (!initialized) { - signals[READABLE] = - g_signal_new ("readable", - LM_TYPE_SOCKET, - G_SIGNAL_RUN_LAST, - 0, - NULL, NULL, - lm_marshal_VOID__VOID, - G_TYPE_NONE, - 0); - signals[WRITABLE] = - g_signal_new ("writable", - LM_TYPE_SOCKET, - G_SIGNAL_RUN_LAST, - 0, - NULL, NULL, - lm_marshal_VOID__VOID, - G_TYPE_NONE, - 0); - signals[DISCONNECTED] = - g_signal_new ("disconnected", - LM_TYPE_SOCKET, - G_SIGNAL_RUN_LAST, - 0, - NULL, NULL, - lm_marshal_VOID__VOID, - G_TYPE_NONE, - 0); - initialized = TRUE; - } + if (!initialized) { + signals[READABLE] = + g_signal_new ("readable", + LM_TYPE_SOCKET, + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + lm_marshal_VOID__VOID, + G_TYPE_NONE, + 0); + signals[WRITABLE] = + g_signal_new ("writable", + LM_TYPE_SOCKET, + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + lm_marshal_VOID__VOID, + G_TYPE_NONE, + 0); + signals[DISCONNECTED] = + g_signal_new ("disconnected", + LM_TYPE_SOCKET, + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + lm_marshal_VOID__VOID, + G_TYPE_NONE, + 0); + initialized = TRUE; + } } LmSocket * lm_socket_new (const gchar *host, guint port) { - g_return_val_if_fail (host != NULL, NULL); + g_return_val_if_fail (host != NULL, NULL); - return NULL; + return NULL; } /* Use DNS lookup to find the port and the host */ LmSocket * lm_socket_new_to_service (const gchar *service) { - g_return_val_if_fail (service != NULL, NULL); + g_return_val_if_fail (service != NULL, NULL); - return NULL; + return NULL; } void lm_socket_connect (LmSocket *socket) { - g_return_if_fail (LM_IS_SOCKET (socket)); + g_return_if_fail (LM_IS_SOCKET (socket)); - /* Initiate the connection process */ - /* DNS lookup, connect thing, create IOchannel etc */ - if (!LM_SOCKET_GET_IFACE(socket)->write) { - g_assert_not_reached (); - } + /* Initiate the connection process */ + /* DNS lookup, connect thing, create IOchannel etc */ + if (!LM_SOCKET_GET_IFACE(socket)->write) { + g_assert_not_reached (); + } - LM_SOCKET_GET_IFACE(socket)->connect (socket); + LM_SOCKET_GET_IFACE(socket)->connect (socket); } gboolean lm_socket_write (LmSocket *socket, gchar *buf, gsize len) { - g_return_val_if_fail (LM_IS_SOCKET (socket), FALSE); - g_return_val_if_fail (buf != NULL, FALSE); + g_return_val_if_fail (LM_IS_SOCKET (socket), FALSE); + g_return_val_if_fail (buf != NULL, FALSE); - if (!LM_SOCKET_GET_IFACE(socket)->write) { - g_assert_not_reached (); - } + if (!LM_SOCKET_GET_IFACE(socket)->write) { + g_assert_not_reached (); + } - return LM_SOCKET_GET_IFACE(socket)->write (socket, buf, len); + return LM_SOCKET_GET_IFACE(socket)->write (socket, buf, len); } gboolean @@ -145,25 +145,25 @@ gsize buf_len, gsize *read_len) { - g_return_val_if_fail (LM_IS_SOCKET (socket), FALSE); - g_return_val_if_fail (buf != NULL, FALSE); + g_return_val_if_fail (LM_IS_SOCKET (socket), FALSE); + g_return_val_if_fail (buf != NULL, FALSE); - if (!LM_SOCKET_GET_IFACE(socket)->read) { - g_assert_not_reached (); - } + if (!LM_SOCKET_GET_IFACE(socket)->read) { + g_assert_not_reached (); + } - return LM_SOCKET_GET_IFACE(socket)->read (socket, buf, buf_len, read_len); + return LM_SOCKET_GET_IFACE(socket)->read (socket, buf, buf_len, read_len); } void lm_socket_disconnect (LmSocket *socket) { - g_return_if_fail (LM_IS_SOCKET (socket)); + g_return_if_fail (LM_IS_SOCKET (socket)); - if (!LM_SOCKET_GET_IFACE(socket)->disconnect) { - g_assert_not_reached (); - } + if (!LM_SOCKET_GET_IFACE(socket)->disconnect) { + g_assert_not_reached (); + } - LM_SOCKET_GET_IFACE(socket)->disconnect (socket); + LM_SOCKET_GET_IFACE(socket)->disconnect (socket); } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-socket.h --- a/loudmouth/lm-socket.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-socket.h Wed Oct 08 13:11:02 2008 +0200 @@ -37,18 +37,18 @@ typedef struct _LmSocketIface LmSocketIface; struct _LmSocketIface { - GTypeInterface parent; + GTypeInterface parent; - /* */ - void (*connect) (LmSocket *socket); - gboolean (*write) (LmSocket *socket, - gchar *buf, - gsize len); - gboolean (*read) (LmSocket *socket, - gchar *buf, - gsize buf_len, - gsize *read_len); - void (*disconnect) (LmSocket *socket); + /* */ + void (*connect) (LmSocket *socket); + gboolean (*write) (LmSocket *socket, + gchar *buf, + gsize len); + gboolean (*read) (LmSocket *socket, + gchar *buf, + gsize buf_len, + gsize *read_len); + void (*disconnect) (LmSocket *socket); }; typedef void (*LmSocketCallback) (LmSocket *socket, diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-soup-socket.c --- a/loudmouth/lm-soup-socket.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-soup-socket.c Wed Oct 08 13:11:02 2008 +0200 @@ -29,9 +29,9 @@ typedef struct LmSoupSocketPriv LmSoupSocketPriv; struct LmSoupSocketPriv { - gint my_prop; - SoupSocket *soup; - GCancellable *cancellable; + gint my_prop; + SoupSocket *soup; + GCancellable *cancellable; }; static void soup_socket_iface_init (LmSocketIface *iface); @@ -64,13 +64,13 @@ soup_socket_iface_init)) enum { - PROP_0, - PROP_MY_PROP + PROP_0, + PROP_MY_PROP }; enum { - SIGNAL_NAME, - LAST_SIGNAL + SIGNAL_NAME, + LAST_SIGNAL }; static guint signals[LAST_SIGNAL] = { 0 }; @@ -78,66 +78,66 @@ static void lm_soup_socket_class_init (LmSoupSocketClass *class) { - GObjectClass *object_class = G_OBJECT_CLASS (class); + GObjectClass *object_class = G_OBJECT_CLASS (class); - object_class->finalize = soup_socket_finalize; - object_class->get_property = soup_socket_get_property; - object_class->set_property = soup_socket_set_property; + object_class->finalize = soup_socket_finalize; + object_class->get_property = soup_socket_get_property; + object_class->set_property = soup_socket_set_property; - g_object_class_install_property (object_class, - PROP_MY_PROP, - g_param_spec_string ("my-prop", - "My Prop", - "My Property", - NULL, - G_PARAM_READWRITE)); - - signals[SIGNAL_NAME] = - g_signal_new ("signal-name", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST, - 0, - NULL, NULL, - lm_marshal_VOID__INT, - G_TYPE_NONE, - 1, G_TYPE_INT); - - g_type_class_add_private (object_class, sizeof (LmSoupSocketPriv)); + g_object_class_install_property (object_class, + PROP_MY_PROP, + g_param_spec_string ("my-prop", + "My Prop", + "My Property", + NULL, + G_PARAM_READWRITE)); + + signals[SIGNAL_NAME] = + g_signal_new ("signal-name", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + lm_marshal_VOID__INT, + G_TYPE_NONE, + 1, G_TYPE_INT); + + g_type_class_add_private (object_class, sizeof (LmSoupSocketPriv)); } static void lm_soup_socket_init (LmSoupSocket *soup_socket) { - LmSoupSocketPriv *priv; + LmSoupSocketPriv *priv; - priv = GET_PRIV (soup_socket); + priv = GET_PRIV (soup_socket); } static void soup_socket_iface_init (LmSocketIface *iface) { - iface->connect = _soup_socket_connect; - iface->write = _soup_socket_write; - iface->read = _soup_socket_read; - iface->disconnect = _soup_socket_disconnect; + iface->connect = _soup_socket_connect; + iface->write = _soup_socket_write; + iface->read = _soup_socket_read; + iface->disconnect = _soup_socket_disconnect; } static void soup_socket_finalize (GObject *object) { - LmSoupSocketPriv *priv; + LmSoupSocketPriv *priv; - priv = GET_PRIV (object); + priv = GET_PRIV (object); - if (priv->soup) { - if (soup_socket_is_connected (priv->soup)) { - soup_socket_disconnect (priv->soup); - } - - g_object_unref (priv->soup); + if (priv->soup) { + if (soup_socket_is_connected (priv->soup)) { + soup_socket_disconnect (priv->soup); } - (G_OBJECT_CLASS (lm_soup_socket_parent_class)->finalize) (object); + g_object_unref (priv->soup); + } + + (G_OBJECT_CLASS (lm_soup_socket_parent_class)->finalize) (object); } static void @@ -146,18 +146,18 @@ GValue *value, GParamSpec *pspec) { - LmSoupSocketPriv *priv; + LmSoupSocketPriv *priv; - priv = GET_PRIV (object); + priv = GET_PRIV (object); - switch (param_id) { - case PROP_MY_PROP: - g_value_set_int (value, priv->my_prop); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); - break; - }; + switch (param_id) { + case PROP_MY_PROP: + g_value_set_int (value, priv->my_prop); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); + break; + }; } static void @@ -166,92 +166,92 @@ const GValue *value, GParamSpec *pspec) { - LmSoupSocketPriv *priv; + LmSoupSocketPriv *priv; - priv = GET_PRIV (object); + priv = GET_PRIV (object); - switch (param_id) { - case PROP_MY_PROP: - priv->my_prop = g_value_get_int (value); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); - break; - }; + switch (param_id) { + case PROP_MY_PROP: + priv->my_prop = g_value_get_int (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); + break; + }; } static void _soup_socket_connect (LmSocket *socket) { - LmSoupSocketPriv *priv = GET_PRIV (socket); + LmSoupSocketPriv *priv = GET_PRIV (socket); - if (priv->soup) { - g_warning ("Already have a SoupSocket"); - return; - } + if (priv->soup) { + g_warning ("Already have a SoupSocket"); + return; + } - priv->soup = soup_socket_new ("remote-address", "kenny.imendio.com", - "non-blocking", TRUE, - NULL); + priv->soup = soup_socket_new ("remote-address", "kenny.imendio.com", + "non-blocking", TRUE, + NULL); - soup_socket_connect_async (priv->soup, - priv->cancellable, - (SoupSocketCallback)_soup_socket_callback, - socket); + soup_socket_connect_async (priv->soup, + priv->cancellable, + (SoupSocketCallback)_soup_socket_callback, + socket); } static gboolean _soup_socket_write (LmSocket *socket, - gchar *data, - gsize len) + gchar *data, + gsize len) { - LmSoupSocketPriv *priv = GET_PRIV (socket); - SoupSocketIOStatus io_status; + LmSoupSocketPriv *priv = GET_PRIV (socket); + SoupSocketIOStatus io_status; - if (!priv->soup || !soup_socket_is_connected (priv->soup)) { - g_warning ("Trying to write to an unconnected socket"); - return FALSE; - } + if (!priv->soup || !soup_socket_is_connected (priv->soup)) { + g_warning ("Trying to write to an unconnected socket"); + return FALSE; + } - io_status = soup_socket_write (priv->soup, - data, len, - NULL /* FIXME: Should be how much was written */, - priv->cancellable, - NULL /* FIXME: Should be a GError */); - return TRUE; /* FIXME: Return properly depending on IOStatus */ + io_status = soup_socket_write (priv->soup, + data, len, + NULL /* FIXME: Should be how much was written */, + priv->cancellable, + NULL /* FIXME: Should be a GError */); + return TRUE; /* FIXME: Return properly depending on IOStatus */ } static gboolean _soup_socket_read (LmSocket *socket, - gchar *buf, - gsize buf_len, - gsize *read_len) + gchar *buf, + gsize buf_len, + gsize *read_len) { - LmSoupSocketPriv *priv = GET_PRIV (socket); - SoupSocketIOStatus io_status; + LmSoupSocketPriv *priv = GET_PRIV (socket); + SoupSocketIOStatus io_status; - if (!priv->soup || !soup_socket_is_connected (priv->soup)) { - g_warning ("Trying to read from an unconnected socket"); - return FALSE; - } + if (!priv->soup || !soup_socket_is_connected (priv->soup)) { + g_warning ("Trying to read from an unconnected socket"); + return FALSE; + } - io_status = soup_socket_read (priv->soup, - buf, buf_len, read_len, - priv->cancellable, - NULL /* FIXME: Look at if the match is up tonight */); + io_status = soup_socket_read (priv->soup, + buf, buf_len, read_len, + priv->cancellable, + NULL /* FIXME: Look at if the match is up tonight */); - return FALSE; + return FALSE; } static void _soup_socket_disconnect (LmSocket *socket) { - LmSoupSocketPriv *priv = GET_PRIV (socket); + LmSoupSocketPriv *priv = GET_PRIV (socket); - if (priv->soup) { - soup_socket_disconnect (priv->soup); - } + if (priv->soup) { + soup_socket_disconnect (priv->soup); + } } static void @@ -259,6 +259,6 @@ guint status, LmSocket *socket) { - /* Signal back to caller of lm_socket_connect through LmSocketCallback */ + /* Signal back to caller of lm_socket_connect through LmSocketCallback */ } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-soup-socket.h --- a/loudmouth/lm-soup-socket.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-soup-socket.h Wed Oct 08 13:11:02 2008 +0200 @@ -38,19 +38,19 @@ typedef struct LmSoupSocketClass LmSoupSocketClass; struct LmSoupSocket { - GObject parent; + GObject parent; }; struct LmSoupSocketClass { - GObjectClass parent_class; - - /* */ - void (*initialize) (LmSoupSocket *soup_socket, - const char *username, - const char *server, - const char *password); - void (*begin) (LmSoupSocket *soup_socket); - void (*cancel) (LmSoupSocket *soup_socket); + GObjectClass parent_class; + + /* */ + void (*initialize) (LmSoupSocket *soup_socket, + const char *username, + const char *server, + const char *password); + void (*begin) (LmSoupSocket *soup_socket); + void (*cancel) (LmSoupSocket *soup_socket); }; GType lm_soup_socket_get_type (void); diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-ssl-base.c --- a/loudmouth/lm-ssl-base.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-ssl-base.c Wed Oct 08 13:11:02 2008 +0200 @@ -23,34 +23,34 @@ void _lm_ssl_base_init (LmSSLBase *base, - const gchar *expected_fingerprint, - LmSSLFunction ssl_function, - gpointer user_data, - GDestroyNotify notify) + const gchar *expected_fingerprint, + LmSSLFunction ssl_function, + gpointer user_data, + GDestroyNotify notify) { - base->ref_count = 1; - base->func = ssl_function; - base->func_data = user_data; - base->data_notify = notify; - base->fingerprint[0] = '\0'; - - if (expected_fingerprint) { - base->expected_fingerprint = g_memdup (expected_fingerprint, 16); - } else { - base->expected_fingerprint = NULL; - } + base->ref_count = 1; + base->func = ssl_function; + base->func_data = user_data; + base->data_notify = notify; + base->fingerprint[0] = '\0'; + + if (expected_fingerprint) { + base->expected_fingerprint = g_memdup (expected_fingerprint, 16); + } else { + base->expected_fingerprint = NULL; + } - if (!base->func) { - /* If user didn't provide an SSL func the default will be used - * this function will always tell the connection to continue. - */ - base->func = _lm_ssl_func_always_continue; - } + if (!base->func) { + /* If user didn't provide an SSL func the default will be used + * this function will always tell the connection to continue. + */ + base->func = _lm_ssl_func_always_continue; + } } void _lm_ssl_base_free_fields (LmSSLBase *base) { - g_free (base->expected_fingerprint); + g_free (base->expected_fingerprint); } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-ssl-base.h --- a/loudmouth/lm-ssl-base.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-ssl-base.h Wed Oct 08 13:11:02 2008 +0200 @@ -27,22 +27,22 @@ typedef struct _LmSSLBase LmSSLBase; struct _LmSSLBase { - LmSSLFunction func; - gpointer func_data; - GDestroyNotify data_notify; - gchar *expected_fingerprint; - char fingerprint[20]; - gboolean use_starttls; - gboolean require_starttls; + LmSSLFunction func; + gpointer func_data; + GDestroyNotify data_notify; + gchar *expected_fingerprint; + char fingerprint[20]; + gboolean use_starttls; + gboolean require_starttls; - gint ref_count; + gint ref_count; }; void _lm_ssl_base_init (LmSSLBase *base, - const gchar *expected_fingerprint, - LmSSLFunction ssl_function, - gpointer user_data, - GDestroyNotify notify); + const gchar *expected_fingerprint, + LmSSLFunction ssl_function, + gpointer user_data, + GDestroyNotify notify); void _lm_ssl_base_free_fields (LmSSLBase *base); diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-ssl-generic.c --- a/loudmouth/lm-ssl-generic.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-ssl-generic.c Wed Oct 08 13:11:02 2008 +0200 @@ -26,10 +26,10 @@ LmSSLResponse _lm_ssl_func_always_continue (LmSSL *ssl, - LmSSLStatus status, - gpointer user_data) + LmSSLStatus status, + gpointer user_data) { - return LM_SSL_RESPONSE_CONTINUE;; + return LM_SSL_RESPONSE_CONTINUE;; } /* Define the SSL functions as noops if we compile without support */ @@ -37,56 +37,56 @@ LmSSL * _lm_ssl_new (const gchar *expected_fingerprint, - LmSSLFunction ssl_function, - gpointer user_data, - GDestroyNotify notify) + LmSSLFunction ssl_function, + gpointer user_data, + GDestroyNotify notify) { - return NULL; + return NULL; } void _lm_ssl_initialize (LmSSL *ssl) { - /* NOOP */ + /* NOOP */ } gboolean _lm_ssl_begin (LmSSL *ssl, - gint fd, - const gchar *server, - GError **error) + gint fd, + const gchar *server, + GError **error) { - return TRUE; + return TRUE; } GIOStatus _lm_ssl_read (LmSSL *ssl, - gchar *buf, - gint len, - gsize *bytes_read) + gchar *buf, + gint len, + gsize *bytes_read) { - /* NOOP */ - *bytes_read = 0; + /* NOOP */ + *bytes_read = 0; - return G_IO_STATUS_EOF; + return G_IO_STATUS_EOF; } gboolean _lm_ssl_send (LmSSL *ssl, const gchar *str, gint len) { - /* NOOP */ - return TRUE; + /* NOOP */ + return TRUE; } void _lm_ssl_close (LmSSL *ssl) { - /* NOOP */ + /* NOOP */ } void _lm_ssl_free (LmSSL *ssl) { - /* NOOP */ + /* NOOP */ } #endif /* HAVE_SSL */ @@ -106,15 +106,15 @@ **/ LmSSL * lm_ssl_new (const gchar *expected_fingerprint, - LmSSLFunction ssl_function, - gpointer user_data, - GDestroyNotify notify) + LmSSLFunction ssl_function, + gpointer user_data, + GDestroyNotify notify) { - /* The implementation of this function will be different depending - * on which implementation is used - */ - return _lm_ssl_new (expected_fingerprint, - ssl_function, user_data, notify); + /* The implementation of this function will be different depending + * on which implementation is used + */ + return _lm_ssl_new (expected_fingerprint, + ssl_function, user_data, notify); } /** @@ -128,9 +128,9 @@ lm_ssl_is_supported (void) { #ifdef HAVE_SSL - return TRUE; + return TRUE; #else - return FALSE; + return FALSE; #endif } @@ -146,9 +146,9 @@ const gchar * lm_ssl_get_fingerprint (LmSSL *ssl) { - g_return_val_if_fail (ssl != NULL, NULL); - - return LM_SSL_BASE(ssl)->fingerprint; + g_return_val_if_fail (ssl != NULL, NULL); + + return LM_SSL_BASE(ssl)->fingerprint; } /** @@ -162,11 +162,11 @@ LmSSL * lm_ssl_ref (LmSSL *ssl) { - g_return_val_if_fail (ssl != NULL, NULL); + g_return_val_if_fail (ssl != NULL, NULL); - LM_SSL_BASE(ssl)->ref_count++; + LM_SSL_BASE(ssl)->ref_count++; - return ssl; + return ssl; } /** @@ -177,14 +177,14 @@ **/ void lm_ssl_use_starttls (LmSSL *ssl, - gboolean use_starttls, - gboolean require_starttls) + gboolean use_starttls, + gboolean require_starttls) { - LmSSLBase *base; + LmSSLBase *base; - base = LM_SSL_BASE (ssl); - base->use_starttls = use_starttls; - base->require_starttls = require_starttls; + base = LM_SSL_BASE (ssl); + base->use_starttls = use_starttls; + base->require_starttls = require_starttls; } /** @@ -195,10 +195,10 @@ gboolean lm_ssl_get_use_starttls (LmSSL *ssl) { - LmSSLBase *base; + LmSSLBase *base; - base = LM_SSL_BASE (ssl); - return base->use_starttls; + base = LM_SSL_BASE (ssl); + return base->use_starttls; } /** @@ -209,10 +209,10 @@ gboolean lm_ssl_get_require_starttls (LmSSL *ssl) { - LmSSLBase *base; + LmSSLBase *base; - base = LM_SSL_BASE (ssl); - return base->require_starttls; + base = LM_SSL_BASE (ssl); + return base->require_starttls; } /** @@ -225,21 +225,21 @@ void lm_ssl_unref (LmSSL *ssl) { - LmSSLBase *base; - - g_return_if_fail (ssl != NULL); + LmSSLBase *base; + + g_return_if_fail (ssl != NULL); - base = LM_SSL_BASE (ssl); + base = LM_SSL_BASE (ssl); - base->ref_count --; + base->ref_count --; - if (base->ref_count == 0) { - if (base->data_notify) { - (* base->data_notify) (base->func_data); - } + if (base->ref_count == 0) { + if (base->data_notify) { + (* base->data_notify) (base->func_data); + } - _lm_ssl_free (ssl); - } + _lm_ssl_free (ssl); + } } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-ssl-gnutls.c --- a/loudmouth/lm-ssl-gnutls.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-ssl-gnutls.c Wed Oct 08 13:11:02 2008 +0200 @@ -35,278 +35,278 @@ #define CA_PEM_FILE "/etc/ssl/certs/ca-certificates.crt" struct _LmSSL { - LmSSLBase base; + LmSSLBase base; - gnutls_session gnutls_session; - gnutls_certificate_credentials gnutls_xcred; - gboolean started; + gnutls_session gnutls_session; + gnutls_certificate_credentials gnutls_xcred; + gboolean started; }; static gboolean ssl_verify_certificate (LmSSL *ssl, - const gchar *server); + const gchar *server); static gboolean ssl_verify_certificate (LmSSL *ssl, const gchar *server) { - LmSSLBase *base; - unsigned int status; - int rc; + LmSSLBase *base; + unsigned int status; + int rc; - base = LM_SSL_BASE (ssl); + base = LM_SSL_BASE (ssl); - /* This verification function uses the trusted CAs in the credentials - * structure. So you must have installed one or more CA certificates. - */ - rc = gnutls_certificate_verify_peers2 (ssl->gnutls_session, &status); + /* This verification function uses the trusted CAs in the credentials + * structure. So you must have installed one or more CA certificates. + */ + rc = gnutls_certificate_verify_peers2 (ssl->gnutls_session, &status); - if (rc == GNUTLS_E_NO_CERTIFICATE_FOUND) { - if (base->func (ssl, - LM_SSL_STATUS_NO_CERT_FOUND, - base->func_data) != LM_SSL_RESPONSE_CONTINUE) { - return FALSE; - } - } + if (rc == GNUTLS_E_NO_CERTIFICATE_FOUND) { + if (base->func (ssl, + LM_SSL_STATUS_NO_CERT_FOUND, + base->func_data) != LM_SSL_RESPONSE_CONTINUE) { + return FALSE; + } + } - if (rc != 0) { - if (base->func (ssl, - LM_SSL_STATUS_GENERIC_ERROR, - base->func_data) != LM_SSL_RESPONSE_CONTINUE) { - return FALSE; - } - } + if (rc != 0) { + if (base->func (ssl, + LM_SSL_STATUS_GENERIC_ERROR, + base->func_data) != LM_SSL_RESPONSE_CONTINUE) { + return FALSE; + } + } - if (rc == GNUTLS_E_NO_CERTIFICATE_FOUND) { - if (base->func (ssl, - LM_SSL_STATUS_NO_CERT_FOUND, - base->func_data) != LM_SSL_RESPONSE_CONTINUE) { - return FALSE; - } - } - - if (status & GNUTLS_CERT_INVALID - || status & GNUTLS_CERT_REVOKED) { - if (base->func (ssl, LM_SSL_STATUS_UNTRUSTED_CERT, - base->func_data) != LM_SSL_RESPONSE_CONTINUE) { - return FALSE; - } - } - - if (gnutls_certificate_expiration_time_peers (ssl->gnutls_session) < time (0)) { - if (base->func (ssl, LM_SSL_STATUS_CERT_EXPIRED, - base->func_data) != LM_SSL_RESPONSE_CONTINUE) { - return FALSE; - } - } - - if (gnutls_certificate_activation_time_peers (ssl->gnutls_session) > time (0)) { - if (base->func (ssl, LM_SSL_STATUS_CERT_NOT_ACTIVATED, - base->func_data) != LM_SSL_RESPONSE_CONTINUE) { - return FALSE; - } - } - - if (gnutls_certificate_type_get (ssl->gnutls_session) == GNUTLS_CRT_X509) { - const gnutls_datum* cert_list; - guint cert_list_size; - size_t digest_size; - gnutls_x509_crt cert; - - cert_list = gnutls_certificate_get_peers (ssl->gnutls_session, &cert_list_size); - if (cert_list == NULL) { - if (base->func (ssl, LM_SSL_STATUS_NO_CERT_FOUND, - base->func_data) != LM_SSL_RESPONSE_CONTINUE) { - return FALSE; - } - } + if (rc == GNUTLS_E_NO_CERTIFICATE_FOUND) { + if (base->func (ssl, + LM_SSL_STATUS_NO_CERT_FOUND, + base->func_data) != LM_SSL_RESPONSE_CONTINUE) { + return FALSE; + } + } + + if (status & GNUTLS_CERT_INVALID + || status & GNUTLS_CERT_REVOKED) { + if (base->func (ssl, LM_SSL_STATUS_UNTRUSTED_CERT, + base->func_data) != LM_SSL_RESPONSE_CONTINUE) { + return FALSE; + } + } + + if (gnutls_certificate_expiration_time_peers (ssl->gnutls_session) < time (0)) { + if (base->func (ssl, LM_SSL_STATUS_CERT_EXPIRED, + base->func_data) != LM_SSL_RESPONSE_CONTINUE) { + return FALSE; + } + } + + if (gnutls_certificate_activation_time_peers (ssl->gnutls_session) > time (0)) { + if (base->func (ssl, LM_SSL_STATUS_CERT_NOT_ACTIVATED, + base->func_data) != LM_SSL_RESPONSE_CONTINUE) { + return FALSE; + } + } + + if (gnutls_certificate_type_get (ssl->gnutls_session) == GNUTLS_CRT_X509) { + const gnutls_datum* cert_list; + guint cert_list_size; + size_t digest_size; + gnutls_x509_crt cert; + + cert_list = gnutls_certificate_get_peers (ssl->gnutls_session, &cert_list_size); + if (cert_list == NULL) { + if (base->func (ssl, LM_SSL_STATUS_NO_CERT_FOUND, + base->func_data) != LM_SSL_RESPONSE_CONTINUE) { + return FALSE; + } + } - gnutls_x509_crt_init (&cert); + gnutls_x509_crt_init (&cert); - if (gnutls_x509_crt_import (cert, &cert_list[0], - GNUTLS_X509_FMT_DER) != 0) { - if (base->func (ssl, LM_SSL_STATUS_NO_CERT_FOUND, - base->func_data) != LM_SSL_RESPONSE_CONTINUE) { - return FALSE; - } - } + if (gnutls_x509_crt_import (cert, &cert_list[0], + GNUTLS_X509_FMT_DER) != 0) { + if (base->func (ssl, LM_SSL_STATUS_NO_CERT_FOUND, + base->func_data) != LM_SSL_RESPONSE_CONTINUE) { + return FALSE; + } + } - if (!gnutls_x509_crt_check_hostname (cert, server)) { - if (base->func (ssl, LM_SSL_STATUS_CERT_HOSTNAME_MISMATCH, - base->func_data) != LM_SSL_RESPONSE_CONTINUE) { - return FALSE; - } - } + if (!gnutls_x509_crt_check_hostname (cert, server)) { + if (base->func (ssl, LM_SSL_STATUS_CERT_HOSTNAME_MISMATCH, + base->func_data) != LM_SSL_RESPONSE_CONTINUE) { + return FALSE; + } + } - gnutls_x509_crt_deinit (cert); + gnutls_x509_crt_deinit (cert); - digest_size = sizeof (base->fingerprint); + digest_size = sizeof (base->fingerprint); - if (gnutls_fingerprint (GNUTLS_DIG_MD5, &cert_list[0], - base->fingerprint, - &digest_size) >= 0) { - if (base->expected_fingerprint && - memcmp (base->expected_fingerprint, - base->fingerprint, - digest_size) && - base->func (ssl, - LM_SSL_STATUS_CERT_FINGERPRINT_MISMATCH, - base->func_data) != LM_SSL_RESPONSE_CONTINUE) { - return FALSE; - } - } - else if (base->func (ssl, LM_SSL_STATUS_GENERIC_ERROR, - base->func_data) != LM_SSL_RESPONSE_CONTINUE) { - return FALSE; - } - } + if (gnutls_fingerprint (GNUTLS_DIG_MD5, &cert_list[0], + base->fingerprint, + &digest_size) >= 0) { + if (base->expected_fingerprint && + memcmp (base->expected_fingerprint, + base->fingerprint, + digest_size) && + base->func (ssl, + LM_SSL_STATUS_CERT_FINGERPRINT_MISMATCH, + base->func_data) != LM_SSL_RESPONSE_CONTINUE) { + return FALSE; + } + } + else if (base->func (ssl, LM_SSL_STATUS_GENERIC_ERROR, + base->func_data) != LM_SSL_RESPONSE_CONTINUE) { + return FALSE; + } + } - return TRUE; + return TRUE; } /* From lm-ssl-protected.h */ LmSSL * _lm_ssl_new (const gchar *expected_fingerprint, - LmSSLFunction ssl_function, - gpointer user_data, - GDestroyNotify notify) + LmSSLFunction ssl_function, + gpointer user_data, + GDestroyNotify notify) { - LmSSL *ssl; + LmSSL *ssl; - ssl = g_new0 (LmSSL, 1); + ssl = g_new0 (LmSSL, 1); - _lm_ssl_base_init ((LmSSLBase *) ssl, - expected_fingerprint, - ssl_function, user_data, notify); + _lm_ssl_base_init ((LmSSLBase *) ssl, + expected_fingerprint, + ssl_function, user_data, notify); - return ssl; + return ssl; } void _lm_ssl_initialize (LmSSL *ssl) { - gnutls_global_init (); - gnutls_certificate_allocate_credentials (&ssl->gnutls_xcred); - gnutls_certificate_set_x509_trust_file(ssl->gnutls_xcred, - CA_PEM_FILE, - GNUTLS_X509_FMT_PEM); + gnutls_global_init (); + gnutls_certificate_allocate_credentials (&ssl->gnutls_xcred); + gnutls_certificate_set_x509_trust_file(ssl->gnutls_xcred, + CA_PEM_FILE, + GNUTLS_X509_FMT_PEM); } gboolean _lm_ssl_begin (LmSSL *ssl, gint fd, const gchar *server, GError **error) { - int ret; - gboolean auth_ok = TRUE; - const int cert_type_priority[] = - { GNUTLS_CRT_X509, GNUTLS_CRT_OPENPGP, 0 }; - const int compression_priority[] = - { GNUTLS_COMP_DEFLATE, GNUTLS_COMP_NULL, 0 }; + int ret; + gboolean auth_ok = TRUE; + const int cert_type_priority[] = + { GNUTLS_CRT_X509, GNUTLS_CRT_OPENPGP, 0 }; + const int compression_priority[] = + { GNUTLS_COMP_DEFLATE, GNUTLS_COMP_NULL, 0 }; - gnutls_init (&ssl->gnutls_session, GNUTLS_CLIENT); - gnutls_set_default_priority (ssl->gnutls_session); - gnutls_certificate_type_set_priority (ssl->gnutls_session, - cert_type_priority); - gnutls_compression_set_priority (ssl->gnutls_session, - compression_priority); - gnutls_credentials_set (ssl->gnutls_session, - GNUTLS_CRD_CERTIFICATE, - ssl->gnutls_xcred); + gnutls_init (&ssl->gnutls_session, GNUTLS_CLIENT); + gnutls_set_default_priority (ssl->gnutls_session); + gnutls_certificate_type_set_priority (ssl->gnutls_session, + cert_type_priority); + gnutls_compression_set_priority (ssl->gnutls_session, + compression_priority); + gnutls_credentials_set (ssl->gnutls_session, + GNUTLS_CRD_CERTIFICATE, + ssl->gnutls_xcred); - gnutls_transport_set_ptr (ssl->gnutls_session, - (gnutls_transport_ptr_t)(glong) fd); + gnutls_transport_set_ptr (ssl->gnutls_session, + (gnutls_transport_ptr_t)(glong) fd); - ret = gnutls_handshake (ssl->gnutls_session); + ret = gnutls_handshake (ssl->gnutls_session); - if (ret >= 0) { - auth_ok = ssl_verify_certificate (ssl, server); - } + if (ret >= 0) { + auth_ok = ssl_verify_certificate (ssl, server); + } - if (ret < 0 || !auth_ok) { - char *errmsg; + if (ret < 0 || !auth_ok) { + char *errmsg; - if (!auth_ok) { - errmsg = "authentication error"; - } else { - errmsg = "handshake failed"; - } + if (!auth_ok) { + errmsg = "authentication error"; + } else { + errmsg = "handshake failed"; + } - g_set_error (error, - LM_ERROR, LM_ERROR_CONNECTION_OPEN, - "*** GNUTLS %s: %s", - errmsg, gnutls_strerror (ret)); + g_set_error (error, + LM_ERROR, LM_ERROR_CONNECTION_OPEN, + "*** GNUTLS %s: %s", + errmsg, gnutls_strerror (ret)); - return FALSE; - } + return FALSE; + } - lm_verbose ("GNUTLS negotiated compression: %s", - gnutls_compression_get_name (gnutls_compression_get - (ssl->gnutls_session))); + lm_verbose ("GNUTLS negotiated compression: %s", + gnutls_compression_get_name (gnutls_compression_get + (ssl->gnutls_session))); - ssl->started = TRUE; + ssl->started = TRUE; - return TRUE; + return TRUE; } GIOStatus _lm_ssl_read (LmSSL *ssl, gchar *buf, gint len, gsize *bytes_read) { - GIOStatus status; - gint b_read; + GIOStatus status; + gint b_read; - *bytes_read = 0; - b_read = gnutls_record_recv (ssl->gnutls_session, buf, len); + *bytes_read = 0; + b_read = gnutls_record_recv (ssl->gnutls_session, buf, len); - if (b_read == GNUTLS_E_AGAIN) { - status = G_IO_STATUS_AGAIN; - } - else if (b_read == 0) { - status = G_IO_STATUS_EOF; - } - else if (b_read < 0) { - status = G_IO_STATUS_ERROR; - } else { - *bytes_read = (guint) b_read; - status = G_IO_STATUS_NORMAL; - } + if (b_read == GNUTLS_E_AGAIN) { + status = G_IO_STATUS_AGAIN; + } + else if (b_read == 0) { + status = G_IO_STATUS_EOF; + } + else if (b_read < 0) { + status = G_IO_STATUS_ERROR; + } else { + *bytes_read = (guint) b_read; + status = G_IO_STATUS_NORMAL; + } - return status; + return status; } gint _lm_ssl_send (LmSSL *ssl, const gchar *str, gint len) { - gint bytes_written; + gint bytes_written; - bytes_written = gnutls_record_send (ssl->gnutls_session, str, len); + bytes_written = gnutls_record_send (ssl->gnutls_session, str, len); - while (bytes_written < 0) { - if (bytes_written != GNUTLS_E_INTERRUPTED && - bytes_written != GNUTLS_E_AGAIN) { - return -1; - } - - bytes_written = gnutls_record_send (ssl->gnutls_session, - str, len); - } + while (bytes_written < 0) { + if (bytes_written != GNUTLS_E_INTERRUPTED && + bytes_written != GNUTLS_E_AGAIN) { + return -1; + } + + bytes_written = gnutls_record_send (ssl->gnutls_session, + str, len); + } - return bytes_written; + return bytes_written; } void _lm_ssl_close (LmSSL *ssl) { - if (!ssl->started) - return; + if (!ssl->started) + return; - gnutls_deinit (ssl->gnutls_session); - gnutls_certificate_free_credentials (ssl->gnutls_xcred); - gnutls_global_deinit (); + gnutls_deinit (ssl->gnutls_session); + gnutls_certificate_free_credentials (ssl->gnutls_xcred); + gnutls_global_deinit (); } void _lm_ssl_free (LmSSL *ssl) { - _lm_ssl_base_free_fields (LM_SSL_BASE (ssl)); - g_free (ssl); + _lm_ssl_base_free_fields (LM_SSL_BASE (ssl)); + g_free (ssl); } #endif /* HAVE_GNUTLS */ diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-ssl-internals.h --- a/loudmouth/lm-ssl-internals.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-ssl-internals.h Wed Oct 08 13:11:02 2008 +0200 @@ -24,45 +24,45 @@ #include LmSSLResponse _lm_ssl_func_always_continue (LmSSL *ssl, - LmSSLStatus status, - gpointer user_data); + LmSSLStatus status, + gpointer user_data); LmSSL * _lm_ssl_new (const gchar *expected_fingerprint, - LmSSLFunction ssl_function, - gpointer user_data, - GDestroyNotify notify); + LmSSLFunction ssl_function, + gpointer user_data, + GDestroyNotify notify); void _lm_ssl_initialize (LmSSL *ssl); gboolean _lm_ssl_begin (LmSSL *ssl, - gint fd, - const gchar *server, - GError **error); + gint fd, + const gchar *server, + GError **error); GIOStatus _lm_ssl_read (LmSSL *ssl, - gchar *buf, - gint len, - gsize *bytes_read); + gchar *buf, + gint len, + gsize *bytes_read); gint _lm_ssl_send (LmSSL *ssl, - const gchar *str, - gint len); + const gchar *str, + gint len); void _lm_ssl_close (LmSSL *ssl); void _lm_ssl_free (LmSSL *ssl); LmSSL * _lm_ssl_new (const gchar *expected_fingerprint, - LmSSLFunction ssl_function, - gpointer user_data, - GDestroyNotify notify); + LmSSLFunction ssl_function, + gpointer user_data, + GDestroyNotify notify); void _lm_ssl_initialize (LmSSL *ssl); gboolean _lm_ssl_begin (LmSSL *ssl, - gint fd, - const gchar *server, - GError **error); + gint fd, + const gchar *server, + GError **error); GIOStatus _lm_ssl_read (LmSSL *ssl, - gchar *buf, - gint len, - gsize *bytes_read); + gchar *buf, + gint len, + gsize *bytes_read); gint _lm_ssl_send (LmSSL *ssl, - const gchar *str, - gint len); + const gchar *str, + gint len); void _lm_ssl_close (LmSSL *ssl); void _lm_ssl_free (LmSSL *ssl); diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-ssl-openssl.c --- a/loudmouth/lm-ssl-openssl.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-ssl-openssl.c Wed Oct 08 13:11:02 2008 +0200 @@ -36,15 +36,15 @@ #include #include -#define LM_SSL_CN_MAX 63 +#define LM_SSL_CN_MAX 63 struct _LmSSL { - LmSSLBase base; + LmSSLBase base; - SSL_METHOD *ssl_method; - SSL_CTX *ssl_ctx; - SSL *ssl; - /*BIO *bio;*/ + SSL_METHOD *ssl_method; + SSL_CTX *ssl_ctx; + SSL *ssl; + /*BIO *bio;*/ }; int ssl_verify_cb (int preverify_ok, X509_STORE_CTX *x509_ctx); @@ -57,377 +57,377 @@ static void ssl_print_state (LmSSL *ssl, const char *func, int val) { - unsigned long errid; - const char *errmsg; + unsigned long errid; + const char *errmsg; - switch (SSL_get_error(ssl->ssl, val)) { - case SSL_ERROR_NONE: - g_warning ("%s(): %i / SSL_ERROR_NONE", - func, val); - break; - case SSL_ERROR_ZERO_RETURN: - g_warning ("%s(): %i / SSL_ERROR_ZERO_RETURN", - func, val); - break; - case SSL_ERROR_WANT_READ: - g_warning ("%s(): %i / SSL_ERROR_WANT_READ", - func, val); - break; - case SSL_ERROR_WANT_WRITE: - g_warning ("%s(): %i / SSL_ERROR_WANT_WRITE", - func, val); - break; - case SSL_ERROR_WANT_X509_LOOKUP: - g_warning ("%s(): %i / SSL_ERROR_WANT_X509_LOOKUP", - func, val); - break; - case SSL_ERROR_SYSCALL: - g_warning ("%s(): %i / SSL_ERROR_SYSCALL", - func, val); - break; - case SSL_ERROR_SSL: - g_warning ("%s(): %i / SSL_ERROR_SSL", - func, val); - break; - } - do { - errid = ERR_get_error(); - if (errid) { - errmsg = ERR_error_string(errid, NULL); - g_warning ("\t%s", errmsg); - } - } while (errid != 0); + switch (SSL_get_error(ssl->ssl, val)) { + case SSL_ERROR_NONE: + g_warning ("%s(): %i / SSL_ERROR_NONE", + func, val); + break; + case SSL_ERROR_ZERO_RETURN: + g_warning ("%s(): %i / SSL_ERROR_ZERO_RETURN", + func, val); + break; + case SSL_ERROR_WANT_READ: + g_warning ("%s(): %i / SSL_ERROR_WANT_READ", + func, val); + break; + case SSL_ERROR_WANT_WRITE: + g_warning ("%s(): %i / SSL_ERROR_WANT_WRITE", + func, val); + break; + case SSL_ERROR_WANT_X509_LOOKUP: + g_warning ("%s(): %i / SSL_ERROR_WANT_X509_LOOKUP", + func, val); + break; + case SSL_ERROR_SYSCALL: + g_warning ("%s(): %i / SSL_ERROR_SYSCALL", + func, val); + break; + case SSL_ERROR_SSL: + g_warning ("%s(): %i / SSL_ERROR_SSL", + func, val); + break; + } + do { + errid = ERR_get_error(); + if (errid) { + errmsg = ERR_error_string(errid, NULL); + g_warning ("\t%s", errmsg); + } + } while (errid != 0); } /*static const char * -ssl_get_x509_err (long verify_res) -{ - sprintf(_ssl_error_code, "%ld", verify_res); - return _ssl_error_code; -}*/ + ssl_get_x509_err (long verify_res) + { + sprintf(_ssl_error_code, "%ld", verify_res); + return _ssl_error_code; + }*/ - + int ssl_verify_cb (int preverify_ok, X509_STORE_CTX *x509_ctx) { - /* As this callback doesn't get auxiliary pointer parameter we - * cannot really use this. However, we can retrieve results later. */ - return 1; + /* As this callback doesn't get auxiliary pointer parameter we + * cannot really use this. However, we can retrieve results later. */ + return 1; } static gboolean ssl_verify_certificate (LmSSL *ssl, const gchar *server) { - gboolean retval = TRUE; - LmSSLBase *base; - long verify_res; - unsigned int digest_len; - X509 *srv_crt; - gchar *cn; - X509_NAME *crt_subj; + gboolean retval = TRUE; + LmSSLBase *base; + long verify_res; + unsigned int digest_len; + X509 *srv_crt; + gchar *cn; + X509_NAME *crt_subj; - base = LM_SSL_BASE(ssl); + base = LM_SSL_BASE(ssl); - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SSL, - "%s: Cipher: %s/%s/%i\n", - __FILE__, - SSL_get_cipher_version(ssl->ssl), - SSL_get_cipher_name(ssl->ssl), - SSL_get_cipher_bits(ssl->ssl, NULL)); + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SSL, + "%s: Cipher: %s/%s/%i\n", + __FILE__, + SSL_get_cipher_version(ssl->ssl), + SSL_get_cipher_name(ssl->ssl), + SSL_get_cipher_bits(ssl->ssl, NULL)); - verify_res = SSL_get_verify_result(ssl->ssl); - srv_crt = SSL_get_peer_certificate(ssl->ssl); - if (base->expected_fingerprint != NULL) { - X509_digest(srv_crt, EVP_md5(), (guchar *) base->fingerprint, - &digest_len); - if (memcmp(base->expected_fingerprint, base->fingerprint, - digest_len) != 0) { - if (base->func(ssl, - LM_SSL_STATUS_CERT_FINGERPRINT_MISMATCH, - base->func_data) != LM_SSL_RESPONSE_CONTINUE) { - return FALSE; - } - } - } - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SSL, - "%s: SSL_get_verify_result() = %ld\n", - __FILE__, - verify_res); - switch (verify_res) { - case X509_V_OK: - break; - case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT: - /* special case for self signed certificates? */ - case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT: - case X509_V_ERR_UNABLE_TO_GET_CRL: - case X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE: - if (base->func(ssl, - LM_SSL_STATUS_NO_CERT_FOUND, - base->func_data) != LM_SSL_RESPONSE_CONTINUE) { - retval = FALSE; - } - break; - case X509_V_ERR_INVALID_CA: - case X509_V_ERR_CERT_UNTRUSTED: - case X509_V_ERR_CERT_REVOKED: - if (base->func(ssl, - LM_SSL_STATUS_UNTRUSTED_CERT, - base->func_data) != LM_SSL_RESPONSE_CONTINUE) { - retval = FALSE; - } - break; - case X509_V_ERR_CERT_NOT_YET_VALID: - case X509_V_ERR_CRL_NOT_YET_VALID: - if (base->func(ssl, - LM_SSL_STATUS_CERT_NOT_ACTIVATED, - base->func_data) != LM_SSL_RESPONSE_CONTINUE) { - retval = FALSE; - } - break; - case X509_V_ERR_CERT_HAS_EXPIRED: - case X509_V_ERR_CRL_HAS_EXPIRED: - if (base->func(ssl, - LM_SSL_STATUS_CERT_EXPIRED, - base->func_data) != LM_SSL_RESPONSE_CONTINUE) { - retval = FALSE; - } - break; - default: - if (base->func(ssl, LM_SSL_STATUS_GENERIC_ERROR, - base->func_data) != LM_SSL_RESPONSE_CONTINUE) { - retval = FALSE; - } - } - /*if (retval == FALSE) { - g_set_error (error, LM_ERROR, LM_ERROR_CONNECTION_OPEN, - ssl_get_x509_err(verify_res), NULL); - }*/ - crt_subj = X509_get_subject_name(srv_crt); - cn = (gchar *) g_malloc0(LM_SSL_CN_MAX + 1); - - if (X509_NAME_get_text_by_NID(crt_subj, NID_commonName, cn, LM_SSL_CN_MAX) > 0) { - gchar *domain = cn; + verify_res = SSL_get_verify_result(ssl->ssl); + srv_crt = SSL_get_peer_certificate(ssl->ssl); + if (base->expected_fingerprint != NULL) { + X509_digest(srv_crt, EVP_md5(), (guchar *) base->fingerprint, + &digest_len); + if (memcmp(base->expected_fingerprint, base->fingerprint, + digest_len) != 0) { + if (base->func(ssl, + LM_SSL_STATUS_CERT_FINGERPRINT_MISMATCH, + base->func_data) != LM_SSL_RESPONSE_CONTINUE) { + return FALSE; + } + } + } + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SSL, + "%s: SSL_get_verify_result() = %ld\n", + __FILE__, + verify_res); + switch (verify_res) { + case X509_V_OK: + break; + case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT: + /* special case for self signed certificates? */ + case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT: + case X509_V_ERR_UNABLE_TO_GET_CRL: + case X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE: + if (base->func(ssl, + LM_SSL_STATUS_NO_CERT_FOUND, + base->func_data) != LM_SSL_RESPONSE_CONTINUE) { + retval = FALSE; + } + break; + case X509_V_ERR_INVALID_CA: + case X509_V_ERR_CERT_UNTRUSTED: + case X509_V_ERR_CERT_REVOKED: + if (base->func(ssl, + LM_SSL_STATUS_UNTRUSTED_CERT, + base->func_data) != LM_SSL_RESPONSE_CONTINUE) { + retval = FALSE; + } + break; + case X509_V_ERR_CERT_NOT_YET_VALID: + case X509_V_ERR_CRL_NOT_YET_VALID: + if (base->func(ssl, + LM_SSL_STATUS_CERT_NOT_ACTIVATED, + base->func_data) != LM_SSL_RESPONSE_CONTINUE) { + retval = FALSE; + } + break; + case X509_V_ERR_CERT_HAS_EXPIRED: + case X509_V_ERR_CRL_HAS_EXPIRED: + if (base->func(ssl, + LM_SSL_STATUS_CERT_EXPIRED, + base->func_data) != LM_SSL_RESPONSE_CONTINUE) { + retval = FALSE; + } + break; + default: + if (base->func(ssl, LM_SSL_STATUS_GENERIC_ERROR, + base->func_data) != LM_SSL_RESPONSE_CONTINUE) { + retval = FALSE; + } + } + /*if (retval == FALSE) { + g_set_error (error, LM_ERROR, LM_ERROR_CONNECTION_OPEN, + ssl_get_x509_err(verify_res), NULL); + }*/ + crt_subj = X509_get_subject_name(srv_crt); + cn = (gchar *) g_malloc0(LM_SSL_CN_MAX + 1); + + if (X509_NAME_get_text_by_NID(crt_subj, NID_commonName, cn, LM_SSL_CN_MAX) > 0) { + gchar *domain = cn; - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SSL, - "%s: server = '%s', cn = '%s'\n", - __FILE__, server, cn); - - if ((cn[0] == '*') && (cn[1] == '.')) { - domain = strstr (cn, server); - } + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SSL, + "%s: server = '%s', cn = '%s'\n", + __FILE__, server, cn); + + if ((cn[0] == '*') && (cn[1] == '.')) { + domain = strstr (cn, server); + } - if ((domain == NULL) || (strncmp (server, domain, LM_SSL_CN_MAX) != 0)) { - if (base->func (ssl, - LM_SSL_STATUS_CERT_HOSTNAME_MISMATCH, - base->func_data) != LM_SSL_RESPONSE_CONTINUE) { - retval = FALSE; - } + if ((domain == NULL) || (strncmp (server, domain, LM_SSL_CN_MAX) != 0)) { + if (base->func (ssl, + LM_SSL_STATUS_CERT_HOSTNAME_MISMATCH, + base->func_data) != LM_SSL_RESPONSE_CONTINUE) { + retval = FALSE; + } + } + } else { + g_warning ("X509_NAME_get_text_by_NID() failed"); } - } else { - g_warning ("X509_NAME_get_text_by_NID() failed"); - } - g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SSL, - "%s:\n\tIssuer: %s\n\tSubject: %s\n\tFor: %s\n", - __FILE__, - X509_NAME_oneline(X509_get_issuer_name(srv_crt), NULL, 0), - X509_NAME_oneline(X509_get_subject_name(srv_crt), NULL, 0), - cn); + g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SSL, + "%s:\n\tIssuer: %s\n\tSubject: %s\n\tFor: %s\n", + __FILE__, + X509_NAME_oneline(X509_get_issuer_name(srv_crt), NULL, 0), + X509_NAME_oneline(X509_get_subject_name(srv_crt), NULL, 0), + cn); - g_free(cn); - - return retval; + g_free(cn); + + return retval; } static GIOStatus ssl_io_status_from_return (LmSSL *ssl, gint ret) { - gint error; - GIOStatus status; + gint error; + GIOStatus status; - if (ret > 0) return G_IO_STATUS_NORMAL; + if (ret > 0) return G_IO_STATUS_NORMAL; - error = SSL_get_error(ssl->ssl, ret); - switch (error) { - case SSL_ERROR_WANT_READ: - case SSL_ERROR_WANT_WRITE: - status = G_IO_STATUS_AGAIN; - break; - case SSL_ERROR_ZERO_RETURN: - status = G_IO_STATUS_EOF; - break; - default: - status = G_IO_STATUS_ERROR; - } + error = SSL_get_error(ssl->ssl, ret); + switch (error) { + case SSL_ERROR_WANT_READ: + case SSL_ERROR_WANT_WRITE: + status = G_IO_STATUS_AGAIN; + break; + case SSL_ERROR_ZERO_RETURN: + status = G_IO_STATUS_EOF; + break; + default: + status = G_IO_STATUS_ERROR; + } - return status; + return status; } /* From lm-ssl-protected.h */ LmSSL * _lm_ssl_new (const gchar *expected_fingerprint, - LmSSLFunction ssl_function, - gpointer user_data, - GDestroyNotify notify) + LmSSLFunction ssl_function, + gpointer user_data, + GDestroyNotify notify) { - LmSSL *ssl; + LmSSL *ssl; - ssl = g_new0 (LmSSL, 1); + ssl = g_new0 (LmSSL, 1); - _lm_ssl_base_init ((LmSSLBase *) ssl, - expected_fingerprint, - ssl_function, user_data, notify); + _lm_ssl_base_init ((LmSSLBase *) ssl, + expected_fingerprint, + ssl_function, user_data, notify); - return ssl; + return ssl; } void _lm_ssl_initialize (LmSSL *ssl) { - static gboolean initialized = FALSE; - /*const char *cert_file = NULL;*/ + static gboolean initialized = FALSE; + /*const char *cert_file = NULL;*/ - if (!initialized) { - SSL_library_init(); - /* FIXME: Is this needed when we are not in debug? */ - SSL_load_error_strings(); - initialized = TRUE; - } + if (!initialized) { + SSL_library_init(); + /* FIXME: Is this needed when we are not in debug? */ + SSL_load_error_strings(); + initialized = TRUE; + } - ssl->ssl_method = TLSv1_client_method(); - if (ssl->ssl_method == NULL) { - g_warning ("TLSv1_client_method() == NULL"); - abort(); - } - ssl->ssl_ctx = SSL_CTX_new(ssl->ssl_method); - if (ssl->ssl_ctx == NULL) { - g_warning ("SSL_CTX_new() == NULL"); - abort(); - } - /*if (access("/etc/ssl/cert.pem", R_OK) == 0) - cert_file = "/etc/ssl/cert.pem"; - if (!SSL_CTX_load_verify_locations(ssl->ssl_ctx, - cert_file, "/etc/ssl/certs")) { - g_warning("SSL_CTX_load_verify_locations() failed"); - }*/ - SSL_CTX_set_default_verify_paths (ssl->ssl_ctx); - SSL_CTX_set_verify (ssl->ssl_ctx, SSL_VERIFY_PEER, ssl_verify_cb); + ssl->ssl_method = TLSv1_client_method(); + if (ssl->ssl_method == NULL) { + g_warning ("TLSv1_client_method() == NULL"); + abort(); + } + ssl->ssl_ctx = SSL_CTX_new(ssl->ssl_method); + if (ssl->ssl_ctx == NULL) { + g_warning ("SSL_CTX_new() == NULL"); + abort(); + } + /*if (access("/etc/ssl/cert.pem", R_OK) == 0) + cert_file = "/etc/ssl/cert.pem"; + if (!SSL_CTX_load_verify_locations(ssl->ssl_ctx, + cert_file, "/etc/ssl/certs")) { + g_warning("SSL_CTX_load_verify_locations() failed"); + }*/ + SSL_CTX_set_default_verify_paths (ssl->ssl_ctx); + SSL_CTX_set_verify (ssl->ssl_ctx, SSL_VERIFY_PEER, ssl_verify_cb); } gboolean _lm_ssl_begin (LmSSL *ssl, gint fd, const gchar *server, GError **error) { - gint ssl_ret; - GIOStatus status; + gint ssl_ret; + GIOStatus status; - if (!ssl->ssl_ctx) { - g_set_error (error, - LM_ERROR, LM_ERROR_CONNECTION_OPEN, - "No SSL Context for OpenSSL"); - return FALSE; - } + if (!ssl->ssl_ctx) { + g_set_error (error, + LM_ERROR, LM_ERROR_CONNECTION_OPEN, + "No SSL Context for OpenSSL"); + return FALSE; + } - ssl->ssl = SSL_new(ssl->ssl_ctx); - if (ssl->ssl == NULL) { - g_warning ("SSL_new() == NULL"); - g_set_error(error, LM_ERROR, LM_ERROR_CONNECTION_OPEN, - "SSL_new()"); - return FALSE; - } + ssl->ssl = SSL_new(ssl->ssl_ctx); + if (ssl->ssl == NULL) { + g_warning ("SSL_new() == NULL"); + g_set_error(error, LM_ERROR, LM_ERROR_CONNECTION_OPEN, + "SSL_new()"); + return FALSE; + } - if (!SSL_set_fd (ssl->ssl, fd)) { - g_warning ("SSL_set_fd() failed"); - g_set_error(error, LM_ERROR, LM_ERROR_CONNECTION_OPEN, - "SSL_set_fd()"); - return FALSE; - } - /*ssl->bio = BIO_new_socket (fd, BIO_NOCLOSE); - if (ssl->bio == NULL) { - g_warning("BIO_new_socket() failed"); - g_set_error(error, LM_ERROR, LM_ERROR_CONNECTION_OPEN, - "BIO_new_socket()"); - return FALSE; - } - SSL_set_bio(ssl->ssl, ssl->bio, ssl->bio);*/ + if (!SSL_set_fd (ssl->ssl, fd)) { + g_warning ("SSL_set_fd() failed"); + g_set_error(error, LM_ERROR, LM_ERROR_CONNECTION_OPEN, + "SSL_set_fd()"); + return FALSE; + } + /*ssl->bio = BIO_new_socket (fd, BIO_NOCLOSE); + if (ssl->bio == NULL) { + g_warning("BIO_new_socket() failed"); + g_set_error(error, LM_ERROR, LM_ERROR_CONNECTION_OPEN, + "BIO_new_socket()"); + return FALSE; + } + SSL_set_bio(ssl->ssl, ssl->bio, ssl->bio);*/ - do { - ssl_ret = SSL_connect(ssl->ssl); - if (ssl_ret <= 0) { - status = ssl_io_status_from_return(ssl, ssl_ret); - if (status != G_IO_STATUS_AGAIN) { - ssl_print_state(ssl, "SSL_connect", - ssl_ret); - g_set_error(error, LM_ERROR, - LM_ERROR_CONNECTION_OPEN, - "SSL_connect()"); - return FALSE; - } + do { + ssl_ret = SSL_connect(ssl->ssl); + if (ssl_ret <= 0) { + status = ssl_io_status_from_return(ssl, ssl_ret); + if (status != G_IO_STATUS_AGAIN) { + ssl_print_state(ssl, "SSL_connect", + ssl_ret); + g_set_error(error, LM_ERROR, + LM_ERROR_CONNECTION_OPEN, + "SSL_connect()"); + return FALSE; + } - } - } while (ssl_ret <= 0); + } + } while (ssl_ret <= 0); - if (!ssl_verify_certificate (ssl, server)) { - g_set_error (error, LM_ERROR, LM_ERROR_CONNECTION_OPEN, - "*** SSL certificate verification failed"); - return FALSE; - } - - return TRUE; + if (!ssl_verify_certificate (ssl, server)) { + g_set_error (error, LM_ERROR, LM_ERROR_CONNECTION_OPEN, + "*** SSL certificate verification failed"); + return FALSE; + } + + return TRUE; } GIOStatus _lm_ssl_read (LmSSL *ssl, gchar *buf, gint len, gsize *bytes_read) { - GIOStatus status; - gint ssl_ret; + GIOStatus status; + gint ssl_ret; - *bytes_read = 0; - ssl_ret = SSL_read(ssl->ssl, buf, len); - status = ssl_io_status_from_return(ssl, ssl_ret); - if (status == G_IO_STATUS_NORMAL) { - *bytes_read = ssl_ret; - } - - return status; + *bytes_read = 0; + ssl_ret = SSL_read(ssl->ssl, buf, len); + status = ssl_io_status_from_return(ssl, ssl_ret); + if (status == G_IO_STATUS_NORMAL) { + *bytes_read = ssl_ret; + } + + return status; } gint _lm_ssl_send (LmSSL *ssl, const gchar *str, gint len) { - GIOStatus status; - gint ssl_ret; + GIOStatus status; + gint ssl_ret; - do { - ssl_ret = SSL_write(ssl->ssl, str, len); - if (ssl_ret <= 0) { - status = ssl_io_status_from_return(ssl, ssl_ret); - if (status != G_IO_STATUS_AGAIN) - return -1; - } - } while (ssl_ret <= 0); + do { + ssl_ret = SSL_write(ssl->ssl, str, len); + if (ssl_ret <= 0) { + status = ssl_io_status_from_return(ssl, ssl_ret); + if (status != G_IO_STATUS_AGAIN) + return -1; + } + } while (ssl_ret <= 0); - return ssl_ret; + return ssl_ret; } void _lm_ssl_close (LmSSL *ssl) { - if (ssl->ssl != NULL) { - SSL_shutdown(ssl->ssl); - SSL_free(ssl->ssl); - ssl->ssl = NULL; - } + if (ssl->ssl != NULL) { + SSL_shutdown(ssl->ssl); + SSL_free(ssl->ssl); + ssl->ssl = NULL; + } } void _lm_ssl_free (LmSSL *ssl) { - SSL_CTX_free(ssl->ssl_ctx); - ssl->ssl_ctx = NULL; + SSL_CTX_free(ssl->ssl_ctx); + ssl->ssl_ctx = NULL; - _lm_ssl_base_free_fields (LM_SSL_BASE(ssl)); - g_free (ssl); + _lm_ssl_base_free_fields (LM_SSL_BASE(ssl)); + g_free (ssl); } #endif /* HAVE_GNUTLS */ diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-ssl.h --- a/loudmouth/lm-ssl.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-ssl.h Wed Oct 08 13:11:02 2008 +0200 @@ -63,9 +63,9 @@ * Provides information of the status of a certain certificate. */ typedef enum { - LM_CERT_INVALID, - LM_CERT_ISSUER_NOT_FOUND, - LM_CERT_REVOKED + LM_CERT_INVALID, + LM_CERT_ISSUER_NOT_FOUND, + LM_CERT_REVOKED } LmCertificateStatus; /** @@ -81,13 +81,13 @@ * Provides information about something gone wrong when trying to setup the SSL connection. */ typedef enum { - LM_SSL_STATUS_NO_CERT_FOUND, - LM_SSL_STATUS_UNTRUSTED_CERT, - LM_SSL_STATUS_CERT_EXPIRED, - LM_SSL_STATUS_CERT_NOT_ACTIVATED, - LM_SSL_STATUS_CERT_HOSTNAME_MISMATCH, - LM_SSL_STATUS_CERT_FINGERPRINT_MISMATCH, - LM_SSL_STATUS_GENERIC_ERROR + LM_SSL_STATUS_NO_CERT_FOUND, + LM_SSL_STATUS_UNTRUSTED_CERT, + LM_SSL_STATUS_CERT_EXPIRED, + LM_SSL_STATUS_CERT_NOT_ACTIVATED, + LM_SSL_STATUS_CERT_HOSTNAME_MISMATCH, + LM_SSL_STATUS_CERT_FINGERPRINT_MISMATCH, + LM_SSL_STATUS_GENERIC_ERROR } LmSSLStatus; /** @@ -98,8 +98,8 @@ * Used to inform #LmConnection if you want to stop due to an error reported or if you want to continue to connect. */ typedef enum { - LM_SSL_RESPONSE_CONTINUE, - LM_SSL_RESPONSE_STOP + LM_SSL_RESPONSE_CONTINUE, + LM_SSL_RESPONSE_STOP } LmSSLResponse; /** @@ -113,21 +113,21 @@ * Returns: User should return #LM_SSL_RESPONSE_CONTINUE if connection should proceed and otherwise #LM_SSL_RESPONSE_STOP. */ typedef LmSSLResponse (* LmSSLFunction) (LmSSL *ssl, - LmSSLStatus status, - gpointer user_data); + LmSSLStatus status, + gpointer user_data); LmSSL * lm_ssl_new (const gchar *expected_fingerprint, - LmSSLFunction ssl_function, - gpointer user_data, - GDestroyNotify notify); + LmSSLFunction ssl_function, + gpointer user_data, + GDestroyNotify notify); gboolean lm_ssl_is_supported (void); const gchar * lm_ssl_get_fingerprint (LmSSL *ssl); void lm_ssl_use_starttls (LmSSL *ssl, - gboolean use_starttls, - gboolean require); + gboolean use_starttls, + gboolean require); gboolean lm_ssl_get_use_starttls (LmSSL *ssl); diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-tcp-socket.c --- a/loudmouth/lm-tcp-socket.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-tcp-socket.c Wed Oct 08 13:11:02 2008 +0200 @@ -28,7 +28,7 @@ typedef struct LmTcpSocketPriv LmTcpSocketPriv; struct LmTcpSocketPriv { - gint my_prop; + gint my_prop; }; static void tcp_socket_iface_init (LmSocketIface *iface); @@ -56,13 +56,13 @@ tcp_socket_iface_init)) enum { - PROP_0, - PROP_MY_PROP + PROP_0, + PROP_MY_PROP }; enum { - SIGNAL_NAME, - LAST_SIGNAL + SIGNAL_NAME, + LAST_SIGNAL }; static guint signals[LAST_SIGNAL] = { 0 }; @@ -70,59 +70,59 @@ static void lm_tcp_socket_class_init (LmTcpSocketClass *class) { - GObjectClass *object_class = G_OBJECT_CLASS (class); + GObjectClass *object_class = G_OBJECT_CLASS (class); - object_class->finalize = tcp_socket_finalize; - object_class->get_property = tcp_socket_get_property; - object_class->set_property = tcp_socket_set_property; + object_class->finalize = tcp_socket_finalize; + object_class->get_property = tcp_socket_get_property; + object_class->set_property = tcp_socket_set_property; - g_object_class_install_property (object_class, - PROP_MY_PROP, - g_param_spec_string ("my-prop", - "My Prop", - "My Property", - NULL, - G_PARAM_READWRITE)); - - signals[SIGNAL_NAME] = - g_signal_new ("signal-name", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST, - 0, - NULL, NULL, - lm_marshal_VOID__INT, - G_TYPE_NONE, - 1, G_TYPE_INT); - - g_type_class_add_private (object_class, sizeof (LmTcpSocketPriv)); + g_object_class_install_property (object_class, + PROP_MY_PROP, + g_param_spec_string ("my-prop", + "My Prop", + "My Property", + NULL, + G_PARAM_READWRITE)); + + signals[SIGNAL_NAME] = + g_signal_new ("signal-name", + G_OBJECT_CLASS_TYPE (object_class), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + lm_marshal_VOID__INT, + G_TYPE_NONE, + 1, G_TYPE_INT); + + g_type_class_add_private (object_class, sizeof (LmTcpSocketPriv)); } static void tcp_socket_iface_init (LmSocketIface *iface) { - iface->connect = tcp_socket_connect; - iface->write = tcp_socket_write; - iface->read = tcp_socket_read; - iface->disconnect = tcp_socket_disconnect; + iface->connect = tcp_socket_connect; + iface->write = tcp_socket_write; + iface->read = tcp_socket_read; + iface->disconnect = tcp_socket_disconnect; } static void lm_tcp_socket_init (LmTcpSocket *dummy) { - LmTcpSocketPriv *priv; + LmTcpSocketPriv *priv; - priv = GET_PRIV (dummy); + priv = GET_PRIV (dummy); } static void tcp_socket_finalize (GObject *object) { - LmTcpSocketPriv *priv; + LmTcpSocketPriv *priv; - priv = GET_PRIV (object); + priv = GET_PRIV (object); - (G_OBJECT_CLASS (lm_tcp_socket_parent_class)->finalize) (object); + (G_OBJECT_CLASS (lm_tcp_socket_parent_class)->finalize) (object); } static void @@ -131,18 +131,18 @@ GValue *value, GParamSpec *pspec) { - LmTcpSocketPriv *priv; + LmTcpSocketPriv *priv; - priv = GET_PRIV (object); + priv = GET_PRIV (object); - switch (param_id) { - case PROP_MY_PROP: - g_value_set_int (value, priv->my_prop); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); - break; - }; + switch (param_id) { + case PROP_MY_PROP: + g_value_set_int (value, priv->my_prop); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); + break; + }; } static void @@ -151,40 +151,40 @@ const GValue *value, GParamSpec *pspec) { - LmTcpSocketPriv *priv; + LmTcpSocketPriv *priv; - priv = GET_PRIV (object); + priv = GET_PRIV (object); - switch (param_id) { - case PROP_MY_PROP: - priv->my_prop = g_value_get_int (value); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); - break; - }; + switch (param_id) { + case PROP_MY_PROP: + priv->my_prop = g_value_get_int (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); + break; + }; } static void tcp_socket_connect (LmSocket *socket) { - /* Initiate the connection process */ - /* DNS lookup, connect thing, create IOchannel etc */ + /* Initiate the connection process */ + /* DNS lookup, connect thing, create IOchannel etc */ } static gboolean tcp_socket_write (LmSocket *socket, gchar *data, gsize len) { - return FALSE; + return FALSE; } static gboolean tcp_socket_read (LmSocket *socket, - gchar *buf, - gsize buf_len, - gsize *read_len) + gchar *buf, + gsize buf_len, + gsize *read_len) { - return FALSE; + return FALSE; } static void diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-tcp-socket.h --- a/loudmouth/lm-tcp-socket.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-tcp-socket.h Wed Oct 08 13:11:02 2008 +0200 @@ -38,11 +38,11 @@ typedef struct LmTcpSocketClass LmTcpSocketClass; struct LmTcpSocket { - GObject parent; + GObject parent; }; struct LmTcpSocketClass { - GObjectClass parent_class; + GObjectClass parent_class; }; GType lm_tcp_socket_get_type (void); diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-utils.c --- a/loudmouth/lm-utils.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-utils.c Wed Oct 08 13:11:02 2008 +0200 @@ -49,72 +49,72 @@ LmCallback * _lm_utils_new_callback (gpointer func, - gpointer user_data, - GDestroyNotify notify) + gpointer user_data, + GDestroyNotify notify) { - LmCallback *cb; - - cb = g_new0 (LmCallback, 1); - cb->func = func; - cb->user_data = user_data; - cb->notify = notify; + LmCallback *cb; + + cb = g_new0 (LmCallback, 1); + cb->func = func; + cb->user_data = user_data; + cb->notify = notify; - return cb; + return cb; } void _lm_utils_free_callback (LmCallback *cb) { - if (!cb) { - return; - } + if (!cb) { + return; + } - if (cb->notify) { - (* cb->notify) (cb->user_data); - } - g_free (cb); + if (cb->notify) { + (* cb->notify) (cb->user_data); + } + g_free (cb); } gchar * _lm_utils_generate_id (void) { - static guint last_id = 0; - GTimeVal tv; - glong val; + static guint last_id = 0; + GTimeVal tv; + glong val; - g_get_current_time (&tv); - val = (tv.tv_sec & tv.tv_usec) + last_id++; - - return g_strdup_printf ("%ld%ld", val, tv.tv_usec); + g_get_current_time (&tv); + val = (tv.tv_sec & tv.tv_usec) + last_id++; + + return g_strdup_printf ("%ld%ld", val, tv.tv_usec); } gchar* _lm_utils_hostname_to_punycode (const gchar *hostname) { #ifdef HAVE_IDN - char *s; - uint32_t *q; - int rc; - gchar *result; + char *s; + uint32_t *q; + int rc; + gchar *result; - q = stringprep_utf8_to_ucs4 (hostname, -1, NULL); - if (q == NULL) { - return g_strdup (hostname); - } + q = stringprep_utf8_to_ucs4 (hostname, -1, NULL); + if (q == NULL) { + return g_strdup (hostname); + } - rc = idna_to_ascii_4z (q, &s, IDNA_ALLOW_UNASSIGNED); - free(q); - if (rc != IDNA_SUCCESS) { - return g_strdup (hostname); - } + rc = idna_to_ascii_4z (q, &s, IDNA_ALLOW_UNASSIGNED); + free(q); + if (rc != IDNA_SUCCESS) { + return g_strdup (hostname); + } - /* insures result is allocated through glib */ - result = g_strdup(s); - free(s); + /* insures result is allocated through glib */ + result = g_strdup(s); + free(s); - return result; + return result; #else - return g_strdup(hostname); + return g_strdup(hostname); #endif } @@ -129,34 +129,34 @@ struct tm * lm_utils_get_localtime (const gchar *stamp) { - struct tm tm; - time_t t; - gint year, month; - - g_return_val_if_fail (stamp != NULL, NULL); + struct tm tm; + time_t t; + gint year, month; + + g_return_val_if_fail (stamp != NULL, NULL); - /* 20021209T23:51:30 */ + /* 20021209T23:51:30 */ - sscanf (stamp, "%4d%2d%2dT%2d:%2d:%2d", - &year, &month, &tm.tm_mday, &tm.tm_hour, - &tm.tm_min, &tm.tm_sec); + sscanf (stamp, "%4d%2d%2dT%2d:%2d:%2d", + &year, &month, &tm.tm_mday, &tm.tm_hour, + &tm.tm_min, &tm.tm_sec); - tm.tm_year = year - 1900; - tm.tm_mon = month - 1; - tm.tm_isdst = -1; + tm.tm_year = year - 1900; + tm.tm_mon = month - 1; + tm.tm_isdst = -1; - t = mktime (&tm); + t = mktime (&tm); #if defined(HAVE_TM_GMTOFF) - t += tm.tm_gmtoff; + t += tm.tm_gmtoff; #elif defined(HAVE_TIMEZONE) - t -= timezone; - if (tm.tm_isdst > 0) { - t += 3600; - } -#endif + t -= timezone; + if (tm.tm_isdst > 0) { + t += 3600; + } +#endif - return localtime (&t); + return localtime (&t); } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-xmpp-writer.c --- a/loudmouth/lm-xmpp-writer.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-xmpp-writer.c Wed Oct 08 13:11:02 2008 +0200 @@ -27,45 +27,45 @@ GType lm_xmpp_writer_get_type (void) { - static GType iface_type = 0; + static GType iface_type = 0; - if (!iface_type) { - static const GTypeInfo iface_info = { - sizeof (LmXmppWriterIface), - (GBaseInitFunc) xmpp_writer_base_init, - (GBaseFinalizeFunc) NULL, - }; + if (!iface_type) { + static const GTypeInfo iface_info = { + sizeof (LmXmppWriterIface), + (GBaseInitFunc) xmpp_writer_base_init, + (GBaseFinalizeFunc) NULL, + }; - iface_type = g_type_register_static (G_TYPE_INTERFACE, - "LmXmppWriterIface", - &iface_info, - 0); + iface_type = g_type_register_static (G_TYPE_INTERFACE, + "LmXmppWriterIface", + &iface_info, + 0); - g_type_interface_add_prerequisite (iface_type, G_TYPE_OBJECT); - } + g_type_interface_add_prerequisite (iface_type, G_TYPE_OBJECT); + } - return iface_type; + return iface_type; } static void xmpp_writer_base_init (LmXmppWriterIface *iface) { - static gboolean initialized = FALSE; + static gboolean initialized = FALSE; - if (!initialized) { - /* create interface signals here. */ - initialized = TRUE; - } + if (!initialized) { + /* create interface signals here. */ + initialized = TRUE; + } } void lm_xmpp_writer_send_message (LmXmppWriter *writer, LmMessage *message) { - if (!LM_XMPP_WRITER_GET_IFACE(writer)->send_message) { - g_assert_not_reached (); - } + if (!LM_XMPP_WRITER_GET_IFACE(writer)->send_message) { + g_assert_not_reached (); + } - LM_XMPP_WRITER_GET_IFACE(writer)->send_message (writer, message); + LM_XMPP_WRITER_GET_IFACE(writer)->send_message (writer, message); } void @@ -73,20 +73,20 @@ const gchar *buf, gsize len) { - if (!LM_XMPP_WRITER_GET_IFACE(writer)->send_text) { - g_assert_not_reached (); - } + if (!LM_XMPP_WRITER_GET_IFACE(writer)->send_text) { + g_assert_not_reached (); + } - LM_XMPP_WRITER_GET_IFACE(writer)->send_text (writer, buf, len); + LM_XMPP_WRITER_GET_IFACE(writer)->send_text (writer, buf, len); } void lm_xmpp_writer_flush (LmXmppWriter *writer) { - if (!LM_XMPP_WRITER_GET_IFACE(writer)->flush) { - g_assert_not_reached (); - } + if (!LM_XMPP_WRITER_GET_IFACE(writer)->flush) { + g_assert_not_reached (); + } - LM_XMPP_WRITER_GET_IFACE(writer)->flush (writer); + LM_XMPP_WRITER_GET_IFACE(writer)->flush (writer); } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/lm-xmpp-writer.h --- a/loudmouth/lm-xmpp-writer.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/lm-xmpp-writer.h Wed Oct 08 13:11:02 2008 +0200 @@ -37,17 +37,17 @@ typedef struct _LmXmppWriterIface LmXmppWriterIface; struct _LmXmppWriterIface { - GTypeInterface parent; + GTypeInterface parent; - /* */ - void (*send_message) (LmXmppWriter *writer, - LmMessage *message); - void (*send_text) (LmXmppWriter *writer, - const gchar *buf, - gsize len); + /* */ + void (*send_message) (LmXmppWriter *writer, + LmMessage *message); + void (*send_text) (LmXmppWriter *writer, + const gchar *buf, + gsize len); - /* Needed? */ - void (*flush) (LmXmppWriter *writer); + /* Needed? */ + void (*flush) (LmXmppWriter *writer); }; GType lm_xmpp_writer_get_type (void); diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/md5.c --- a/loudmouth/md5.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/md5.c Wed Oct 08 13:11:02 2008 +0200 @@ -1,3 +1,4 @@ +/* -*- mode: c; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. All rights reserved. @@ -10,24 +11,24 @@ freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. + misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. L. Peter Deutsch ghost@aladdin.com - */ +*/ /* $Id: md5.c,v 1.6 2002/04/13 19:20:28 lpd Exp $ */ /* Independent implementation of MD5 (RFC 1321). This code implements the MD5 Algorithm defined in RFC 1321, whose text is available at - http://www.ietf.org/rfc/rfc1321.txt + http://www.ietf.org/rfc/rfc1321.txt The code is derived from the text of the RFC, including the test suite (section A.5) but excluding the rest of Appendix A. It does not include any code or documentation that is identified in the RFC as being @@ -38,23 +39,23 @@ that follows (in reverse chronological order): 2002-04-13 lpd Clarified derivation from RFC 1321; now handles byte order - either statically or dynamically; added missing #include - in library. + either statically or dynamically; added missing #include + in library. 2002-03-11 lpd Corrected argument list for main(), and added int return - type, in test program and T value program. + type, in test program and T value program. 2002-02-21 lpd Added missing #include in test program. 2000-07-03 lpd Patched to eliminate warnings about "constant is - unsigned in ANSI C, signed in traditional"; made test program - self-checking. + unsigned in ANSI C, signed in traditional"; made test program + self-checking. 1999-11-04 lpd Edited comments slightly for automatic TOC extraction. 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5). 1999-05-03 lpd Original version. - */ +*/ #include "md5.h" #include -#undef BYTE_ORDER /* 1 = big-endian, -1 = little-endian, 0 = unknown */ +#undef BYTE_ORDER /* 1 = big-endian, -1 = little-endian, 0 = unknown */ #ifdef ARCH_IS_BIG_ENDIAN # define BYTE_ORDER (ARCH_IS_BIG_ENDIAN ? 1 : -1) #else @@ -132,8 +133,8 @@ md5_process(md5_state_t *pms, const md5_byte_t *data /*[64]*/) { md5_word_t - a = pms->abcd[0], b = pms->abcd[1], - c = pms->abcd[2], d = pms->abcd[3]; + a = pms->abcd[0], b = pms->abcd[1], + c = pms->abcd[2], d = pms->abcd[3]; md5_word_t t; #if BYTE_ORDER > 0 /* Define storage only for big-endian CPUs. */ @@ -146,51 +147,51 @@ { #if BYTE_ORDER == 0 - /* - * Determine dynamically whether this is a big-endian or - * little-endian machine, since we can use a more efficient - * algorithm on the latter. - */ - static const int w = 1; + /* + * Determine dynamically whether this is a big-endian or + * little-endian machine, since we can use a more efficient + * algorithm on the latter. + */ + static const int w = 1; - if (*((const md5_byte_t *)&w)) /* dynamic little-endian */ + if (*((const md5_byte_t *)&w)) /* dynamic little-endian */ #endif -#if BYTE_ORDER <= 0 /* little-endian */ - { - /* - * On little-endian machines, we can process properly aligned - * data without copying it. - */ - if (!((data - (const md5_byte_t *)0) & 3)) { - /* data are properly aligned */ - X = (const md5_word_t *)data; - } else { - /* not aligned */ - memcpy(xbuf, data, 64); - X = xbuf; - } - } +#if BYTE_ORDER <= 0 /* little-endian */ + { + /* + * On little-endian machines, we can process properly aligned + * data without copying it. + */ + if (!((data - (const md5_byte_t *)0) & 3)) { + /* data are properly aligned */ + X = (const md5_word_t *)data; + } else { + /* not aligned */ + memcpy(xbuf, data, 64); + X = xbuf; + } + } #endif #if BYTE_ORDER == 0 - else /* dynamic big-endian */ + else /* dynamic big-endian */ #endif -#if BYTE_ORDER >= 0 /* big-endian */ - { - /* - * On big-endian machines, we must arrange the bytes in the - * right order. - */ - const md5_byte_t *xp = data; - int i; +#if BYTE_ORDER >= 0 /* big-endian */ + { + /* + * On big-endian machines, we must arrange the bytes in the + * right order. + */ + const md5_byte_t *xp = data; + int i; # if BYTE_ORDER == 0 - X = xbuf; /* (dynamic only) */ + X = xbuf; /* (dynamic only) */ # else -# define xbuf X /* (static only) */ +# define xbuf X /* (static only) */ # endif - for (i = 0; i < 16; ++i, xp += 4) - xbuf[i] = xp[0] + (xp[1] << 8) + (xp[2] << 16) + (xp[3] << 24); - } + for (i = 0; i < 16; ++i, xp += 4) + xbuf[i] = xp[0] + (xp[1] << 8) + (xp[2] << 16) + (xp[3] << 24); + } #endif } @@ -222,14 +223,14 @@ SET(b, c, d, a, 15, 22, T16); #undef SET - /* Round 2. */ - /* Let [abcd k s i] denote the operation - a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */ + /* Round 2. */ + /* Let [abcd k s i] denote the operation + a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */ #define G(x, y, z) (((x) & (z)) | ((y) & ~(z))) #define SET(a, b, c, d, k, s, Ti)\ t = a + G(b,c,d) + X[k] + Ti;\ a = ROTATE_LEFT(t, s) + b - /* Do the following 16 operations. */ + /* Do the following 16 operations. */ SET(a, b, c, d, 1, 5, T17); SET(d, a, b, c, 6, 9, T18); SET(c, d, a, b, 11, 14, T19); @@ -248,14 +249,14 @@ SET(b, c, d, a, 12, 20, T32); #undef SET - /* Round 3. */ - /* Let [abcd k s t] denote the operation - a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */ + /* Round 3. */ + /* Let [abcd k s t] denote the operation + a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */ #define H(x, y, z) ((x) ^ (y) ^ (z)) #define SET(a, b, c, d, k, s, Ti)\ t = a + H(b,c,d) + X[k] + Ti;\ a = ROTATE_LEFT(t, s) + b - /* Do the following 16 operations. */ + /* Do the following 16 operations. */ SET(a, b, c, d, 5, 4, T33); SET(d, a, b, c, 8, 11, T34); SET(c, d, a, b, 11, 16, T35); @@ -274,14 +275,14 @@ SET(b, c, d, a, 2, 23, T48); #undef SET - /* Round 4. */ - /* Let [abcd k s t] denote the operation - a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */ + /* Round 4. */ + /* Let [abcd k s t] denote the operation + a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */ #define I(x, y, z) ((y) ^ ((x) | ~(z))) #define SET(a, b, c, d, k, s, Ti)\ t = a + I(b,c,d) + X[k] + Ti;\ a = ROTATE_LEFT(t, s) + b - /* Do the following 16 operations. */ + /* Do the following 16 operations. */ SET(a, b, c, d, 0, 6, T49); SET(d, a, b, c, 7, 10, T50); SET(c, d, a, b, 14, 15, T51); @@ -300,9 +301,9 @@ SET(b, c, d, a, 9, 21, T64); #undef SET - /* Then perform the following additions. (That is increment each - of the four registers by the value it had before this block - was started.) */ + /* Then perform the following additions. (That is increment each + of the four registers by the value it had before this block + was started.) */ pms->abcd[0] += a; pms->abcd[1] += b; pms->abcd[2] += c; @@ -328,54 +329,54 @@ md5_word_t nbits = (md5_word_t)(nbytes << 3); if (nbytes <= 0) - return; + return; /* Update the message length. */ pms->count[1] += nbytes >> 29; pms->count[0] += nbits; if (pms->count[0] < nbits) - pms->count[1]++; + pms->count[1]++; /* Process an initial partial block. */ if (offset) { - int copy = (offset + nbytes > 64 ? 64 - offset : nbytes); + int copy = (offset + nbytes > 64 ? 64 - offset : nbytes); - memcpy(pms->buf + offset, p, copy); - if (offset + copy < 64) - return; - p += copy; - left -= copy; - md5_process(pms, pms->buf); + memcpy(pms->buf + offset, p, copy); + if (offset + copy < 64) + return; + p += copy; + left -= copy; + md5_process(pms, pms->buf); } /* Process full blocks. */ for (; left >= 64; p += 64, left -= 64) - md5_process(pms, p); + md5_process(pms, p); /* Process a final partial block. */ if (left) - memcpy(pms->buf, p, left); + memcpy(pms->buf, p, left); } void md5_finish(md5_state_t *pms, md5_byte_t digest[16]) { static const md5_byte_t pad[64] = { - 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; md5_byte_t data[8]; int i; /* Save the length before padding. */ for (i = 0; i < 8; ++i) - data[i] = (md5_byte_t)(pms->count[i >> 2] >> ((i & 3) << 3)); + data[i] = (md5_byte_t)(pms->count[i >> 2] >> ((i & 3) << 3)); /* Pad to 56 bytes mod 64. */ md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1); /* Append the length. */ md5_append(pms, data, 8); for (i = 0; i < 16; ++i) - digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3)); + digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3)); } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/md5.h --- a/loudmouth/md5.h Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/md5.h Wed Oct 08 13:11:02 2008 +0200 @@ -1,3 +1,4 @@ +/* -*- mode: c; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* Copyright (C) 1999, 2002 Aladdin Enterprises. All rights reserved. @@ -10,24 +11,24 @@ freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. + misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. L. Peter Deutsch ghost@aladdin.com - */ +*/ /* $Id: md5.h,v 1.4 2002/04/13 19:20:28 lpd Exp $ */ /* Independent implementation of MD5 (RFC 1321). This code implements the MD5 Algorithm defined in RFC 1321, whose text is available at - http://www.ietf.org/rfc/rfc1321.txt + http://www.ietf.org/rfc/rfc1321.txt The code is derived from the text of the RFC, including the test suite (section A.5) but excluding the rest of Appendix A. It does not include any code or documentation that is identified in the RFC as being @@ -38,14 +39,14 @@ that follows (in reverse chronological order): 2002-04-13 lpd Removed support for non-ANSI compilers; removed - references to Ghostscript; clarified derivation from RFC 1321; - now handles byte order either statically or dynamically. + references to Ghostscript; clarified derivation from RFC 1321; + now handles byte order either statically or dynamically. 1999-11-04 lpd Edited comments slightly for automatic TOC extraction. 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5); - added conditionalization for C++ compilation from Martin - Purschke . + added conditionalization for C++ compilation from Martin + Purschke . 1999-05-03 lpd Original version. - */ +*/ #ifndef md5_INCLUDED # define md5_INCLUDED @@ -65,9 +66,9 @@ /* Define the state of the MD5 Algorithm. */ typedef struct md5_state_s { - md5_word_t count[2]; /* message length in bits, lsw first */ - md5_word_t abcd[4]; /* digest buffer */ - md5_byte_t buf[64]; /* accumulate block */ + md5_word_t count[2]; /* message length in bits, lsw first */ + md5_word_t abcd[4]; /* digest buffer */ + md5_byte_t buf[64]; /* accumulate block */ } md5_state_t; #ifdef __cplusplus @@ -76,13 +77,13 @@ #endif /* Initialize the algorithm. */ -void md5_init(md5_state_t *pms); + void md5_init(md5_state_t *pms); /* Append a string to the message. */ -void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes); + void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes); /* Finish the message and return the digest. */ -void md5_finish(md5_state_t *pms, md5_byte_t digest[16]); + void md5_finish(md5_state_t *pms, md5_byte_t digest[16]); #ifdef __cplusplus } /* end extern "C" */ diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/test-dns.c --- a/loudmouth/test-dns.c Wed Oct 08 12:44:10 2008 +0200 +++ b/loudmouth/test-dns.c Wed Oct 08 13:11:02 2008 +0200 @@ -1,3 +1,5 @@ +/* -*- mode: c; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ + #include #include "lm-blocking-resolver.h" @@ -8,56 +10,56 @@ LmResolverResult result, gpointer user_data) { - gchar *host; - struct addrinfo *addr; + gchar *host; + struct addrinfo *addr; - g_object_get (resolver, "host", &host, NULL); + g_object_get (resolver, "host", &host, NULL); - if (result != LM_RESOLVER_RESULT_OK) { - g_print ("Failed to lookup %s\n", host); - g_free (host); - return; - } + if (result != LM_RESOLVER_RESULT_OK) { + g_print ("Failed to lookup %s\n", host); + g_free (host); + return; + } - g_print ("In %s\n", G_STRFUNC); + g_print ("In %s\n", G_STRFUNC); - while ((addr = lm_resolver_results_get_next (resolver))) { - g_print ("Result!\n"); - } + while ((addr = lm_resolver_results_get_next (resolver))) { + g_print ("Result!\n"); + } - g_free (host); + g_free (host); - g_main_loop_quit (main_loop); + g_main_loop_quit (main_loop); } int main (int argc, char **argv) { #if 0 - LmResolver *resolver; + LmResolver *resolver; #endif - LmResolver *srv_resolver; + LmResolver *srv_resolver; - g_type_init (); + g_type_init (); #if 0 - resolver = lm_resolver_new_for_host ("kenny.imendio.com", - resolver_result_cb, - NULL); - lm_resolver_lookup (resolver); + resolver = lm_resolver_new_for_host ("kenny.imendio.com", + resolver_result_cb, + NULL); + lm_resolver_lookup (resolver); #endif - srv_resolver = lm_resolver_new_for_service ("jabber.org", - "xmpp-client", "tcp", - resolver_result_cb, - NULL); - lm_resolver_lookup (srv_resolver); + srv_resolver = lm_resolver_new_for_service ("jabber.org", + "xmpp-client", "tcp", + resolver_result_cb, + NULL); + lm_resolver_lookup (srv_resolver); - g_print ("Running main loop\n"); + g_print ("Running main loop\n"); - main_loop = g_main_loop_new (NULL, FALSE); - g_main_loop_run (main_loop); + main_loop = g_main_loop_new (NULL, FALSE); + g_main_loop_run (main_loop); - g_print ("Finished\n"); + g_print ("Finished\n"); - return 0; + return 0; } diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/test-jid.c diff -r 6fabea75bea7 -r cdd6a0c5b439 loudmouth/test-lm.c diff -r 6fabea75bea7 -r cdd6a0c5b439 tests/test-parser.c --- a/tests/test-parser.c Wed Oct 08 12:44:10 2008 +0200 +++ b/tests/test-parser.c Wed Oct 08 13:11:02 2008 +0200 @@ -26,99 +26,99 @@ static GSList * get_files (const gchar *prefix) { - GSList *list = NULL; - GError *error = NULL; - GDir *dir; - const gchar *name; - - dir = g_dir_open (PARSER_TEST_DIR, 0, &error); + GSList *list = NULL; + GError *error = NULL; + GDir *dir; + const gchar *name; + + dir = g_dir_open (PARSER_TEST_DIR, 0, &error); - if (!dir) { - g_error ("Failed to open test file directory '%s' due to: %s", - PARSER_TEST_DIR, error->message); - g_clear_error (&error); + if (!dir) { + g_error ("Failed to open test file directory '%s' due to: %s", + PARSER_TEST_DIR, error->message); + g_clear_error (&error); - return NULL; - } - + return NULL; + } + - while ((name = g_dir_read_name (dir))) { - /* Find *.xml */ + while ((name = g_dir_read_name (dir))) { + /* Find *.xml */ - if (g_str_has_prefix (name, prefix) && - g_str_has_suffix (name, ".xml")) { - gchar *file_path; + if (g_str_has_prefix (name, prefix) && + g_str_has_suffix (name, ".xml")) { + gchar *file_path; - file_path = g_strconcat (PARSER_TEST_DIR, "/", name, - NULL); + file_path = g_strconcat (PARSER_TEST_DIR, "/", name, + NULL); - list = g_slist_prepend (list, file_path); - } - } + list = g_slist_prepend (list, file_path); + } + } - g_dir_close (dir); - g_clear_error (&error); + g_dir_close (dir); + g_clear_error (&error); - return list; + return list; } static void test_parser_with_file (const gchar *file_path, gboolean is_valid) { - LmParser *parser; - gchar *file_contents; - GError *error = NULL; - gsize length; + LmParser *parser; + gchar *file_contents; + GError *error = NULL; + gsize length; - parser = lm_parser_new (NULL, NULL, NULL); - if (!g_file_get_contents (file_path, - &file_contents, &length, - &error)) { - g_error ("Couldn't read file '%s': %s", - file_path, error->message); - g_clear_error (&error); - return; - } - - g_assert (lm_parser_parse (parser, file_contents) == is_valid); - lm_parser_free (parser); - g_free (file_contents); + parser = lm_parser_new (NULL, NULL, NULL); + if (!g_file_get_contents (file_path, + &file_contents, &length, + &error)) { + g_error ("Couldn't read file '%s': %s", + file_path, error->message); + g_clear_error (&error); + return; + } + + g_assert (lm_parser_parse (parser, file_contents) == is_valid); + lm_parser_free (parser); + g_free (file_contents); } static void test_valid_suite () { - GSList *list, *l; + GSList *list, *l; - list = get_files ("valid"); - for (l = list; l; l = l->next) { - test_parser_with_file ((const gchar *) l->data, TRUE); - g_free (l->data); - } - g_slist_free (list); + list = get_files ("valid"); + for (l = list; l; l = l->next) { + test_parser_with_file ((const gchar *) l->data, TRUE); + g_free (l->data); + } + g_slist_free (list); } static void test_invalid_suite () { - GSList *list, *l; + GSList *list, *l; - list = get_files ("invalid"); - for (l = list; l; l = l->next) { - test_parser_with_file ((const gchar *) l->data, FALSE); - g_free (l->data); - } - g_slist_free (list); + list = get_files ("invalid"); + for (l = list; l; l = l->next) { + test_parser_with_file ((const gchar *) l->data, FALSE); + g_free (l->data); + } + g_slist_free (list); } int main (int argc, char **argv) { - g_test_init (&argc, &argv, NULL); - - g_test_add_func ("/parser/valid_suite", test_valid_suite); - g_test_add_func ("/parser/invalid/suite", test_invalid_suite); + g_test_init (&argc, &argv, NULL); + + g_test_add_func ("/parser/valid_suite", test_valid_suite); + g_test_add_func ("/parser/invalid/suite", test_invalid_suite); - return g_test_run (); + return g_test_run (); }