From ee6a3e9057bff6e30e6deff43100bcf2bf9bfba5 Mon Sep 17 00:00:00 2001
From: ulrich
Date: Sat, 27 Mar 2021 14:32:52 +0000
Subject: [PATCH] Anpassungen am FielHandler, Stop-Ablauf verfeinert

---
 src/de/uhilger/minsrv/handler/FileHandler.java |   13 +++++++++++--
 1 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/de/uhilger/minsrv/handler/FileHandler.java b/src/de/uhilger/minsrv/handler/FileHandler.java
index 45e31c2..570e4e2 100644
--- a/src/de/uhilger/minsrv/handler/FileHandler.java
+++ b/src/de/uhilger/minsrv/handler/FileHandler.java
@@ -57,6 +57,7 @@
   public static final String ACCEPT_RANGES_HEADER = "Accept-Ranges";
   public static final String LAST_MODIFIED_DATE_HEADER = "Last-Modified";
   public static final String CONTENT_TYPE = "Content-Type";
+  public static final String CONTENT_LENGTH = "Content-Length";
 
   /* Statuscodes */
   public static final int SC_OK = 200;
@@ -110,7 +111,7 @@
       if (headers.containsKey(RANGE_HEADER)) {
         serveFileParts(e, new File(fileBase, fName));
       } else {
-        if (fName.endsWith(Server.STR_SLASH)) {
+        if (fName.length() < 1 || fName.endsWith(Server.STR_SLASH)) {
           fName += WELCOME_FILE;
         }
         serveFile(e, new File(fileBase, fName));
@@ -118,6 +119,13 @@
     }
   }
 
+  /**
+   * Den Namen der gew&uuml;nschten Datei aus der HTTP-Anfrage ermitteln
+   * 
+   * @param e das Objekt mit Methoden zur Untersuchung der Anfrage sowie zum
+   * Anfertigen und Senden der Antwort
+   * @return Name der gew&uuml;nschten Datei
+   */
   protected String getFileName(HttpExchange e) {
     String ctxPath = e.getHttpContext().getPath();
     String uriPath = e.getRequestURI().getPath();
@@ -136,6 +144,7 @@
   protected void serveFile(HttpExchange e, File file) throws IOException {
     if (file.exists()) {
       setHeaders(e, file);
+      e.getResponseHeaders().set(CONTENT_LENGTH, Long.toString(file.length()));
       e.sendResponseHeaders(SC_OK, file.length());
       if(HTTP_GET.equalsIgnoreCase(e.getRequestMethod())) {
         InputStream in = new FileInputStream(file);
@@ -354,7 +363,7 @@
    * aus Bytes, der sich aus den Bytepositionen des Beginns und Endes 
    * des Bereiches ergibt.
    */
-  class Range {
+  public class Range {
 
     private long start;
     private long end;

--
Gitblit v1.9.3