aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2010-07-06 23:25:32 +0200
committerDaniel Stenberg <daniel@haxx.se>2010-07-06 23:25:32 +0200
commit915032ea022f356fe3c626d451c4c92b87c7d406 (patch)
tree7fcfb89c2ed31cc182542709dc8abc9e15c08047 /src/main.c
parente01cc7737c92897fb8286e3df6392ab434cdced6 (diff)
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.
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/main.c b/src/main.c
index 709f6206a..7aa698505 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, ".")) {