X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Firssi%2Fsrc%2Fsilc%2Fcore%2Fsilc-lag.c;h=d04015339786a858ad8e20430756cb81c33da9cf;hb=6e259b8f13ead96a13f6a5467487ea2e7b64c248;hp=ba2d9b30ebbed5b1690a607f51bb9101cb45dd06;hpb=c741c348821adf33b292f8207a731f4c126b483f;p=crypto.git diff --git a/apps/irssi/src/silc/core/silc-lag.c b/apps/irssi/src/silc/core/silc-lag.c index ba2d9b30..d0401533 100644 --- a/apps/irssi/src/silc/core/silc-lag.c +++ b/apps/irssi/src/silc/core/silc-lag.c @@ -5,11 +5,14 @@ #include "silc-servers.h" -#define SILC_CLIENT_LAG_PING_ID 0x1337 - static int timeout_tag; -static void lag_event_pong(SILC_SERVER_REC *server, - SilcClientCommandReplyContext cmd); +static SilcBool lag_event_pong(SilcClient client, + SilcClientConnection conn, + SilcCommand command, + SilcStatus status, + SilcStatus error, + void *context, + va_list ap); static void lag_get(SILC_SERVER_REC *server) { @@ -17,33 +20,36 @@ static void lag_get(SILC_SERVER_REC *server) g_get_current_time(&server->lag_sent); server->lag_last_check = time(NULL); - /* register pending callback & send ping */ - silc_client_command_pending(server->conn, SILC_COMMAND_PING, - SILC_CLIENT_LAG_PING_ID, - (SilcCommandCb)lag_event_pong, (void *)server); - idp = silc_id_payload_encode(server->conn->remote_id, SILC_ID_SERVER); + /* Send PING */ + idp = silc_id_payload_encode(&server->conn->remote_id.u.server_id, + SILC_ID_SERVER); silc_client_command_send(silc_client, server->conn, - SILC_COMMAND_PING, SILC_CLIENT_LAG_PING_ID, - 1, 1, idp->data, idp->len); + SILC_COMMAND_PING, lag_event_pong, server, + 1, 1, silc_buffer_data(idp), + silc_buffer_len(idp)); silc_buffer_free(idp); } -static void lag_event_pong(SILC_SERVER_REC *server, - SilcClientCommandReplyContext cmd) +static SilcBool lag_event_pong(SilcClient client, + SilcClientConnection conn, + SilcCommand command, + SilcStatus status, + SilcStatus error, + void *context, + va_list ap) { + SILC_SERVER_REC *server = context; GTimeVal now; - if (cmd->error != SILC_STATUS_OK) { - + if (status != SILC_STATUS_OK) { /* if the ping failed for some reason, try it again */ lag_get(server); - return; - + return TRUE; } if (server->lag_sent.tv_sec == 0) { - /* not expecting lag reply.. */ - return; + /* not expecting lag reply. */ + return TRUE; } g_get_current_time(&now); @@ -51,6 +57,8 @@ static void lag_event_pong(SILC_SERVER_REC *server, memset(&server->lag_sent, 0, sizeof(server->lag_sent)); signal_emit("server lag", 1, server); + + return TRUE; } static int sig_check_lag(void) @@ -95,7 +103,7 @@ void silc_lag_init(void) { /* silc-client will need those... silc-plugin uses irc defaults */ settings_add_int("misc", "lag_check_time", 60); - settings_add_int("misc", "lag_max_before_disconnect", 300); + settings_add_int("misc", "lag_max_before_disconnect", 300); timeout_tag = g_timeout_add(1000, (GSourceFunc) sig_check_lag, NULL); }