[Dovecot] Patch for logging variables

James Devine fxmulder at gmail.com
Thu May 20 18:55:45 EEST 2010


Upon thinking, the variable names may not be descriptive enough as
`host` is a bit ambiguous and `deleted_count` may refer to a different
command than expunge in imap and may be valid to track at some point
so I have changed `host` to `client_ip` and `deleted_count` in imap to
`expunged_count`, below is the modified diff for version 1.2.11.


diff -crB dovecot-1.2.11.orig/src/imap/client.c dovecot-1.2.11/src/imap/client.c
*** dovecot-1.2.11.orig/src/imap/client.c	2010-01-24 16:14:17.000000000 -0700
--- dovecot-1.2.11/src/imap/client.c	2010-05-20 09:30:47.170407921 -0600
***************
*** 42,47 ****
--- 42,48 ----
  	client->fd_out = fd_out;
  	client->input = i_stream_create_fd(fd_in, imap_max_line_length, FALSE);
  	client->output = o_stream_create_fd(fd_out, (size_t)-1, FALSE);
+ 	client->expunged = 0;

  	o_stream_set_flush_callback(client->output, client_output, client);

***************
*** 105,110 ****
--- 106,113 ----
  	static struct var_expand_table static_tab[] = {
  		{ 'i', NULL, "input" },
  		{ 'o', NULL, "output" },
+ 		{ 'c', NULL, "client_ip" },
+ 		{ 'e', NULL, "expunged_count" },
  		{ '\0', NULL, NULL }
  	};
  	struct var_expand_table *tab;
***************
*** 115,120 ****
--- 118,125 ----

  	tab[0].value = dec2str(client->input->v_offset);
  	tab[1].value = dec2str(client->output->offset);
+ 	tab[2].value = getenv("IP") ? getenv("IP") : "Unknown";
+ 	tab[3].value = dec2str(client->expunged);

  	str = t_str_new(128);
  	var_expand(str, logout_format, tab);
diff -crB dovecot-1.2.11.orig/src/imap/client.h dovecot-1.2.11/src/imap/client.h
*** dovecot-1.2.11.orig/src/imap/client.h	2009-06-26 22:49:34.000000000 -0600
--- dovecot-1.2.11/src/imap/client.h	2010-05-19 16:26:31.529833893 -0600
***************
*** 133,138 ****
--- 133,139 ----
  	unsigned int destroyed:1;
  	unsigned int handling_input:1;
  	unsigned int syncing:1;
+ 	unsigned int expunged;
  	unsigned int id_logged:1;
  	unsigned int mailbox_examined:1;
  	unsigned int input_skip_line:1; /* skip all the data until we've
diff -crB dovecot-1.2.11.orig/src/imap/cmd-close.c
dovecot-1.2.11/src/imap/cmd-close.c
*** dovecot-1.2.11.orig/src/imap/cmd-close.c	2010-01-24 16:14:17.000000000 -0700
--- dovecot-1.2.11/src/imap/cmd-close.c	2010-05-19 16:26:31.529833893 -0600
***************
*** 18,24 ****
  	client->mailbox = NULL;

  	storage = mailbox_get_storage(mailbox);
! 	if ((ret = imap_expunge(mailbox, NULL)) < 0)
  		client_send_untagged_storage_error(client, storage);
  	if (mailbox_sync(mailbox, 0, 0, NULL) < 0)
  		client_send_untagged_storage_error(client, storage);
--- 18,24 ----
  	client->mailbox = NULL;

  	storage = mailbox_get_storage(mailbox);
! 	if ((ret = imap_expunge(client, NULL)) < 0)
  		client_send_untagged_storage_error(client, storage);
  	if (mailbox_sync(mailbox, 0, 0, NULL) < 0)
  		client_send_untagged_storage_error(client, storage);
diff -crB dovecot-1.2.11.orig/src/imap/cmd-expunge.c
dovecot-1.2.11/src/imap/cmd-expunge.c
*** dovecot-1.2.11.orig/src/imap/cmd-expunge.c	2010-01-24
16:14:17.000000000 -0700
--- dovecot-1.2.11/src/imap/cmd-expunge.c	2010-05-19 16:26:31.529833893 -0600
***************
*** 24,30 ****
  {
  	struct client *client = cmd->client;

! 	if (imap_expunge(client->mailbox, search_args == NULL ? NULL :
  			 search_args->args) < 0) {
  		client_send_storage_error(cmd,
  					  mailbox_get_storage(client->mailbox));
--- 24,30 ----
  {
  	struct client *client = cmd->client;

! 	if (imap_expunge(client, search_args == NULL ? NULL :
  			 search_args->args) < 0) {
  		client_send_storage_error(cmd,
  					  mailbox_get_storage(client->mailbox));
diff -crB dovecot-1.2.11.orig/src/imap/imap-expunge.c
dovecot-1.2.11/src/imap/imap-expunge.c
*** dovecot-1.2.11.orig/src/imap/imap-expunge.c	2010-01-24
16:14:17.000000000 -0700
--- dovecot-1.2.11/src/imap/imap-expunge.c	2010-05-19 16:26:31.529833893 -0600
***************
*** 5,18 ****
  #include "mail-search-build.h"
  #include "imap-expunge.h"

! int imap_expunge(struct mailbox *box, struct mail_search_arg *next_search_arg)
  {
  	struct mail_search_context *ctx;
          struct mailbox_transaction_context *t;
  	struct mail *mail;
  	struct mail_search_args *search_args;
  	bool expunges = FALSE;

  	if (mailbox_is_readonly(box)) {
  		/* silently ignore */
  		return 0;
--- 5,21 ----
  #include "mail-search-build.h"
  #include "imap-expunge.h"

! int imap_expunge(struct client *client, struct mail_search_arg
*next_search_arg)
  {
  	struct mail_search_context *ctx;
          struct mailbox_transaction_context *t;
  	struct mail *mail;
+ 	struct mailbox *box;
  	struct mail_search_args *search_args;
  	bool expunges = FALSE;

+ 	box = client->mailbox;
+
  	if (mailbox_is_readonly(box)) {
  		/* silently ignore */
  		return 0;
diff -crB dovecot-1.2.11.orig/src/imap/imap-expunge.h
dovecot-1.2.11/src/imap/imap-expunge.h
*** dovecot-1.2.11.orig/src/imap/imap-expunge.h	2008-06-08
21:14:46.000000000 -0600
--- dovecot-1.2.11/src/imap/imap-expunge.h	2010-05-19 16:26:31.529833893 -0600
***************
*** 3,8 ****

  struct mail_search_arg;

! int imap_expunge(struct mailbox *box, struct mail_search_arg
*next_search_arg);

  #endif
--- 3,8 ----

  struct mail_search_arg;

! int imap_expunge(struct client *client, struct mail_search_arg
*next_search_arg);

  #endif
Only in dovecot-1.2.11.orig/src/lib-sql: sql-drivers-register.c
diff -crB dovecot-1.2.11.orig/src/pop3/client.c dovecot-1.2.11/src/pop3/client.c
*** dovecot-1.2.11.orig/src/pop3/client.c	2010-01-24 16:14:17.000000000 -0700
--- dovecot-1.2.11/src/pop3/client.c	2010-05-20 09:31:01.400409195 -0600
***************
*** 238,243 ****
--- 238,244 ----
  		{ 's', NULL, "message_bytes" },
  		{ 'i', NULL, "input" },
  		{ 'o', NULL, "output" },
+ 		{ 'c', NULL, "client_ip" },
  		{ '\0', NULL, NULL }
  	};
  	struct var_expand_table *tab;
***************
*** 255,260 ****
--- 256,262 ----
  	tab[6].value = dec2str(client->total_size);
  	tab[7].value = dec2str(client->input->v_offset);
  	tab[8].value = dec2str(client->output->offset);
+ 	tab[9].value = getenv("IP") ? getenv("IP") : "Unknown";

  	str = t_str_new(128);
  	var_expand(str, logout_format, tab);


More information about the dovecot mailing list