Skip to content

Hacer POST puede bloquear el nombre al fallar #257

@inetol

Description

@inetol

En el commit 9ec7e2c paso por encima este problema, basta con subir un paste que supere el peso permitido de la instancia y que esté presente la cabecera Transfer-Encoding:

curl https://jspaste.eu/api/document/v1 --verbose --data-binary "@/route/to/big/file" -H "transfer-encoding: chunked" -H "x-jspaste-name: myPaste"

Si el payload no se le puede identificar el tamaño tendrá que ser consumido, el problema es que llegado a ese punto ya se ha creado el registro en la base de datos, por lo que si se interrumpe..:

> POST /api/document/v1 HTTP/1.1
> Host: jspaste.eu
> Accept: */*
> transfer-encoding: chunked
> x-jspaste-name: myPaste
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
<
< HTTP/1.1 413 Payload Too Large
< content-type: application/json
< access-control-allow-origin: *
< cache-control: no-transform
< vary: Accept-Encoding
< transfer-encoding: chunked
* HTTP error before end of send, stop sending
* abort upload after having sent 5045964 bytes
<
* shutting down connection #0
{"code":1203,"message":"The document content exceeds the maximum allowed size."}

...al reintentar la subida..:

> POST /api/document/v1 HTTP/1.1
> Host: jspaste.eu
> Accept: */*
> transfer-encoding: chunked
> x-jspaste-name: myPaste
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
<
< HTTP/1.1 409 Conflict
< content-type: application/json
< access-control-allow-origin: *
< cache-control: no-transform
< vary: Accept-Encoding
< transfer-encoding: chunked
* HTTP error before end of send, stop sending
* abort upload
<
* shutting down connection #0
{"code":1201,"message":"A document with this name already exists. Choose a different name."}

De todas formas es extraño que se den las condiciones, ya que la mayoría de clientes envían Content-Length y no incluyen Transfer-Encoding, siempre se puede hacer DELETE o esperar al sweeper para que se libere el nombre.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions