X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcclient%2Fcommand.h;h=46fb36509bc830781800e32bae61be9ad425e17f;hb=31b9c6e9ceffe13a84659d337e35f7a5960ac6d9;hp=33479ec86062e51c6f3ec9237548ed2e4cc6c0a9;hpb=2d0cb701c5d5b26c424fb067a71201eafa042b34;p=silc.git diff --git a/lib/silcclient/command.h b/lib/silcclient/command.h index 33479ec8..46fb3650 100644 --- a/lib/silcclient/command.h +++ b/lib/silcclient/command.h @@ -87,12 +87,13 @@ silc_client_command_unregister(client, SILC_COMMAND_##cmd, \ void silc_client_command_##func(void *context, void *context2) /* Executed pending command callback */ -#define SILC_CLIENT_PENDING_EXEC(ctx, cmd) \ -do { \ - if ((ctx)->callback) \ - (*ctx->callback)(ctx->context, ctx); \ - silc_client_command_pending_del((ctx)->sock->user_data, (cmd), \ - (ctx)->ident); \ +#define SILC_CLIENT_PENDING_EXEC(ctx, cmd) \ +do { \ + int _i; \ + for (_i = 0; _i < ctx->callbacks_count; _i++) \ + if (ctx->callbacks[_i].callback) \ + (*ctx->callbacks[_i].callback)(ctx->callbacks[_i].context, ctx); \ + silc_client_command_pending_del(ctx->sock->user_data, cmd, ctx->ident); \ } while(0) bool silc_client_command_register(SilcClient client, @@ -112,11 +113,12 @@ void silc_client_commands_unregister(SilcClient client); void silc_client_command_pending_del(SilcClientConnection conn, SilcCommand reply_cmd, SilcUInt16 ident); -int silc_client_command_pending_check(SilcClientConnection conn, - SilcClientCommandReplyContext ctx, - SilcCommand command, - SilcUInt16 ident); - +SilcClientCommandPendingCallbacks +silc_client_command_pending_check(SilcClientConnection conn, + SilcClientCommandReplyContext ctx, + SilcCommand command, + SilcUInt16 ident, + SilcUInt32 *callbacks_count); SILC_CLIENT_CMD_FUNC(whois); SILC_CLIENT_CMD_FUNC(whowas); SILC_CLIENT_CMD_FUNC(identify);