Re: Feature request: data stream upload after server response

Hans Henrik Bergan via curl-users <[email protected]>
Newsgroups gmane.comp.web.curl.general
Message-ID <CAJmy8YF5H2y9=vViD7TM55qtQRY7KZDVYqdZLiB8E6QbZmRrcQ@mail.gmail.com>
Rsync

On Mon, May 27, 2024, 17:07 fungs via curl-users <[email protected]>
wrote:

> Hey,
>
> I'm using curl (command line version) to upload a continuous data stream
> to a
> remote server like
>
>      generate_data | curl --show-error --fail --silent -T . REMOTE_URL
>
> That command generates a (PUT) request with chunked transfer encoding to
> stream
> the data. I observed that streaming large data is not a problem in a
> regular
> setup, but on some cloud providers and network topologies, the request is
> passed
> between proxies for various purposes, for instance authentication,
> geographic
> routing or load balancing. These setups often put size or time
> restrictions on
> the requests and may fail if the data is too large, either because it
> cannot be
> buffered or because the processing of such requests takes too long, even
> if only
> authorization headers are being checked.
>
> In such a scenario, I found myself writing a naive Bourne shell function
> to wait
> for the final destination server reply before sending the actual data
> stream.
>
> send() {
> data_fifo="$chunk_identifier"_data.fifo
> header_fifo="$chunk_identifier"_response.fifo
> mkfifo"$data_fifo""$header_fifo"
>
> cat"$data_fifo"|curl--show-error--fail--silent--dump-header"$header_fifo"-T."$REMOTE_URL"&
> curl_pid=$!
> response_http_code="$({ read -r line && echo $line | cut -d ' ' -f 2; } <
> "$header_fifo")"
> if[ "$response_http_code" -ne200]; then
> echo"Server response for chunk '$1' is not 200: $response_http_code"
> return1
> fi
> cat>"$data_fifo"
> wait"$curl_pid"
> rm"$data_fifo" "$header_fifo"
> }
> Basically, this emulates a functionality in curl to wait before sending a
> continuous data stream until it has gotten a first response 200 from the
> server.
> This way, all the authentication and routing has been done by involved
> proxies
> and the data, using a tiny request, before the data gets sent.
> I'd propose this as a feature flag in curl and would like to discuss it
> here.
> Best
> Johannes
>
>
> --
> Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
> Etiquette:   https://curl.se/mail/etiquette.html
>

-- 
Unsubscribe: https://lists.haxx.se/mailman/listinfo/curl-users
Etiquette:   https://curl.se/mail/etiquette.html
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.