dovecot-2.2: lib-http: http_url_parse() now returns the http_url...

dovecot at dovecot.org dovecot at dovecot.org
Thu Nov 29 01:57:50 EET 2012


details:   http://hg.dovecot.org/dovecot-2.2/rev/c9f6deb65d7b
changeset: 15431:c9f6deb65d7b
user:      Timo Sirainen <tss at iki.fi>
date:      Thu Nov 29 01:57:40 2012 +0200
description:
lib-http: http_url_parse() now returns the http_url allocated from given memory pool.

diffstat:

 src/lib-http/http-client-request.c |  3 ++-
 src/lib-http/http-url.c            |  6 +++---
 src/lib-http/http-url.h            |  2 +-
 src/lib-http/test-http-url.c       |  8 +++++---
 4 files changed, 11 insertions(+), 8 deletions(-)

diffs (81 lines):

diff -r 22799e820158 -r c9f6deb65d7b src/lib-http/http-client-request.c
--- a/src/lib-http/http-client-request.c	Wed Nov 28 09:14:33 2012 +0200
+++ b/src/lib-http/http-client-request.c	Thu Nov 29 01:57:40 2012 +0200
@@ -320,7 +320,8 @@
 	unsigned int newport;
 
 	/* parse URL */
-	if (http_url_parse(location, NULL, 0, &url, &error) < 0) {
+	if (http_url_parse(location, NULL, 0,
+			   pool_datastack_create(), &url, &error) < 0) {
 		http_client_request_error(req, HTTP_CLIENT_REQUEST_ERROR_INVALID_REDIRECT,
 			t_strdup_printf("Invalid redirect location: %s", error));
 		return;
diff -r 22799e820158 -r c9f6deb65d7b src/lib-http/http-url.c
--- a/src/lib-http/http-url.c	Wed Nov 28 09:14:33 2012 +0200
+++ b/src/lib-http/http-url.c	Thu Nov 29 01:57:40 2012 +0200
@@ -209,7 +209,7 @@
 /* Public API */
 
 int http_url_parse(const char *url, struct http_url *base,
-		   enum http_url_parse_flags flags,
+		   enum http_url_parse_flags flags, pool_t pool,
 		   struct http_url **url_r, const char **error_r)
 {
 	struct http_url_parser url_parser;
@@ -219,9 +219,9 @@
 	i_assert((flags & HTTP_URL_PARSE_SCHEME_EXTERNAL) == 0 || base == NULL);
 
 	memset(&url_parser, '\0', sizeof(url_parser));
-	uri_parser_init(&url_parser.parser, pool_datastack_create(), url);
+	uri_parser_init(&url_parser.parser, pool, url);
 
-	url_parser.url = t_new(struct http_url, 1);
+	url_parser.url = p_new(pool, struct http_url, 1);
 	url_parser.base = base;
 	url_parser.flags = flags;
 
diff -r 22799e820158 -r c9f6deb65d7b src/lib-http/http-url.h
--- a/src/lib-http/http-url.h	Wed Nov 28 09:14:33 2012 +0200
+++ b/src/lib-http/http-url.h	Thu Nov 29 01:57:40 2012 +0200
@@ -34,7 +34,7 @@
 };
 
 int http_url_parse(const char *url, struct http_url *base,
-		   enum http_url_parse_flags flags,
+		   enum http_url_parse_flags flags, pool_t pool,
 		   struct http_url **url_r, const char **error_r);
 
 /*
diff -r 22799e820158 -r c9f6deb65d7b src/lib-http/test-http-url.c
--- a/src/lib-http/test-http-url.c	Wed Nov 28 09:14:33 2012 +0200
+++ b/src/lib-http/test-http-url.c	Thu Nov 29 01:57:40 2012 +0200
@@ -269,7 +269,7 @@
 		test_begin(t_strdup_printf("http url valid [%d]", i));
 
 		if (urlb->host_name == NULL) urlb = NULL;
-		if (http_url_parse(url, urlb, flags, &urlp, &error) < 0)
+		if (http_url_parse(url, urlb, flags, pool_datastack_create(), &urlp, &error) < 0)
 			urlp = NULL;
 
 		test_out_reason(t_strdup_printf("http_url_parse(%s)",
@@ -396,7 +396,8 @@
 
 		test_begin(t_strdup_printf("http url invalid [%d]", i));
 
-		if (http_url_parse(url, urlb, flags, &urlp, &error) < 0)
+		if (http_url_parse(url, urlb, flags,
+				   pool_datastack_create(), &urlp, &error) < 0)
 			urlp = NULL;
 		test_out_reason(t_strdup_printf("parse %s", url), urlp == NULL, error);
 
@@ -435,7 +436,8 @@
 		test_begin(t_strdup_printf("http url parse/create [%d]", i));
 
 		if (http_url_parse
-			(url, NULL, HTTP_URL_ALLOW_FRAGMENT_PART, &urlp, &error) < 0)
+			(url, NULL, HTTP_URL_ALLOW_FRAGMENT_PART,
+			 pool_datastack_create(), &urlp, &error) < 0)
 			urlp = NULL;
 		test_out_reason(t_strdup_printf("parse  %s", url), urlp != NULL, error);
 		if (urlp != NULL) {


More information about the dovecot-cvs mailing list