Sync with 2.35.7
* maint-2.35: Git 2.35.7 Git 2.34.7 http: support CURLOPT_PROTOCOLS_STR http: prefer CURLOPT_SEEKFUNCTION to CURLOPT_IOCTLFUNCTION http-push: prefer CURLOPT_UPLOAD to CURLOPT_PUT Git 2.33.7 Git 2.32.6 Git 2.31.7 Git 2.30.8 apply: fix writing behind newly created symbolic links dir-iterator: prevent top-level symlinks without FOLLOW_SYMLINKS clone: delay picking a transport until after get_repo_path() t5619: demonstrate clone_local() with ambiguous transport
This commit is contained in:
@ -714,25 +714,23 @@ static size_t rpc_out(void *ptr, size_t eltsize,
|
||||
return avail;
|
||||
}
|
||||
|
||||
static curlioerr rpc_ioctl(CURL *handle, int cmd, void *clientp)
|
||||
static int rpc_seek(void *clientp, curl_off_t offset, int origin)
|
||||
{
|
||||
struct rpc_state *rpc = clientp;
|
||||
|
||||
switch (cmd) {
|
||||
case CURLIOCMD_NOP:
|
||||
return CURLIOE_OK;
|
||||
if (origin != SEEK_SET)
|
||||
BUG("rpc_seek only handles SEEK_SET, not %d", origin);
|
||||
|
||||
case CURLIOCMD_RESTARTREAD:
|
||||
if (rpc->initial_buffer) {
|
||||
rpc->pos = 0;
|
||||
return CURLIOE_OK;
|
||||
if (rpc->initial_buffer) {
|
||||
if (offset < 0 || offset > rpc->len) {
|
||||
error("curl seek would be outside of rpc buffer");
|
||||
return CURL_SEEKFUNC_FAIL;
|
||||
}
|
||||
error(_("unable to rewind rpc post data - try increasing http.postBuffer"));
|
||||
return CURLIOE_FAILRESTART;
|
||||
|
||||
default:
|
||||
return CURLIOE_UNKNOWNCMD;
|
||||
rpc->pos = offset;
|
||||
return CURL_SEEKFUNC_OK;
|
||||
}
|
||||
error(_("unable to rewind rpc post data - try increasing http.postBuffer"));
|
||||
return CURL_SEEKFUNC_FAIL;
|
||||
}
|
||||
|
||||
struct check_pktline_state {
|
||||
@ -952,8 +950,8 @@ retry:
|
||||
rpc->initial_buffer = 1;
|
||||
curl_easy_setopt(slot->curl, CURLOPT_READFUNCTION, rpc_out);
|
||||
curl_easy_setopt(slot->curl, CURLOPT_INFILE, rpc);
|
||||
curl_easy_setopt(slot->curl, CURLOPT_IOCTLFUNCTION, rpc_ioctl);
|
||||
curl_easy_setopt(slot->curl, CURLOPT_IOCTLDATA, rpc);
|
||||
curl_easy_setopt(slot->curl, CURLOPT_SEEKFUNCTION, rpc_seek);
|
||||
curl_easy_setopt(slot->curl, CURLOPT_SEEKDATA, rpc);
|
||||
if (options.verbosity > 1) {
|
||||
fprintf(stderr, "POST %s (chunked)\n", rpc->service_name);
|
||||
fflush(stderr);
|
||||
|
Reference in New Issue
Block a user