changeset 21623:ff0f2eb98d79

lib-imap: imap-bodystructure: Removed useless pool field from struct message_part_data.
author Stephan Bosch <stephan.bosch@dovecot.fi>
date Sun, 23 Oct 2016 13:50:05 +0200
parents b6b198961bc6
children cd2324ec340d
files src/lib-imap/imap-bodystructure.c src/lib-imap/imap-bodystructure.h
diffstat 2 files changed, 26 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-imap/imap-bodystructure.c	Sun Oct 23 13:29:43 2016 +0200
+++ b/src/lib-imap/imap-bodystructure.c	Sun Oct 23 13:50:05 2016 +0200
@@ -28,8 +28,9 @@
 	return p_strdup(pool, str_c(str));
 }
 
-static void parse_content_type(struct message_part_data *data,
-			       struct message_header_line *hdr)
+static void
+parse_content_type(struct message_part_data *data,
+	pool_t pool, struct message_header_line *hdr)
 {
 	struct rfc822_parser_context parser;
 	const char *value, *const *results;
@@ -49,12 +50,12 @@
 	for (i = 0; value[i] != '\0'; i++) {
 		if (value[i] == '/') {
 			data->content_subtype =
-				imap_get_string(data->pool, value + i+1);
+				imap_get_string(pool, value + i+1);
 			break;
 		}
 	}
 	str_truncate(str, i);
-	data->content_type = imap_get_string(data->pool, str_c(str));
+	data->content_type = imap_get_string(pool, str_c(str));
 
 	if (ret < 0) {
 		/* Content-Type is broken, but we wanted to get it as well as
@@ -87,12 +88,13 @@
 	}
 	if (str_len(str) > 0) {
 		data->content_type_params =
-			p_strdup(data->pool, str_c(str) + 1);
+			p_strdup(pool, str_c(str) + 1);
 	}
 }
 
-static void parse_content_transfer_encoding(struct message_part_data *data,
-					    struct message_header_line *hdr)
+static void
+parse_content_transfer_encoding(struct message_part_data *data,
+	pool_t pool, struct message_header_line *hdr)
 {
 	struct rfc822_parser_context parser;
 	string_t *str;
@@ -104,12 +106,13 @@
 	if (rfc822_parse_mime_token(&parser, str) >= 0 &&
 	    rfc822_skip_lwsp(&parser) == 0 && str_len(str) > 0) {
 		data->content_transfer_encoding =
-			imap_get_string(data->pool, str_c(str));
+			imap_get_string(pool, str_c(str));
 	}
 }
 
-static void parse_content_disposition(struct message_part_data *data,
-				      struct message_header_line *hdr)
+static void
+parse_content_disposition(struct message_part_data *data,
+	pool_t pool, struct message_header_line *hdr)
 {
 	struct rfc822_parser_context parser;
 	const char *const *results;
@@ -121,7 +124,7 @@
 	str = t_str_new(256);
 	if (rfc822_parse_mime_token(&parser, str) < 0)
 		return;
-	data->content_disposition = imap_get_string(data->pool, str_c(str));
+	data->content_disposition = imap_get_string(pool, str_c(str));
 
 	/* parse parameters and save them */
 	str_truncate(str, 0);
@@ -134,12 +137,13 @@
 	}
 	if (str_len(str) > 0) {
 		data->content_disposition_params =
-			p_strdup(data->pool, str_c(str) + 1);
+			p_strdup(pool, str_c(str) + 1);
 	}
 }
 
-static void parse_content_language(const unsigned char *value, size_t value_len,
-				   struct message_part_data *data)
+static void
+parse_content_language(struct message_part_data *data,
+	pool_t pool, const unsigned char *value, size_t value_len)
 {
 	struct rfc822_parser_context parser;
 	string_t *str;
@@ -166,13 +170,12 @@
 
 	if (str_len(str) > 1) {
 		str_truncate(str, str_len(str) - 2);
-		data->content_language = p_strdup(data->pool, str_c(str));
+		data->content_language = p_strdup(pool, str_c(str));
 	}
 }
 
 static void parse_content_header(struct message_part_data *d,
-				 struct message_header_line *hdr,
-				 pool_t pool)
+				 pool_t pool, struct message_header_line *hdr)
 {
 	const char *name = hdr->name + strlen("Content-");
 	const char *value;
@@ -200,18 +203,18 @@
 	case 't':
 	case 'T':
 		if (strcasecmp(name, "Type") == 0 && d->content_type == NULL)
-			parse_content_type(d, hdr);
+			parse_content_type(d, pool, hdr);
 		else if (strcasecmp(name, "Transfer-Encoding") == 0 &&
 			 d->content_transfer_encoding == NULL)
-			parse_content_transfer_encoding(d, hdr);
+			parse_content_transfer_encoding(d, pool, hdr);
 		break;
 
 	case 'l':
 	case 'L':
 		if (strcasecmp(name, "Language") == 0 &&
 		    d->content_language == NULL) {
-			parse_content_language(hdr->full_value,
-					       hdr->full_value_len, d);
+			parse_content_language(d, pool, hdr->full_value,
+					       hdr->full_value_len);
 		} else if (strcasecmp(name, "Location") == 0 &&
 			   d->content_location == NULL) {
 			d->content_location = imap_get_string(pool, value);
@@ -225,7 +228,7 @@
 			d->content_description = imap_get_string(pool, value);
 		else if (strcasecmp(name, "Disposition") == 0 &&
 			 d->content_disposition_params == NULL)
-			parse_content_disposition(d, hdr);
+			parse_content_disposition(d, pool, hdr);
 		break;
 	}
 }
@@ -243,7 +246,6 @@
 			   structure anyway. */
 			part->data = part_data =
 				p_new(pool, struct message_part_data, 1);
-			part_data->pool = pool;
 		} else if ((part->flags & MESSAGE_PART_FLAG_IS_MIME) == 0) {
 			/* If there was no Mime-Version, forget all
 			   the Content-stuff */
@@ -251,7 +253,6 @@
 			envelope = part_data->envelope;
 
 			i_zero(part_data);
-			part_data->pool = pool;
 			part_data->envelope = envelope;
 		}
 		return;
@@ -269,13 +270,12 @@
 		/* initialize message part data */
 		part->data = part_data =
 			p_new(pool, struct message_part_data, 1);
-		part_data->pool = pool;
 	}
 	part_data = part->data;
 
 	if (strncasecmp(hdr->name, "Content-", 8) == 0) {
 		T_BEGIN {
-			parse_content_header(part_data, hdr, pool);
+			parse_content_header(part_data, pool, hdr);
 		} T_END;
 	}
 
@@ -703,7 +703,6 @@
 	i_assert(part->data == NULL);
 
 	part->data = data = p_new(pool, struct message_part_data, 1);
-	data->pool = pool;
 
 	multipart = FALSE;
 	child_part = part->children;
--- a/src/lib-imap/imap-bodystructure.h	Sun Oct 23 13:29:43 2016 +0200
+++ b/src/lib-imap/imap-bodystructure.h	Sun Oct 23 13:50:05 2016 +0200
@@ -2,7 +2,6 @@
 #define IMAP_BODYSTRUCTURE_H
 
 struct message_part_data {
-	pool_t pool;
 	/* NOTE: all the strings are stored via imap_quote(), so they contain
 	   "quoted-text" or {123}\r\nliterals */
 	const char *content_type, *content_subtype;