aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/java/fi/iki/elonen/NanoHTTPD.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/java/fi/iki/elonen/NanoHTTPD.java')
-rw-r--r--core/src/main/java/fi/iki/elonen/NanoHTTPD.java12
1 files changed, 11 insertions, 1 deletions
diff --git a/core/src/main/java/fi/iki/elonen/NanoHTTPD.java b/core/src/main/java/fi/iki/elonen/NanoHTTPD.java
index d654cdb..38e023d 100644
--- a/core/src/main/java/fi/iki/elonen/NanoHTTPD.java
+++ b/core/src/main/java/fi/iki/elonen/NanoHTTPD.java
@@ -637,7 +637,7 @@ public abstract class NanoHTTPD {
}
}
- pw.print("Connection: keep-alive\r\n");
+ sendConnectionHeaderIfNotAlreadyPresent(pw, header);
if (requestMethod != Method.HEAD && chunkedTransfer) {
sendAsChunked(outputStream, pw);
@@ -651,6 +651,16 @@ public abstract class NanoHTTPD {
}
}
+ protected void sendConnectionHeaderIfNotAlreadyPresent(PrintWriter pw, Map<String, String> header) {
+ boolean connectionAlreadySent = false;
+ for (String headerName : header.keySet()) {
+ connectionAlreadySent |= headerName.equalsIgnoreCase("connection");
+ }
+ if (!connectionAlreadySent) {
+ pw.print("Connection: keep-alive\r\n");
+ }
+ }
+
private void sendAsChunked(OutputStream outputStream, PrintWriter pw) throws IOException {
pw.print("Transfer-Encoding: chunked\r\n");
pw.print("\r\n");