Mercurial > pidgin
changeset 27788:46e80810b095
jabber: Better inactivity timer logic.
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Sat, 01 Aug 2009 04:24:39 +0000 |
parents | 53f0956f76dc |
children | 1ff7de15d856 |
files | libpurple/protocols/jabber/bosh.c |
diffstat | 1 files changed, 22 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/bosh.c Sat Aug 01 04:01:51 2009 +0000 +++ b/libpurple/protocols/jabber/bosh.c Sat Aug 01 04:24:39 2009 +0000 @@ -400,6 +400,21 @@ return TRUE; } +static void +restart_inactivity_timer(PurpleBOSHConnection *conn) +{ + if (conn->inactivity_timer != 0) { + purple_timeout_remove(conn->inactivity_timer); + conn->inactivity_timer = 0; + } + + if (conn->max_inactivity != 0) { + conn->inactivity_timer = + purple_timeout_add_seconds(conn->max_inactivity - 5 /* rounding */, + bosh_inactivity_cb, conn); + } +} + static void jabber_bosh_connection_received(PurpleBOSHConnection *conn, xmlnode *node) { xmlnode *child; JabberStream *js = conn->js; @@ -500,12 +515,12 @@ conn->max_inactivity = 0; } else { /* TODO: Integrate this with jabber.c keepalive checks... */ + /* TODO: Can this check fail? It shouldn't */ if (conn->inactivity_timer == 0) { - purple_debug_misc("jabber", "Starting BOSH inactivity timer for %d secs (compensating for rounding)\n", + purple_debug_misc("jabber", "Starting BOSH inactivity timer " + "for %d secs (compensating for rounding)\n", conn->max_inactivity - 5); - conn->inactivity_timer = purple_timeout_add_seconds( - conn->max_inactivity - 5 /* rounding */, - bosh_inactivity_cb, conn); + restart_inactivity_timer(conn); } } } @@ -919,6 +934,9 @@ int ret; size_t len; + /* Sending something to the server, restart the inactivity timer */ + restart_inactivity_timer(conn->bosh); + data = g_strdup_printf("POST %s HTTP/1.1\r\n" "Host: %s\r\n" "User-Agent: %s\r\n"