diff --git a/ChangeLog b/ChangeLog
index 3a98c35..1df1a86 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,46 @@
+2008-10-28  Sergey Poznyakoff  <gray@gnu.org.ua>
+
+	Minor fixes.
+	
+	* mailbox/mailbox.c (_create_mailbox0): Take care not to destroy
+	url, if creation of the mailbox failed.
+	(_create_mailbox): Destroy url if unable to create mailbox.
+	
+	* mailbox/mutil.c (mu_is_proto): Take starting | as a protocol
+	specification. A kludge. 
+
+	* include/mailutils/argcv.h: Fix indentation.
+
+	Change handling of query part in a URL.
+
+	Queries are now parsed into arguments and returned as arrays
+	of arguments.
+	
+	* libproto/include/url0.h (struct _mu_url): Replace query with
+	array of query arguments.	
+	* include/mailutils/url.h (mu_url_dup): New proto.
+	(mu_url_get_query): Remove.
+	(mu_url_sget_query, mu_url_aget_query): Return query split into
+	arguments.
+	(mu_url_set_scheme): New function.
+	(mu_url_decode_len): New function.
+	* mailbox/url.c (mu_url_dup): New function.
+	(mu_url_get_query): Remove.
+	(mu_url_sget_query, mu_url_aget_query): Return query split into
+	arguments.
+	(mu_url_set_scheme): New function.
+	(mu_url_decode_len): New function.
+
+	* libproto/remote/mbox.c (remote_mbox_init): Use parsed out URL,
+	instead of the full URL string.
+	
+	* examples/url-parse.c: Change query output.
+	* mailbox/testsuite/Urls: Reflect changes to url-parse.  Add new
+	testcases.
+	
+	* libproto/imap/url.c, libproto/pop/url.c: Reflect changes to URL
+	functions.
+
 2008-10-25  Sergey Poznyakoff  <gray@gnu.org.ua>
 
 	Initial implementation of a `prog' mailer.
diff --git a/include/mailutils/argcv.h b/include/mailutils/argcv.h
index 532adcd..158d4cc 100644
--- a/include/mailutils/argcv.h
+++ b/include/mailutils/argcv.h
@@ -31,8 +31,8 @@ extern "C" {
 #define MU_ARGCV_RETURN_DELIMS 0x01
   
 extern int mu_argcv_get    (const char *command, const char *delim,
-			 const char* cmnt,
-			 int *argc, char ***argv);
+			    const char *cmnt,
+			    int *argc, char ***argv);
 extern int mu_argcv_get_n (const char *command, int len,
 		        const char *delim, const char *cmnt,
 			int *argc, char ***argv);
diff --git a/mailbox/mailbox.c b/mailbox/mailbox.c
index 81a6c32..3d0cf41 100644
--- a/mailbox/mailbox.c
+++ b/mailbox/mailbox.c
@@ -173,7 +173,7 @@ _create_mailbox0 (mu_mailbox_t *pmbox, mu_url_t url, const char *name)
 	    }
 
 	  mbox->url = url;
-	  
+
 	  /* Create the folder before initializing the concrete mailbox.
 	     The mailbox needs it's back pointer. */
 	  status = mailbox_folder_create (mbox, name, record);
@@ -182,7 +182,11 @@ _create_mailbox0 (mu_mailbox_t *pmbox, mu_url_t url, const char *name)
 	    status = m_init (mbox);   /* Create the concrete mailbox type.  */
 
 	  if (status != 0)
-	    mu_mailbox_destroy (&mbox);
+	    {
+	      /* Take care not to destroy url.  Leave it to caller. */
+	      mbox->url = NULL;
+	      mu_mailbox_destroy (&mbox);
+	    }
 	  else
 	    {
 	      *pmbox = mbox;
@@ -219,6 +223,8 @@ _create_mailbox (mu_mailbox_t *pmbox, const char *name)
   status = mu_url_parse (url);
   if (status == 0)
     status = _create_mailbox0 (pmbox, url, name);
+  if (status)
+    mu_url_destroy (&url);
   return status;
 }
 
diff --git a/mailbox/mutil.c b/mailbox/mutil.c
index 972b826..1440e8d 100644
--- a/mailbox/mutil.c
+++ b/mailbox/mutil.c
@@ -1373,6 +1373,8 @@ mu_decode_filter (mu_stream_t *pfilter, mu_stream_t input,
 int
 mu_is_proto (const char *p)
 {
+  if (*p == '|')
+    return 1;
   for (; *p && *p != '/'; p++)
     if (*p == ':')
       return 1;