Hi Sergio,
>
the term Endpoint is quite established in rest APIs and I would prefer to keep it.
I agree that is used extensively. In my experience I have seen it inconsistently. This article tries to explain what it
is
https://www.cloudflare.com/en-ca/learning/security/api/what-is-api-endpoint/ but what it seems to be describing is a resource. As I don't have a significantly better suggestion, I withdraw my objection.
>
Given that there is no normative language in the paragraph would you be ok to keep it but adding a reference to the proper specification of
how to perform an HTTP POST correctly?
That seems like a reasonable compromise. I would ask that you emphasise where this document defines further constraints
on what RFC 9110 specifies.
>
Could it be possible to use 422 Unprocessable Content instead?
If you believe that returning a 422 will allow clients to do something different than they would if they received a 400,
then I have no objection to using 422. 400 is a generic catch all for any 4XX class error, so there is nothing semantically incorrect with using 400, it just isn't very specific about the problem. If you want to attach some specific semantics to 422 within
the WHIP protocol, that can be used by the client, then that is reasonable.
>
I am concerned that we won't have a compliant implementation doing etags correctly if we don't describe the process in detail here.
> Which parts of the paragraphs are you more concerned about, and is any of the mandatory text going against the conditional request spec?
I'm concerned that I can't tell whether I just need to use an Etag to make a conditional request, as I would with any other HTTP API. I have to go
through the effort of reconciling the words in this paragraph with those in RFC9110 to know if this protocol layers on new constraints. This is made more difficult by the fact that it has four MUSTs in the paragraph and finishes with a statement that invalidates
the MUSTs.
I have attempted to reword the paragraph with this:
DM> WHIP sessions that support ICE restarts MUST return a strong ETag as per [RFC9110] Section 8.8.3 in a successful
response to a POST to the WHIP Endpoint.
DM> Successful PATCH requests to WHIP sessions that trigger a restart MUST return an updated ETag.
This rewording made me ask the question, what happens when a PATCH doesn't trigger a
restart. Then I read your response to my last concern and I realized that the protocol is suggesting that a PATCH that doesn't trigger a restart returns a 204 and does not include a Etag. I had not realized this on first read but it is directly related to
my comment that layering addition semantics onto 200 vs 204 is not advisable.
I would recommend clarifying the unusual handling of Etags with an additional sentence
like :
DM>
Successful PATCH requests to WHIP sessions that do not trigger a restart MUST not return an updated ETag.
Regarding the use of 200 vs 204 to convey two distinct server behaviors, I personally
do not like it and I think people will find it confusing. However, I cannot point you to a specification that says you must not do this. I would highly recommend emphasizing these two distinct interactions. Maybe you could create two headings, one for "WHIP
Session update with restart" and one for "WHIP Session update without restart".
I don't think I really understand the scenario well enough to suggest solutions,
but I would ask why not use a weak validator that conceptually corresponds to the session identifier and therefore could be returned unchanged when doing a PATCH that doesn't do a restart. That way a PATCH could always return a 200. Or return whatever the
client asks for using the prefer header.
> I would prefer to keep 400 for sdp parsing errors, could we
use 422 Unprocessable Content instead? The SDP is valid, but the semantics aren't.
Ok. But I would suggest you consider what the client is going to do differently when
it processes SDP parsing errors vs SDP semantic errors. Are there actually two code paths?
>
Would it be fine to remove the normative language on the second part and maybe just
state that the "WHIP clients MUST support HTTP redirection" and referencing the http specs for the proper error codes?
That seems like a reasonable compromise.
> Interoperability. The implementators of the WHIP clients are not going to be the users
of them, and they should be able to interoperate with any WHIP service., so I need to specify at least a common authentication method.
> Nothing precludes WHIP clients to add more authentication methods if they want.
There is really nothing interoperable about requiring the bearer
authentication scheme, other than the keyword in the auth header. The text states that the auth scheme MUST be "bearer". That does preclude clients adding more authentication methods.
Regards,
Darrel
From: Sergio Garcia Murillo <sergio.garcia.murillo@xxxxxxxxx>
Sent: Tuesday, October 3, 2023 6:21 AM
To: Darrel Miller <Darrel.Miller@xxxxxxxxxxxxx> Cc: ietf-http-wg@xxxxxx <ietf-http-wg@xxxxxx>; draft-ietf-wish-whip.all@xxxxxxxx <draft-ietf-wish-whip.all@xxxxxxxx>; last-call@xxxxxxxx <last-call@xxxxxxxx>; wish@xxxxxxxx <wish@xxxxxxxx> Subject: Re: [Wish] Httpdir last call review of draft-ietf-wish-whip-09 Hi Darrel,
Thank you very much for your review and comments. I will try to answer some of them inline, but probably will have to start a new thread with some of them as I expect quite a bit of discussion before getting to an agreement.
On Sun, Oct 1, 2023 at 9:48 PM Darrel Miller via Datatracker <noreply@xxxxxxxx> wrote:
While the "WHIP Endpoint" is acting as a WHIP session/resource factory, the term Endpoint is quite established in rest APIs and I would prefer to keep it.
I understand the concern about the WHIP resource, and I wouldn't mind changing it to WHIP session to avoid the naming collision with HTTP resources.
I have received comments in the opposite direction in the past about not being described enough with how the protocol operates. Also some of these texts came from early implementations doing crazy things for the HTTP POST
Given that there is no normative language in the paragraph would you be ok to keep it but adding a reference to the proper specification of how to perform an HTTP POST correctly?
I have not found the definition of the "status of the request" anywhere, but the SDP answer is definitely not a representation of the WHIP Resource/Session, so I would say it is the former.
Changing the 501 by a 405 makes sense. In case of the server supports PATCH for certain ICE operations, but not for others, sending a 400 bad request doesn't seem appropriate:
> The 400 (Bad Request) status code indicates that the server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive
request routing).
Neither 409, as the client can't really solve the conflict (as there is no conflict). Could it be possible to use 422 Unprocessable Content instead?
I am concerned that we won't have a compliant implementation doing etags correctly if we don't describe the process in detail here.
Which parts of the paragraphs are you more concerned about, and is any of the mandatory text going against the conditional request spec?
Will add it, thank you!
Yes, but also mandate that the whip server must use conditional requests if it supports ice restarts.
Not sure if I understand this in full. But let me add some clarifications:
- There is no possible failure when adding remote candidates as it just means that the ICE agent will start performing a connectivity check but does not change the status of the ICE agent. It is perfectly fine for those ice candidates
checks to fail. Moreover, an initial check doesn't preclude a failure later on.
- And ICE restart changes the state of the ICE agent, and a new username/frag must be communicated back to the client
Due to that we use 200 ok for ice restarts (with body) and 204 for trickle ice (without body).
I would prefer to keep 400 for sdp parsing errors, could we use 422 Unprocessable Content instead? The SDP is valid, but the semantics aren't.
Would it be fine to remove the normative language on the second part and maybe just state that the "WHIP clients MUST support HTTP redirection" and referencing the http specs for the proper error codes?
Interoperability. The implementators of the WHIP clients are not going to be the users of them, and they should be able to interoperate with any WHIP service., so I need to specify at least a common authentication method.
Nothing precludes WHIP clients to add more authentication methods if they want.
This was raised by other reviews too, I have a tentative change here:
Would this be better to you?
Will add them
Will change it.
Best regards
Sergio
|
-- last-call mailing list last-call@xxxxxxxx https://www.ietf.org/mailman/listinfo/last-call