Skip to content

RESUMABLE: Problems with completeness in 2xx creation and append responses #3484

Description

@GrantGryczan

#3472 seems to have created a regression by removing the following text from upload creation's client specifications:

If the client received a final response with a

  • 2xx (Successful) status code and the request content contained the entire representation data, the upload is complete and the response comes from the resource targeted by the initial request processing the representation.
  • [...]

This was replaced with the following:

If the client received a final response with the Upload-Complete: ?1 header field, the upload is complete and [...].

If the client receives a 2xx successful final response with the Upload-Complete header field set to false or missing, the Location response header field points the client to the created upload resource. The client can continue appending representation data to it (Section 4.4).

[...]

In particular, if a client sends a creation request with Upload-Complete: ?1, a 2xx response with Upload-Complete missing should be treated as if the upload had been completed. In general, if the client sent Upload-Complete: ?1, then a 2xx response should mean the upload was completed. The old text (poorly) captured that, but the new text always treats Upload-Complete missing as Upload-Complete: ?0.

A similar regression occurred for upload append's client specifications. The new text no longer specifies how 2xx should be treated at all. To simplify the client implementation, I would hope for 2xx responses to an Upload-Complete: ?1 upload append request to also be considered complete. I don't want to have to special-case the response handler for upload creation to treat 2xx without Upload-Complete differently from the same for upload append.

Further, perhaps servers should be required not to use Upload-Complete: ?0 in a 2xx response to a request with Upload-Complete: ?1? That seems self-contradictory: 2xx means "I fulfilled your request", but Upload-Complete: ?0 means "I didn't complete the upload (even though you requested me to)".

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions