diff --git a/lib/transfer.c b/lib/transfer.c
index ab0af9f423c630a273a01c04a9f7a17df3f16e29..1609529a5daf457a4514d84b4f59a9b8697ecd4e 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -431,9 +431,21 @@ Transfer(struct connectdata *c_conn)
                     wkeepfd = writefd;
                   }
                 }
-                else
+		else
                   header = FALSE;	/* no more header to parse! */
 
+		if (417 == httpcode) {
+		  /*
+		   * we got: "417 Expectation Failed" this means:
+		   * we have made a HTTP call and our Expect Header
+		   * seems to cause a problem => abort the write operations
+		   * (or prevent them from starting
+		   */
+		  write_after_100_header = FALSE;
+		  keepon &= ~KEEP_WRITE;
+		  FD_ZERO(&wkeepfd);
+		}
+
                 /* now, only output this if the header AND body are requested:
                  */
                 writetype = CLIENTWRITE_HEADER;