From 915032ea022f356fe3c626d451c4c92b87c7d406 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 6 Jul 2010 23:25:32 +0200 Subject: [PATCH] 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. --- src/main.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/main.c b/src/main.c index 709f6206a9..7aa698505b 100644 --- a/src/main.c +++ b/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, ".")) {