Hadriel Kaplan wrote:
With regards to how to handle multiple body parts in any SIP message,
I believe the issue we're concerned with is how to handle body-parts
that are not for the actual context of the SIP message, in a
backwards-compatible way, right?

Sort of. 3261 already introduced the possibility for some of them - 'alert' and 'icon' bodies, as well as S/MIME.

Many implementations likely simply never bothered to consider any of that. And those that did may have used a variety of techniques to identify the parts they care about for particular purposes.

So "backwards-compatible" depends a lot of what has already been implemented in the wild, not just what the specs say.

IMO, if you read 3261 carefully, then you need to sort out most of the existing use cases based on the Content-Disposition. However there is great ambiguity about how to interpret multipart bodies themselves if they lack a C-D.

In other words, the context for bodies by default is based on their
message method type, and possibly package if the method type has packages
(SUB/NOT/PUB, and now INFO).  And since for 3261 the Content-Disposition's
default means "render" (unless C-T is app/sdp), then no C-D means render -
where "render" has different meanings based on the context too.  For

The above is a reasonable interpretation, and consistent with the body-handling draft.

MESSAGE/INVITE/BYE it's basically render to the user in some fashion; for

This certainly seems to be the intuitive interpretation and its hard to find a reason not to follow it.

package ones it's render to the package application, which effectively is
the "user" of the message.  Right?

I think we are *forced* to take this interpretation for the existing uses in order to have any sort of backward compatibility. But IMO it is a perversion of "render".

So ISTM that the body-handling draft does that.

Yes. But I think we should consider the existing uses to be "grandfathered", rather than establishing a precedent for "render" in future uses. (That point may be debatable.)

For new extensions going
forward it would be done with a Content-ID and a C-D of "by-reference" in
MIME, with a SIP header using a CID.

We have two choices that the extension can make. It can do as you say. Or it can base things on a content-disposition type. If so it will need to define what that means in the contexts it covers.

For instance some new FOOBAR method might require a body in some cases and specify:
- the C-D for *its* body is "foobar"
- or the the C-D for its body is "render", and that such body part(s?)
  should be "rendered" by carrying out some specified processing
- or it could introduce a new header, which references the body part,
  which then has a C-D of "by-reference".

*In principle* an extension could simply define a new C-D, and the processing that should occur when a part with the disposition is encountered, independent of the method it is in. That would be *relatively* safe if it was always passed with handling=optional. But that might not work out so well in practice.

An extension *header* that needs to reference a body is more constrained. Based on the body-handling draft, the body part it references can be of any C-D, but it ought to be "by-reference" unless the constructor of the message wants the same body part to be processed once according to its reference, and again according to whatever implicit processing should be done based on its disposition.

There are other considerations if one body part references another body part.

The point is that, future extensions should clearly specify how this should be done.

For older extensions it's handled by
the option tags they already define, to make sure the recipient understands
the extension and thus its additional body part's context. (I don't like
that, but that's life)  And it's only really a problem for cases where the
content-type collides with something valid for the message's context/package.

The claim that its only a problem when the content-type collides is problematic. That implies a certain algorithm for deciding how to process body parts. Not an obvious one, or one that is written down anywhere.

IMO C-D takes precedence over C-T for deciding how to process a body part. If I get a body part with a C-D of "render" and a C-T of application/SDP, then I should not process it as an offer/answer. Rather I should be looking for how to "render" it based on the definition of render for this method. If I don't know how to render an application/sdp body (quite likely) then it is just erroneous.

Now maybe my opinion is wrong. But if so, then we should define whatever rules we think there should be.

So I'm back to: this is no different for INFO.  INFO has a context, we're
adding a sub-context with Info-Package to fix collisions of same content-types
for different uses, and any SIP extension going forward uses a CID and
content-id and C-D of 'by-reference' if it's not tied to the message's context.

As Eric proposed it, the new info-packages don't depend on the INFO context, since they use CID references. Only the legacy INFO depends on the INFO context.

I think it remains an open issue if that is the way we want it.

The Info draft only needs to reference the body-handling draft, call out the
fact that INFO and its Info-Package creates a context, and a quick reminder on
what that means.  We can then pull out all the current text about bodies in the
draft, including the cid parameter and such, and move on to more interesting
things like responses and actually defining packages. :)

If the Info-Package header is to reference the body part using cid, then the draft can't avoid mentioning that.

And I think it needs to be more explicit about how body parts relate to legacy info - explaining that there is a special meaning of "render" for legacy INFO messages.

Then there is the question of what "render" means for an INFO that carries an info-package. My guess is that we don't want to allow a single INFO to have both an Info-Package *and* a legacy INFO body. So I think it will be needful to define that in a new INFO, bodies of disposition "render" (other than multipart/mixed) will be ignored.

        Thanks,
        Paul
_______________________________________________
Sip mailing list  https://www.ietf.org/mailman/listinfo/sip
This list is for NEW development of the core SIP Protocol
Use [EMAIL PROTECTED] for questions on current sip
Use [EMAIL PROTECTED] for new developments on the application of sip

Reply via email to