aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/jabber/jabber.c
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2006-09-21 21:48:17 +0200
committerWilmer van der Gaast <wilmer@gaast.net>2006-09-21 21:48:17 +0200
commitdeff0406d501264e1d91203ea8f91411a150e35f (patch)
treea9baa4d4e9ee49cefedb9c8c398ab1d3fc68422a /protocols/jabber/jabber.c
parent5bcf70a662244dc77af09d2fffbe913ec6f19393 (diff)
Implemented set_away() (VERY simple version, have to add an away state
table like in the MSN module), added sending of keepalive "packets" and removed old main() code (for testing only) from jabber.c.
Diffstat (limited to 'protocols/jabber/jabber.c')
-rw-r--r--protocols/jabber/jabber.c44
1 files changed, 12 insertions, 32 deletions
diff --git a/protocols/jabber/jabber.c b/protocols/jabber/jabber.c
index 132a355c..13eac23e 100644
--- a/protocols/jabber/jabber.c
+++ b/protocols/jabber/jabber.c
@@ -121,6 +121,7 @@ static int jabber_send_im( struct gaim_connection *gc, char *who, char *message,
return st;
}
+/* TODO: For away state handling, implement some list like the one for MSN. */
static GList *jabber_away_states( struct gaim_connection *gc )
{
GList *l = NULL;
@@ -135,11 +136,19 @@ static GList *jabber_away_states( struct gaim_connection *gc )
static void jabber_set_away( struct gaim_connection *gc, char *state, char *message )
{
+ /* For now let's just always set state to "away" and send the message, if available. */
+ presence_send( gc, NULL, g_strcasecmp( state, "Online" ) == 0 ? NULL : "away", message );
+}
+
+static void jabber_keepalive( struct gaim_connection *gc )
+{
+ /* Just any whitespace character is enough as a keepalive for XMPP sessions. */
+ jabber_write( gc, "\n", 1 );
}
void jabber_init()
{
- struct prpl *ret = g_new0(struct prpl, 1);
+ struct prpl *ret = g_new0( struct prpl, 1 );
ret->name = "jabber";
ret->login = jabber_login;
@@ -157,7 +166,7 @@ void jabber_init()
// ret->chat_invite = jabber_chat_invite;
// ret->chat_leave = jabber_chat_leave;
// ret->chat_open = jabber_chat_open;
-// ret->keepalive = jabber_keepalive;
+ ret->keepalive = jabber_keepalive;
// ret->add_permit = jabber_add_permit;
// ret->rem_permit = jabber_rem_permit;
// ret->add_deny = jabber_add_deny;
@@ -165,34 +174,5 @@ void jabber_init()
// ret->send_typing = jabber_send_typing;
ret->handle_cmp = g_strcasecmp;
- register_protocol(ret);
-}
-
-#if 0
-int main( int argc, char *argv[] )
-{
- struct xt_parser *xt = xt_new( NULL );
- struct xt_node *msg;
- int i;
- char buf[512];
-
- msg = xt_new_node( "message", NULL, xt_new_node( "body", "blaataap-test", NULL ) );
- xt_add_child( msg, xt_new_node( "html", NULL, xt_new_node( "body", "<b>blaataap in html</b>", NULL ) ) );
- xt_add_attr( msg, "xmlns", "jabber:client" );
- xt_add_attr( xt_find_node( msg->children, "html" ), "xmlns", "html rotte zooi" );
- printf( "%s\n", xt_to_string( msg ) );
-
- while( ( i = read( 0, buf, 512 ) ) > 0 )
- {
- if( xt_feed( xt, buf, i ) < 1 )
- break;
- }
- xt->handlers = jabber_handlers;
- xt_handle( xt, NULL );
-
- xt_cleanup( xt, NULL );
- printf( "%d\n", xt->root );
-
- xt_free( xt );
+ register_protocol( ret );
}
-#endif