Improve some header handling, at least on Solaris.
authorcantor <cantor@cb58f699-b61c-0410-a6fe-9272a202ed29>
Thu, 16 Jun 2005 23:22:44 +0000 (23:22 +0000)
committercantor <cantor@cb58f699-b61c-0410-a6fe-9272a202ed29>
Thu, 16 Jun 2005 23:22:44 +0000 (23:22 +0000)
git-svn-id: https://svn.middleware.georgetown.edu/cpp-sp/trunk@1716 cb58f699-b61c-0410-a6fe-9272a202ed29

nsapi_shib/nsapi_shib.cpp

index 465ed56..ed949b1 100644 (file)
@@ -296,23 +296,26 @@ public:
     const string& content_type="text/html",
     const saml::Iterator<header_t>& headers=EMPTY(header_t)
     ) {
-    pblock_nvinsert("Content-Type", content_type.c_str(), m_rq->srvhdrs);
-    pblock_nninsert("Content-Length", msg.length(), m_rq->srvhdrs);
-    pblock_nvinsert("Connection","close",m_rq->srvhdrs);
+    param_free(pblock_remove("content-type", m_rq->srvhdrs));
+    pblock_nvinsert("content-type", content_type.c_str(), m_rq->srvhdrs);
+    pblock_nninsert("content-length", msg.length(), m_rq->srvhdrs);
+    pblock_nvinsert("connection","close",m_rq->srvhdrs);
     while (headers.hasNext()) {
         const header_t& h=headers.next();
         pblock_nvinsert(h.first.c_str(), h.second.c_str(), m_rq->srvhdrs);
     }
     protocol_status(m_sn, m_rq, code, NULL);
+    protocol_start_response(m_sn, m_rq);
     net_write(m_sn->csd,const_cast<char*>(msg.c_str()),msg.length());
     return (void*)REQ_EXIT;
   }
   virtual void* sendRedirect(const string& url) {
-    pblock_nvinsert("Content-Type", "text/html", m_rq->srvhdrs);
-    pblock_nninsert("Content-Length", 40, m_rq->srvhdrs);
-    pblock_nvinsert("Expires", "01-Jan-1997 12:00:00 GMT", m_rq->srvhdrs);
-    pblock_nvinsert("Cache-Control", "private,no-store,no-cache", m_rq->srvhdrs);
-    pblock_nvinsert("Location", url.c_str(), m_rq->srvhdrs);
+    param_free(pblock_remove("content-type", m_rq->srvhdrs));
+    pblock_nvinsert("content-type", "text/html", m_rq->srvhdrs);
+    pblock_nninsert("content-length", 40, m_rq->srvhdrs);
+    pblock_nvinsert("expires", "01-Jan-1997 12:00:00 GMT", m_rq->srvhdrs);
+    pblock_nvinsert("cache-control", "private,no-store,no-cache", m_rq->srvhdrs);
+    pblock_nvinsert("location", url.c_str(), m_rq->srvhdrs);
     protocol_status(m_sn, m_rq, PROTOCOL_REDIRECT, "302 Please wait");
     protocol_start_response(m_sn, m_rq);
     char* msg="<HTML><BODY>Redirecting...</BODY></HTML>";