dovecot-2.2-pigeonhole: Changed handling of ENOSPACE to a normal...

pigeonhole at rename-it.nl pigeonhole at rename-it.nl
Sat Aug 23 19:17:12 UTC 2014


details:   http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/0b25efe31d79
changeset: 1909:0b25efe31d79
user:      Stephan Bosch <stephan at rename-it.nl>
date:      Sat Aug 23 21:16:34 2014 +0200
description:
Changed handling of ENOSPACE to a normal temporary failure and added handling of ENOQUOTA as a user error.
Patch by Timo Sirainen.

diffstat:

 src/lib-sieve/sieve-actions.c                        |   6 +---
 src/lib-sieve/sieve-types.h                          |   2 -
 src/lib-sieve/storage/file/sieve-file-storage-save.c |  24 ++++++++++----------
 src/managesieve/managesieve-client.c                 |   1 -
 src/plugins/lda-sieve/lda-sieve-plugin.c             |   2 +-
 5 files changed, 15 insertions(+), 20 deletions(-)

diffs (112 lines):

diff -r 3b964432b84b -r 0b25efe31d79 src/lib-sieve/sieve-actions.c
--- a/src/lib-sieve/sieve-actions.c	Sat Aug 23 21:11:54 2014 +0200
+++ b/src/lib-sieve/sieve-actions.c	Sat Aug 23 21:16:34 2014 +0200
@@ -634,12 +634,10 @@
 		error_code = trans->error_code;
 
 		if ( error_code == MAIL_ERROR_NOTFOUND ||
-			error_code == MAIL_ERROR_PARAMS ) {
+			error_code == MAIL_ERROR_PARAMS ||
+			error_code == MAIL_ERROR_NOQUOTA ) {
 			sieve_result_error(aenv, "failed to store into mailbox %s: %s",
 				mailbox_name, errstr);
-		} else if ( error_code == MAIL_ERROR_NOSPACE ) {
-			sieve_result_global_log_error
-				(aenv, "failed to store into mailbox %s: %s", mailbox_name, errstr);
 		} else {
 			sieve_result_global_error(aenv, "failed to store into mailbox %s: %s",
 				mailbox_name, errstr);
diff -r 3b964432b84b -r 0b25efe31d79 src/lib-sieve/sieve-types.h
--- a/src/lib-sieve/sieve-types.h	Sat Aug 23 21:11:54 2014 +0200
+++ b/src/lib-sieve/sieve-types.h	Sat Aug 23 21:16:34 2014 +0200
@@ -92,8 +92,6 @@
 	/* No permission to do the request */
 	SIEVE_ERROR_NO_PERMISSION,
 	/* Out of disk space */
-	SIEVE_ERROR_NO_SPACE,
-	/* Out of disk space */
 	SIEVE_ERROR_NO_QUOTA,
 	/* Item (e.g. script or binary) cannot be found */
 	SIEVE_ERROR_NOT_FOUND,
diff -r 3b964432b84b -r 0b25efe31d79 src/lib-sieve/storage/file/sieve-file-storage-save.c
--- a/src/lib-sieve/storage/file/sieve-file-storage-save.c	Sat Aug 23 21:11:54 2014 +0200
+++ b/src/lib-sieve/storage/file/sieve-file-storage-save.c	Sat Aug 23 21:16:34 2014 +0200
@@ -111,10 +111,10 @@
 
 	*fpath_r = str_c(path);
 	if (fd == -1) {
-		if (ENOSPACE(errno)) {
+		if (ENOQUOTA(errno)) {
 			sieve_storage_set_error(storage,
-				SIEVE_ERROR_NO_SPACE,
-				"Not enough disk space");
+				SIEVE_ERROR_NO_QUOTA,
+				"Not enough disk quota");
 		} else {
 			sieve_storage_set_critical(storage, "save: "
 				"open(%s) failed: %m", str_c(path));
@@ -142,10 +142,10 @@
 			result = 0;
 		else {
 			result = -1;
-			if ( ENOSPACE(errno) ) {
+			if ( ENOQUOTA(errno) ) {
 				sieve_storage_set_error(storage,
-					SIEVE_ERROR_NO_SPACE,
-					"Not enough disk space");
+					SIEVE_ERROR_NO_QUOTA,
+					"Not enough disk quota");
 			} else if ( errno == EACCES ) {
 				sieve_storage_set_critical(storage, "save: "
 					"Failed to save Sieve script: "
@@ -275,10 +275,10 @@
 			fsctx->tmp_path = NULL;
 			
 			errno = output_errno;
-			if ( ENOSPACE(errno) ) {
+			if ( ENOQUOTA(errno) ) {
 				sieve_storage_set_error(storage,
-					SIEVE_ERROR_NO_SPACE,
-					"Not enough disk space");
+					SIEVE_ERROR_NO_QUOTA,
+					"Not enough disk quota");
 			} else if ( errno != 0 ) {
 				sieve_storage_set_critical(storage, "save: "
 					"write(%s) failed: %m", fsctx->tmp_path);
@@ -428,10 +428,10 @@
 	o_stream_destroy(&output);
 
 	if (rename(str_c(temp_path), fstorage->active_path) < 0) {
-		if ( ENOSPACE(errno) ) {
+		if ( ENOQUOTA(errno) ) {
 			sieve_storage_set_error(storage,
-				SIEVE_ERROR_NO_SPACE,
-				"Not enough disk space");
+				SIEVE_ERROR_NO_QUOTA,
+				"Not enough disk quota");
 		} else if ( errno == EACCES ) {
 			sieve_storage_set_critical(storage,
 				"%s", eacces_error_get("rename", fstorage->active_path));
diff -r 3b964432b84b -r 0b25efe31d79 src/managesieve/managesieve-client.c
--- a/src/managesieve/managesieve-client.c	Sat Aug 23 21:11:54 2014 +0200
+++ b/src/managesieve/managesieve-client.c	Sat Aug 23 21:16:34 2014 +0200
@@ -396,7 +396,6 @@
 		break;
 
 	case SIEVE_ERROR_NO_QUOTA:
-	case SIEVE_ERROR_NO_SPACE: /* Not sure if this is appropriate */
 		client_send_noresp(client, "QUOTA", error);
 		break;
 
diff -r 3b964432b84b -r 0b25efe31d79 src/plugins/lda-sieve/lda-sieve-plugin.c
--- a/src/plugins/lda-sieve/lda-sieve-plugin.c	Sat Aug 23 21:11:54 2014 +0200
+++ b/src/plugins/lda-sieve/lda-sieve-plugin.c	Sat Aug 23 21:16:34 2014 +0200
@@ -385,7 +385,7 @@
 		mail_storage_get_last_error(estatus->last_storage, &mail_error);
 
 		/* Don't bother administrator too much with benign errors */
-		if ( mail_error == MAIL_ERROR_NOSPACE ) {
+		if ( mail_error == MAIL_ERROR_NOQUOTA ) {
 			error_func = sieve_sys_info;
 			user_error_func = sieve_sys_info;
 		}


More information about the dovecot-cvs mailing list