OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
Matching procedure for multipart/related parameter "start" and content-id header value,

The RFC 2387 defining multipart/related doesn't say too much about the
procedure for matching the parameter "start"'s value with the value in
the content-id header, unlike what is said for matching/resolving a
cid:x@y URI to its body part by means of the content-id field.

The abnf in 2387 says

  related-param   := [ ";" "start" "=" cid ]
                        [ ";" "start-info"  "="
                           ( cid-list / value ) ]
                        [ ";" "type"  "=" type "/" subtype ]
                        ; order independent
     cid-list        := cid cid-list
     cid             := msg-id     ; c.f. [822]

and [822] said 

msg-id      =  "<" addr-spec ">"            ; Unique message id

But [2822] says

  The message identifier (msg-id) is similar in syntax to an angle-addr
   construct without the internal CFWS.

(so comments and whitespace are not allowed as they would be in

and, most importantly,

Semantically, the angle bracket characters are not part of the
   msg-id; the msg-id is what is contained between the two angle bracket

(The abnf for msg-id in [2822] differs from [822] but I don't think
those differences are relevant here.)

It is very clear what the matching procedure is for the cid scheme in
cid URIs in RFC 2392

A "cid" URL is converted to the corresponding Content-ID message
header [MIME] by removing the "cid:"; prefix, converting the % encoded
character to their equivalent US-ASCII characters, and enclosing the
remaining parts with an angle bracket pair, "<" and ">".  For
example, "cid:foo4%25foo1@bar.net"; corresponds to

     Content-ID: <foo4%25foo1@bar.net>

Reversing the process and converting URL special characters to their
% encodings produces the original cid.

So, the content-id MIME header's value needs to have angle brackets
around it according to both [822 & 2822].

So the safest matching procedure for the "start" parameter value and the
content-id value would be an "angle-bracket-insensitive" one, it seems
to me and taking [2822] seriously when it says that "Semantically, the
angle bracket characters are not part of the msg-id; the msg-id is what
is contained between the two angle bracket characters." So removing
or trailing angle brackets on the content-id value and the "start"
parameter value (if they are present), and comparing the strings
(case-sensitively) should promote interoperability and semantic

ebMS examples are not normative. But maybe the TC should at least
consider whether to issue an errata on the examples, and maybe suggest
the "angle-bracket-insensitive" comparison method for implementers to
use (not normative though).

I think that is unclear whether the angle brackets should be included in
the start parameter value, and if you are used to the CID URI procedure
from, for example, WSS SOAP with Attachment profile, then there is a
tradition for not including the angle brackets. All told, it might be
best not to 
count on them being present in the start parameter value. Unfortunately
ebMS cannot really resolve the ambiguity in the multipart/related RFC
that we normatively referenced. So an implementer's advisory might be
the best ebMS TC could do.

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]