static void jabber_close (net_hook_t* hook)
{
+ if (hook->peer)
+ {
+ hook->peer->peer = NULL;
+ gnet_conn_disconnect (hook->peer->conn);
+ }
+ gnet_conn_delete (hook->conn);
+ iks_parser_delete (hook->data);
+ g_slice_free (net_hook_t, hook);
}
static void jabber_write (net_hook_t* hook)
if (hook->peer == NULL)
{
server_hook = jabber_server_hook_new (hook, server);
- hook->peer = server_hook->conn;
+ hook->peer = server_hook;
g_message ("Trying to connect to server %s.", server);
- gnet_conn_connect (hook->peer);
- gnet_conn_read (hook->peer);
+ gnet_conn_connect (hook->peer->conn);
+ gnet_conn_read (hook->peer->conn);
}
buffer = jabber_new_start (node);
- gnet_conn_write (hook->peer, buffer->str, buffer->len);
+ gnet_conn_write (hook->peer->conn, buffer->str, buffer->len);
g_string_free (buffer, TRUE);
}
{
GString* buffer;
buffer = g_string_new (iks_string (iks_stack (node), node));
- gnet_conn_write (hook->peer, buffer->str, buffer->len);
+ gnet_conn_write (hook->peer->conn, buffer->str, buffer->len);
g_string_free (buffer, TRUE);
}
iks_delete (node);
break;
case IKS_NODE_STOP:
- gnet_conn_write (hook->peer, "</stream:stream>", 16);
+ gnet_conn_write (hook->peer->conn, "</stream:stream>", 16);
break;
case IKS_NODE_ERROR:
break;
static void jabber_server_close (net_hook_t* hook)
{
+ if (hook->peer)
+ {
+ hook->peer->peer = NULL;
+ gnet_conn_disconnect (hook->peer->conn);
+ }
+ gnet_conn_delete (hook->conn);
+ iks_parser_delete (hook->data);
+ g_slice_free (net_hook_t, hook);
g_message ("Server disconnected.");
}
{
case IKS_NODE_START:
buffer = jabber_new_start (node);
- gnet_conn_write (hook->peer, buffer->str, buffer->len);
+ gnet_conn_write (hook->peer->conn, buffer->str, buffer->len);
g_string_free (buffer, TRUE);
iks_delete (node);
break;
case IKS_NODE_NORMAL:
buffer = g_string_new (iks_string (iks_stack (node), node));
- gnet_conn_write (hook->peer, buffer->str, buffer->len);
+ gnet_conn_write (hook->peer->conn, buffer->str, buffer->len);
g_string_free (buffer, TRUE);
iks_delete (node);
break;
case IKS_NODE_STOP:
- gnet_conn_write (hook->peer, "</stream:stream>", 16);
+ gnet_conn_write (hook->peer->conn, "</stream:stream>", 16);
break;
case IKS_NODE_ERROR:
g_debug ("Parse error!!");
net_hook_t* hook;
hook = g_slice_new (net_hook_t);
hook->conn = gnet_conn_new (server, 5222, nethook_event, hook);
- hook->peer = client_hook->conn;
+ hook->peer = client_hook;
hook->server = TRUE;
hook->connect = jabber_server_connect;
hook->close = jabber_server_close;