From: Timo Sirainen Date: Mon, 10 Apr 2017 13:18:46 +0000 (+0300) Subject: lib-imap-client: Make command tag counter externally accessible X-Git-Tag: 2.3.0.rc1~1752 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cda5d635049991ef56b5096e29c4da8dc3c51c96;p=thirdparty%2Fdovecot%2Fcore.git lib-imap-client: Make command tag counter externally accessible This allows unit tests to reset it. --- diff --git a/src/lib-imap-client/imapc-client-private.h b/src/lib-imap-client/imapc-client-private.h index ce809f0bc4..96e780a5fe 100644 --- a/src/lib-imap-client/imapc-client-private.h +++ b/src/lib-imap-client/imapc-client-private.h @@ -49,6 +49,8 @@ struct imapc_client_mailbox { bool closing; }; +extern unsigned int imapc_client_cmd_tag_counter; + void imapc_client_ref(struct imapc_client *client); void imapc_client_unref(struct imapc_client **client); diff --git a/src/lib-imap-client/imapc-client.c b/src/lib-imap-client/imapc-client.c index 874acd509b..ed0c8e4719 100644 --- a/src/lib-imap-client/imapc-client.c +++ b/src/lib-imap-client/imapc-client.c @@ -31,6 +31,8 @@ const struct imapc_capability_name imapc_capability_names[] = { { NULL, 0 } }; +unsigned int imapc_client_cmd_tag_counter = 0; + static void default_untagged_callback(const struct imapc_untagged_reply *reply ATTR_UNUSED, void *context ATTR_UNUSED) diff --git a/src/lib-imap-client/imapc-connection.c b/src/lib-imap-client/imapc-connection.c index 00a30c67ad..bba6a4b005 100644 --- a/src/lib-imap-client/imapc-connection.c +++ b/src/lib-imap-client/imapc-connection.c @@ -1871,7 +1871,6 @@ void imapc_connection_input_pending(struct imapc_connection *conn) static struct imapc_command * imapc_command_begin(imapc_command_callback_t *callback, void *context) { - static unsigned int cmd_tag_counter = 0; struct imapc_command *cmd; pool_t pool; @@ -1883,9 +1882,11 @@ imapc_command_begin(imapc_command_callback_t *callback, void *context) cmd->callback = callback; cmd->context = context; - if (++cmd_tag_counter == 0) - cmd_tag_counter++; - cmd->tag = cmd_tag_counter; + /* use a globally unique tag counter so looking at rawlogs is + somewhat easier */ + if (++imapc_client_cmd_tag_counter == 0) + imapc_client_cmd_tag_counter++; + cmd->tag = imapc_client_cmd_tag_counter; return cmd; }