From: Michael Haggerty <mhagger@alum.mit.edu>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, Jeremy White <jwhite@codeweavers.com>,
Johannes Schindelin <Johannes.Schindelin@gmx.de>,
Jeff King <peff@peff.net>
Subject: Re: [PATCH 8/8] wrap_in_html(): process message in bulk rather than line-by-line
Date: Fri, 30 Nov 2012 14:40:10 +0100 [thread overview]
Message-ID: <50B8B73A.4060801@alum.mit.edu> (raw)
In-Reply-To: <7v7gp4p00u.fsf@alter.siamese.dyndns.org>
[-- Attachment #1: Type: text/plain, Size: 1456 bytes --]
On 11/29/2012 10:33 PM, Junio C Hamano wrote:
> Michael Haggerty <mhagger@alum.mit.edu> writes:
>
>> Now that we can xml-quote an arbitrary string in O(N), there is no
>> reason to process the message line by line. This change saves lots of
>> memory allocations and copying.
>>
>> The old code would have created invalid output for a malformed input
>> message (one that does not contain a blank line separating the header
>> from the body). The new code die()s in this situation.
>
> Given that imap-send is about sending a patch the distinction would
> not matter in practice, but isn't the difference between the two
> that the new version would not allow sending a header-only message
> without a body, while the old one allowed it?
I was thinking that the end-of-header line is a required part of an
RFC2282 email message, but I was wrong. If you squash the attached
patch onto this commit, it will handle emails without bodies correctly.
Nevertheless, the old code was even *more* broken because it added a
"</pre>" regardless of whether the separator line had been seen, and
therefore a message without an end-of-header line would come out like
Header1: foo
Header2: bar
</pre>
with no content_type line, no pre_open, and </pre> appended to the
header without a blank line in between. This is the "invalid output"
that I was referring to.
Michael
--
Michael Haggerty
mhagger@alum.mit.edu
http://softwareswirl.blogspot.com/
[-- Attachment #2: addstr-xml-quoted-addendum.diff --]
[-- Type: text/x-patch, Size: 337 bytes --]
diff --git a/imap-send.c b/imap-send.c
index eec9e35..e521e2f 100644
--- a/imap-send.c
+++ b/imap-send.c
@@ -1348,7 +1348,7 @@ static void wrap_in_html(struct strbuf *msg)
const char *body = strstr(msg->buf, "\n\n");
if (!body)
- die("malformed message");
+ return; /* Headers but no body; no wrapping needed */
body += 2;
next prev parent reply other threads:[~2012-11-30 13:40 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-25 11:08 [PATCH 0/8] Add function strbuf_addstr_xml_quoted() and more Michael Haggerty
2012-11-25 11:08 ` [PATCH 1/8] Add new function strbuf_add_xml_quoted() Michael Haggerty
2012-11-25 11:08 ` [PATCH 2/8] xml_entities(): use function strbuf_addstr_xml_quoted() Michael Haggerty
2012-11-25 11:08 ` [PATCH 3/8] lf_to_crlf(): NUL-terminate msg_data::data Michael Haggerty
2012-11-25 11:08 ` [PATCH 4/8] imap-send: store all_msgs as a strbuf Michael Haggerty
2012-11-25 11:08 ` [PATCH 5/8] imap-send: correctly report errors reading from stdin Michael Haggerty
2012-11-25 11:08 ` [PATCH 6/8] imap-send: change msg_data from storing (char *, len) to storing strbuf Michael Haggerty
2012-11-29 21:30 ` Junio C Hamano
2012-11-29 23:43 ` Jeff King
2012-11-30 13:36 ` Michael Haggerty
2012-12-02 1:48 ` Junio C Hamano
2012-12-02 6:03 ` Michael Haggerty
2012-12-03 15:06 ` Thiago Farina
2012-11-25 11:08 ` [PATCH 7/8] wrap_in_html(): use strbuf_addstr_xml_quoted() Michael Haggerty
2012-11-29 21:41 ` [PATCH 0/8] Add function strbuf_addstr_xml_quoted() and more Junio C Hamano
[not found] ` <1353841721-16269-9-git-send-email-mhagger@alum.mit.edu>
[not found] ` <7v7gp4p00u.fsf@alter.siamese.dyndns.org>
2012-11-30 13:40 ` Michael Haggerty [this message]
2012-12-02 9:25 ` [PATCH 8/8] wrap_in_html(): process message in bulk rather than line-by-line Junio C Hamano
2012-12-02 10:35 ` Michael Haggerty
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50B8B73A.4060801@alum.mit.edu \
--to=mhagger@alum.mit.edu \
--cc=Johannes.Schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jwhite@codeweavers.com \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).