From: Daniel Tschlatscher <d.tschlatscher@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: Re: [pve-devel] [PATCH v2 http-server 2/2] AnyEvent: Fix #3990 - make small files uploadable
Date: Wed, 6 Jul 2022 18:09:07 +0200 [thread overview]
Message-ID: <f309d69c-584a-4f7e-8fc7-017547a0938e@proxmox.com> (raw)
In-Reply-To: <20220513134900.440420-2-m.heiserer@proxmox.com>
The GUI works without problems. Files of arbitrary size can be
uploaded without issues.
Apart from that, I mostly focused on usage via the API using curl and
Postman.
What worked as expected:
* Upload in the GUI
Tested by uploading files of sizes:
0B, 1kB, 8kB, 15kB (did not work before), 16kB, 32kB, 1MB, 1GB, 10GB
* Uploading a 8kB and a 32kB file with and without the corresponding
checksums.
* Unknown values for the "metadata" in the body (e.g. Content-
Disposition, filename, ...) fail expectedly
* Unmatching file extensions (extension of the file passed in phase 0
and file extension assigned in the filename) fail expectedly
All errors above return HTTP status 501 ("Not implemented") which I
think is rather confusing, even if they include a descriptive error
message.
I'd wager that it would be better to differentiate between malformed
multi-form data and internal server errors, and return 400 for incorrect
user inputs. This makes it much easier for anyone (that is not a
browser) to interface with this part of the API.
Below problems seem to originate in file_upload_multipart() or at least
reach this part of the code (and could therefore probably improve error
status communication for the user here):
* Using an unknown value for the "Content-Type" Http-Header or
assigning boundary differently to what is used in the body
=> Connection dies with error "empty reply from server"
* Adding an unknown "metadata" field or changing an existing one (e.g.
filename to fielname)
=> results in the same error as above
* Malforming the boundary for phase 1 (the second one in the http body)
(Seems this is parsed incorrectly?)
=> 501 wrong field `name` for file upload, expected `filename` - abort
upload
* Malforming the very last boundary
=> Connection dies, "empty reply from server".
Syslog error: "problem with client [...] Connection timed out"
I am not quite sure how much precedence fixing the errors above should
have, as even most API users will probably never encounter them.
However, I feel like that at the very least the basic error message
should be revised to no longer return 501 and to include a more
descriptive error message than just "upload failed".
With no major problems and depending on how important the (edge-)cases
above are, consider this patch
Tested-by: Daniel Tschlatscher <d.tschlatscher@proxmox.com>
next prev parent reply other threads:[~2022-07-06 16:09 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-13 13:48 [pve-devel] [PATCH v2 http-server 1/2] AnyEvent: whitespace fix Matthias Heiserer
2022-05-13 13:49 ` [pve-devel] [PATCH v2 http-server 2/2] AnyEvent: Fix #3990 - make small files uploadable Matthias Heiserer
2022-07-06 16:09 ` Daniel Tschlatscher [this message]
2022-07-12 11:32 ` Matthias Heiserer
2022-09-29 15:13 ` [pve-devel] applied: " Thomas Lamprecht
2022-09-29 15:06 ` [pve-devel] applied: [PATCH v2 http-server 1/2] AnyEvent: whitespace fix Thomas Lamprecht
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f309d69c-584a-4f7e-8fc7-017547a0938e@proxmox.com \
--to=d.tschlatscher@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal