Reformat: delete trailing whitespace
[metaproxy-moved-to-github.git] / src / filter_http_file.cpp
index d036433..58ec810 100644 (file)
@@ -105,7 +105,7 @@ std::string yf::HttpFile::Rep::get_mime_type(std::string &fname)
 {
     std::string file_part = fname;
     std::string::size_type p = fname.find_last_of('/');
-    
+
     if (p != std::string::npos)
         file_part = fname.substr(p+1);
 
@@ -129,7 +129,7 @@ void yf::HttpFile::Rep::fetch_file(mp::Session &session,
                                    std::string &fname, mp::Package &package)
 {
     mp::odr o;
-    
+
     FILE *f = fopen(fname.c_str(), "rb");
     if (!f)
     {
@@ -158,17 +158,19 @@ void yf::HttpFile::Rep::fetch_file(mp::Session &session,
 
     Z_HTTP_Response *hres = gdu->u.HTTP_Response;
     hres->content_len = sz;
-    hres->content_buf = (char*) odr_malloc(o, hres->content_len);
-    if (fread(hres->content_buf, hres->content_len, 1, f) != 1)
+    if (hres->content_len > 0)
     {
-        fclose(f);
-        Z_GDU *gdu = o.create_HTTP_Response(session, req, 500);
-        package.response() = gdu;
-        return;
+        hres->content_buf = (char*) odr_malloc(o, hres->content_len);
+        if (fread(hres->content_buf, hres->content_len, 1, f) != 1)
+        {
+            fclose(f);
+            Z_GDU *gdu = o.create_HTTP_Response(session, req, 500);
+            package.response() = gdu;
+            return;
+        }
     }
-
     fclose(f);
-    
+
     std::string content_type = get_mime_type(fname);
 
     z_HTTP_header_add(o, &hres->headers,
@@ -182,7 +184,7 @@ void yf::HttpFile::Rep::fetch_uri(mp::Session &session,
     bool sane = true;
     std::string::size_type p;
     std::string path = req->path;
-    
+
     p = path.find("#");
     if (p != std::string::npos)
         path = path.erase(p);
@@ -216,7 +218,7 @@ void yf::HttpFile::Rep::fetch_uri(mp::Session &session,
     }
     package.move();
 }
-                         
+
 void yf::HttpFile::process(mp::Package &package) const
 {
     Z_GDU *gdu = package.request().get();
@@ -244,7 +246,7 @@ void mp::filter::HttpFile::configure(const xmlNode * ptr, bool test_only,
                 throw mp::filter::FilterException
                     ("Can not open mime types file " + fname);
             }
-            
+
             std::vector<std::string> args;
             while (f.getline(args))
             {
@@ -261,14 +263,14 @@ void mp::filter::HttpFile::configure(const xmlNode * ptr, bool test_only,
             {
                 if (a_node->type != XML_ELEMENT_NODE)
                     continue;
-                
+
                 if (mp::xml::is_element_mp(a_node, "documentroot"))
                     a.m_file_root = mp::xml::get_text(a_node);
                 else if (mp::xml::is_element_mp(a_node, "prefix"))
                     a.m_url_path_prefix = mp::xml::get_text(a_node);
                 else
                     throw mp::filter::FilterException
-                        ("Bad element " 
+                        ("Bad element "
                          + std::string((const char *) a_node->name)
                          + " in area section"
                             );
@@ -281,7 +283,7 @@ void mp::filter::HttpFile::configure(const xmlNode * ptr, bool test_only,
         else
         {
             throw mp::filter::FilterException
-                ("Bad element " 
+                ("Bad element "
                  + std::string((const char *) ptr->name)
                  + " in virt_db filter");
         }