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:
Daniel Stenberg 2010-07-06 23:25:32 +02:00
parent e01cc7737c
commit 915032ea02
1 changed files with 25 additions and 0 deletions

View File

@ -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, ".")) {