[PATCH v2 01/12] lib: Move message ID compression to _notmuch_message_create_for_mess...
authorAustin Clements <aclements@csail.mit.edu>
Mon, 6 Oct 2014 23:17:07 +0000 (17:17 +1800)
committerW. Trevor King <wking@tremily.us>
Fri, 7 Nov 2014 18:05:05 +0000 (10:05 -0800)
40/3e4c6bb64368f138cfc667c98c4d3aa1aa3f6d [new file with mode: 0644]

diff --git a/40/3e4c6bb64368f138cfc667c98c4d3aa1aa3f6d b/40/3e4c6bb64368f138cfc667c98c4d3aa1aa3f6d
new file mode 100644 (file)
index 0000000..de1da80
--- /dev/null
@@ -0,0 +1,168 @@
+Return-Path: <aclements@csail.mit.edu>\r
+X-Original-To: notmuch@notmuchmail.org\r
+Delivered-To: notmuch@notmuchmail.org\r
+Received: from localhost (localhost [127.0.0.1])\r
+       by olra.theworths.org (Postfix) with ESMTP id 17CAB431FB6\r
+       for <notmuch@notmuchmail.org>; Mon,  6 Oct 2014 16:18:08 -0700 (PDT)\r
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: -2.3\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=-2.3 tagged_above=-999 required=5\r
+       tests=[RCVD_IN_DNSWL_MED=-2.3] autolearn=disabled\r
+Received: from olra.theworths.org ([127.0.0.1])\r
+       by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
+       with ESMTP id 2EsvOc-w5aPh for <notmuch@notmuchmail.org>;\r
+       Mon,  6 Oct 2014 16:18:04 -0700 (PDT)\r
+Received: from dmz-mailsec-scanner-3.mit.edu (dmz-mailsec-scanner-3.mit.edu\r
+       [18.9.25.14])\r
+       (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))\r
+       (No client certificate requested)\r
+       by olra.theworths.org (Postfix) with ESMTPS id 6CEA5431FAE\r
+       for <notmuch@notmuchmail.org>; Mon,  6 Oct 2014 16:17:40 -0700 (PDT)\r
+X-AuditID: 1209190e-f79d46d000003643-68-543323132dd7\r
+Received: from mailhub-auth-3.mit.edu ( [18.9.21.43])\r
+       (using TLS with cipher AES256-SHA (256/256 bits))\r
+       (Client did not present a certificate)\r
+       by dmz-mailsec-scanner-3.mit.edu (Symantec Messaging Gateway) with SMTP\r
+       id CD.5D.13891.31323345; Mon,  6 Oct 2014 19:17:39 -0400 (EDT)\r
+Received: from outgoing.mit.edu (outgoing-auth-1.mit.edu [18.9.28.11])\r
+       by mailhub-auth-3.mit.edu (8.13.8/8.9.2) with ESMTP id s96NHT81030746; \r
+       Mon, 6 Oct 2014 19:17:29 -0400\r
+Received: from drake.dyndns.org ([12.185.136.2]) (authenticated bits=0)\r
+       (User authenticated as amdragon@ATHENA.MIT.EDU)\r
+       by outgoing.mit.edu (8.13.8/8.12.4) with ESMTP id s96NHRec014546\r
+       (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT);\r
+       Mon, 6 Oct 2014 19:17:28 -0400\r
+Received: from amthrax by drake.dyndns.org with local (Exim 4.84)\r
+       (envelope-from <aclements@csail.mit.edu>)\r
+       id 1XbHWr-0001JI-GX; Mon, 06 Oct 2014 17:17:21 -0600\r
+From: Austin Clements <aclements@csail.mit.edu>\r
+To: notmuch@notmuchmail.org\r
+Subject: [PATCH v2 01/12] lib: Move message ID compression to\r
+       _notmuch_message_create_for_message_id\r
+Date: Mon,  6 Oct 2014 17:17:07 -0600\r
+Message-Id: <1412637438-4821-2-git-send-email-aclements@csail.mit.edu>\r
+X-Mailer: git-send-email 2.1.0\r
+In-Reply-To: <1412637438-4821-1-git-send-email-aclements@csail.mit.edu>\r
+References: <1412637438-4821-1-git-send-email-aclements@csail.mit.edu>\r
+X-Brightmail-Tracker:\r
+ H4sIAAAAAAAAA+NgFtrLIsWRmVeSWpSXmKPExsUixCmqrSusbBxiMOmGscWN1m5Gi+s3ZzI7\r
+       MHk8W3WL2WPLoffMAUxRXDYpqTmZZalF+nYJXBkr/+oVbJOqeDJ/A2sD43HRLkZODgkBE4lP\r
+       sw6wQ9hiEhfurWfrYuTiEBKYzSRx4e55ZghnA6PEklkLoZylTBKP+/rYIZwljBLTpq5gAeln\r
+       E9CXWLF2EiuILSIgLbHz7mwwm1nAUuLq13YmEFtYIEXixv5VYPUsAqoSl5t72EBsXgE3iTn7\r
+       PrNA3CEnsWH3f0YQm1PAXWLNlclgc4SAap7/fMoygZF/ASPDKkbZlNwq3dzEzJzi1GTd4uTE\r
+       vLzUIl1jvdzMEr3UlNJNjOBQkuTbwfj1oNIhRgEORiUe3ogdhiFCrIllxZW5hxglOZiURHnn\r
+       sBuHCPEl5adUZiQWZ8QXleakFh9ilOBgVhLh5fptFCLEm5JYWZValA+TkuZgURLn3fSDL0RI\r
+       ID2xJDU7NbUgtQgmK8PBoSTB+1sRaKhgUWp6akVaZk4JQpqJgxNkOA/Q8H8gNbzFBYm5xZnp\r
+       EPlTjIpS4rzJSkAJAZBERmkeXC8s1l8xigO9IswrDlLFA0wTcN2vgAYzAQ02naMPMrgkESEl\r
+       1cC42oe5aRlPmk3DjBU5uasPrHz5Y/UymaTk+bLfDpv2GtuXr2IqNnWdvWrjbqHABiXJ5zZr\r
+       2+ecT7k7abV1cOpsEanjjPvS+z+1W/eeFr/2YqaNb96s49G7Oz1tDzJO/q7hETTNbs2cbGdl\r
+       s/VvjOf0LvN9fHjnDYlsoe87r5UEbM/XubqJl/u3EktxRqKhFnNRcSIAnhRx09ACAAA=\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.13\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+       <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
+List-Post: <mailto:notmuch@notmuchmail.org>\r
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Mon, 06 Oct 2014 23:18:08 -0000\r
+\r
+From: Austin Clements <amdragon@mit.edu>\r
+\r
+Previously, this was performed by notmuch_database_add_message.  This\r
+happens to be the only caller currently (which is why this was safe),\r
+but we're about to introduce more callers, and it makes more sense to\r
+put responsibility for ID compression in the lower-level function\r
+rather than requiring each caller to handle it.\r
+---\r
+ lib/database.cc       | 16 ++++------------\r
+ lib/message.cc        |  4 ++++\r
+ lib/notmuch-private.h |  3 +++\r
+ 3 files changed, 11 insertions(+), 12 deletions(-)\r
+\r
+diff --git a/lib/database.cc b/lib/database.cc\r
+index a47a71d..4e68706 100644\r
+--- a/lib/database.cc\r
++++ b/lib/database.cc\r
+@@ -390,8 +390,8 @@ find_document_for_doc_id (notmuch_database_t *notmuch, unsigned doc_id)\r
+  *\r
+  *    notmuch-sha1-<sha1_sum_of_message_id>\r
+  */\r
+-static char *\r
+-_message_id_compressed (void *ctx, const char *message_id)\r
++char *\r
++_notmuch_message_id_compressed (void *ctx, const char *message_id)\r
+ {\r
+     char *sha1, *compressed;\r
\r
+@@ -415,7 +415,7 @@ notmuch_database_find_message (notmuch_database_t *notmuch,\r
+       return NOTMUCH_STATUS_NULL_POINTER;\r
\r
+     if (strlen (message_id) > NOTMUCH_MESSAGE_ID_MAX)\r
+-      message_id = _message_id_compressed (notmuch, message_id);\r
++      message_id = _notmuch_message_id_compressed (notmuch, message_id);\r
\r
+     try {\r
+       status = _notmuch_database_find_unique_doc_id (notmuch, "id",\r
+@@ -1728,7 +1728,7 @@ static char *\r
+ _get_metadata_thread_id_key (void *ctx, const char *message_id)\r
+ {\r
+     if (strlen (message_id) > NOTMUCH_MESSAGE_ID_MAX)\r
+-      message_id = _message_id_compressed (ctx, message_id);\r
++      message_id = _notmuch_message_id_compressed (ctx, message_id);\r
\r
+     return talloc_asprintf (ctx, NOTMUCH_METADATA_THREAD_ID_PREFIX "%s",\r
+                           message_id);\r
+@@ -2100,14 +2100,6 @@ notmuch_database_add_message (notmuch_database_t *notmuch,\r
+            * better than no message-id at all. */\r
+           if (message_id == NULL)\r
+               message_id = talloc_strdup (message_file, header);\r
+-\r
+-          /* If a message ID is too long, substitute its sha1 instead. */\r
+-          if (message_id && strlen (message_id) > NOTMUCH_MESSAGE_ID_MAX) {\r
+-              char *compressed = _message_id_compressed (message_file,\r
+-                                                         message_id);\r
+-              talloc_free (message_id);\r
+-              message_id = compressed;\r
+-          }\r
+       }\r
\r
+       if (message_id == NULL ) {\r
+diff --git a/lib/message.cc b/lib/message.cc\r
+index 7e82548..bbfc250 100644\r
+--- a/lib/message.cc\r
++++ b/lib/message.cc\r
+@@ -226,6 +226,10 @@ _notmuch_message_create_for_message_id (notmuch_database_t *notmuch,\r
+     else if (*status_ret)\r
+       return NULL;\r
\r
++    /* If the message ID is too long, substitute its sha1 instead. */\r
++    if (strlen (message_id) > NOTMUCH_MESSAGE_ID_MAX)\r
++      message_id = _notmuch_message_id_compressed (message, message_id);\r
++\r
+     term = talloc_asprintf (NULL, "%s%s",\r
+                           _find_prefix ("id"), message_id);\r
+     if (term == NULL) {\r
+diff --git a/lib/notmuch-private.h b/lib/notmuch-private.h\r
+index 17f3061..36cc12b 100644\r
+--- a/lib/notmuch-private.h\r
++++ b/lib/notmuch-private.h\r
+@@ -174,6 +174,9 @@ typedef struct _notmuch_doc_id_set notmuch_doc_id_set_t;\r
+ const char *\r
+ _find_prefix (const char *name);\r
\r
++char *\r
++_notmuch_message_id_compressed (void *ctx, const char *message_id);\r
++\r
+ notmuch_status_t\r
+ _notmuch_database_ensure_writable (notmuch_database_t *notmuch);\r
\r
+-- \r
+2.1.0\r
+\r