wieker@localhost:~/Projects/ksj$ dpkg -l *loud*
ii libloudmouth1-0 1.4.3-5 Lightweight C Jabber library
ii libloudmouth1-dev 1.4.3-5 Development files for Loudmouth Jabber library
Этот код работает абсолютно нормально:
#include <stdio.h>
#include <stdlib.h>
#include <loudmouth/loudmouth.h>
int main(int argc, char* argv)
{
LmMessage* m;
LmConnection* conn;
GError* error = NULL;
conn = lm_connection_new("jabber.ru");
lm_connection_open_and_block(conn, &error);
lm_connection_authenticate_and_block(conn, "lmtest", "up8a34go0", "test", &error);
m = lm_message_new ("wieker@jabber.ru", LM_MESSAGE_TYPE_MESSAGE);
lm_message_node_add_child (m->node, "body", "тест");
lm_connection_send (conn, m, &error);
lm_message_unref(m);
lm_connection_close(conn, NULL);
lm_connection_unref(conn);
return 0;
}
А этот вызывает зависание системы:
#include <stdio.h>
#include <stdlib.h>
#include <loudmouth/loudmouth.h>
void connect()
{
LmMessage* m;
LmConnection* conn;
GError* error = NULL;
conn = lm_connection_new("jabber.ru");
lm_connection_open_and_block(conn, &error);
lm_connection_authenticate_and_block(conn, "lmtest", "up8a34go0", "test", &error);
m = lm_message_new ("wieker@jabber.ru", LM_MESSAGE_TYPE_MESSAGE);
lm_message_node_add_child (m->node, "body", "тест");
lm_connection_send (conn, m, &error);
lm_message_unref(m);
lm_connection_close(conn, NULL);
lm_connection_unref(conn);
}
int main(int argc, char** argv)
{
connect();
return 0;
}
Что-то я не понял, как вынос кода в функцию может давать такие последствия? (зависает, потому что вызывается слишком много процессов)