mirror of
https://github.com/curl/curl.git
synced 2024-11-21 01:16:58 +08:00
upload: warn users trying to upload from stdin with anyauth
Since uploading from stdin is very likely to not work with anyauth and its multi-phase probing for what authentication to actually use, alert the user about it. Multi-phase negotiate almost certainly will involve sending data and thus libcurl will need to rewind the stream to send again, and it cannot do that with stdin.
This commit is contained in:
parent
e01cc7737c
commit
915032ea02
25
src/main.c
25
src/main.c
@ -4920,6 +4920,31 @@ operate(struct Configurable *config, int argc, argv_item_t argv[])
|
||||
|
||||
}
|
||||
else if(uploadfile && stdin_upload(uploadfile)) {
|
||||
/* count to see if there are more than one auth bit set
|
||||
in the authtype field */
|
||||
int authbits = 0;
|
||||
int bitcheck = 0;
|
||||
while(bitcheck < 32) {
|
||||
if(config->authtype & (1 << bitcheck)) {
|
||||
authbits++;
|
||||
if(authbits > 1) {
|
||||
/* more than one, we're done! */
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* If the user has also selected --anyauth or --proxy-anyauth
|
||||
* we should warn him/her.
|
||||
*/
|
||||
if(config->proxyanyauth || (authbits>1)) {
|
||||
warnf(config,
|
||||
"Using --anyauth or --proxy-anyauth with upload from stdin"
|
||||
" involves a big risk of it not working. Use a temporary"
|
||||
" file or a fixed auth type instead!\n");
|
||||
}
|
||||
|
||||
SET_BINMODE(stdin);
|
||||
infd = STDIN_FILENO;
|
||||
if (curlx_strequal(uploadfile, ".")) {
|
||||
|
Loading…
Reference in New Issue
Block a user