From 67d5c0a9700d67ecb4ceee137aeeb27b683121a2 Mon Sep 17 00:00:00 2001
From: Daniel Stenberg <daniel@haxx.se>
Date: Fri, 9 Mar 2001 16:02:59 +0000
Subject: [PATCH] for HTTP/1.0 we default to non keep-alive connections, but
 when we get a 1.0-reply from a proxy we use and the Proxy-Connection:
 keep-alive header is used, we switch it on and live happily ever after

---
 lib/transfer.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/lib/transfer.c b/lib/transfer.c
index 4bc6199949..0281921662 100644
--- a/lib/transfer.c
+++ b/lib/transfer.c
@@ -367,6 +367,12 @@ Transfer(struct connectdata *c_conn)
                     return CURLE_HTTP_NOT_FOUND;
                   }
                   data->progress.httpcode = code;
+                  data->progress.httpversion = httpversion;
+                  if(httpversion == 0)
+                    /* Default action for HTTP/1.0 must be to close, unless
+                       we get one of those fancy headers that tell us the
+                       server keeps it open for us! */
+                    conn->bits.close = TRUE;
                 }
                 else {
                   header = FALSE;	/* this is not a header line */
@@ -379,6 +385,18 @@ Transfer(struct connectdata *c_conn)
                 conn->size = contentlength;
                 Curl_pgrsSetDownloadSize(data, contentlength);
               }
+              else if((httpversion == 0) &&
+                      conn->bits.httpproxy &&
+                      strnequal("Proxy-Connection: keep-alive", p,
+                                strlen("Proxy-Connection: keep-alive"))) {
+                /*
+                 * When a HTTP/1.0 reply comes when using a proxy, the
+                 * 'Proxy-Connection: keep-alive' line tells us the
+                 * connection will be kept alive for our pleasure.
+                 * Default action for 1.0 is to close.
+                 */
+                conn->bits.close = FALSE; /* don't close when done */
+              }
               else if (strnequal("Connection: close", p,
                                  strlen("Connection: close"))) {
                 /*
-- 
GitLab