Set status before sending headers.
authorcantor <cantor@cb58f699-b61c-0410-a6fe-9272a202ed29>
Fri, 15 Feb 2008 00:14:44 +0000 (00:14 +0000)
committercantor <cantor@cb58f699-b61c-0410-a6fe-9272a202ed29>
Fri, 15 Feb 2008 00:14:44 +0000 (00:14 +0000)
Only return non-DONE result on Apache 2+

git-svn-id: https://svn.middleware.georgetown.edu/cpp-sp/trunk@2737 cb58f699-b61c-0410-a6fe-9272a202ed29

apache/mod_apache.cpp

index 11a8106..c67b06d 100644 (file)
@@ -500,17 +500,18 @@ public:
     ap_table_add(m_req->err_headers_out, name, value);
   }
   long sendResponse(istream& in, long status) {
+    if (status != XMLTOOLING_HTTP_STATUS_OK)
+        m_req->status = status;
     ap_send_http_header(m_req);
     char buf[1024];
     while (in) {
         in.read(buf,1024);
         ap_rwrite(buf,in.gcount(),m_req);
     }
-    if (status != XMLTOOLING_HTTP_STATUS_OK) {
-        m_req->status = status;
-        if (status != XMLTOOLING_HTTP_STATUS_ERROR)
-            return status;
-    }
+#if (defined(SHIB_APACHE_20) || defined(SHIB_APACHE_22))
+    if (status != XMLTOOLING_HTTP_STATUS_OK && status != XMLTOOLING_HTTP_STATUS_ERROR)
+        return status;
+#endif
     return DONE;
   }
   long sendRedirect(const char* url) {