Hello.

HTTP/1.1 has a rarely implemented but very useful feature that lets the
server interject with a redirect or acknowledgement before any data is
sent in a PUT, something that I would quite like to see implemented in
lftp.

This feature is described in RFC 2616 section 8.2.3.

The rough outline of how it works is that the client sends an "Expect:
100-continue" header to indicate that it's letting the server respond to
the headers, and delays sending the payload until the server responds
with a "100 Continue" or some other header like "307 Temporary Redirect"
to indicate a more suitable location.

If the server doesn't respond to the expectation within a short
timespan, the client may send the data anyway, thus assuming that the
server doesn't understand the expectation.

The reason I'd like to see the inclusion of this feature in lftp is
because we have a storage system which offers a WebDAV entrypoint which
redirects capable clients to dedicated download/upload servers instead
of routing all traffic through the control node.

To make things more fun, in this system this involves a downgrade from
HTTPS to HTTP as well.

I would be perfectly happy if this was hidden behind a setting to avoid
it from breaking existing use cases.

I took a look at how to implement this but got very lost in the
implementation of the Http state machine. If I force-add a "Expect:
100-continue" header, I end up with this and no further progress.

put: File moved: 307 Temporary Redirect (100M ->
http://localhost.localdomain:21656/public/100M?dcache-http-uuid=4c8250e9-62c0-47e0-baaf-71249db526ab)

-- 
Lars Viklund | z...@acc.umu.se
_______________________________________________
lftp-devel mailing list
lftp-devel@uniyar.ac.ru
http://univ.uniyar.ac.ru/mailman/listinfo/lftp-devel

Reply via email to