myserver-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[myserver-commit] [3099] Fixed different bugs and added some optimizatio


From: Giuseppe Scrivano
Subject: [myserver-commit] [3099] Fixed different bugs and added some optimizations.
Date: Sun, 24 May 2009 18:42:34 +0000

Revision: 3099
          http://svn.sv.gnu.org/viewvc/?view=rev&root=myserver&revision=3099
Author:   gscrivano
Date:     2009-05-24 18:42:33 +0000 (Sun, 24 May 2009)
Log Message:
-----------
Fixed different bugs and added some optimizations.

Modified Paths:
--------------
    trunk/myserver/include/http_handler/proxy/proxy.h
    trunk/myserver/include/protocol/http/http_headers.h
    trunk/myserver/src/http_handler/cgi/cgi.cpp
    trunk/myserver/src/http_handler/fastcgi/fastcgi.cpp
    trunk/myserver/src/http_handler/http_file/http_file.cpp
    trunk/myserver/src/http_handler/isapi/isapi.cpp
    trunk/myserver/src/http_handler/mscgi/mscgi.cpp
    trunk/myserver/src/http_handler/proxy/proxy.cpp
    trunk/myserver/src/http_handler/scgi/scgi.cpp
    trunk/myserver/src/http_handler/wincgi/wincgi.cpp
    trunk/myserver/src/protocol/http/http.cpp
    trunk/myserver/src/protocol/http/http_data_read.cpp
    trunk/myserver/src/protocol/http/http_headers.cpp

Modified: trunk/myserver/include/http_handler/proxy/proxy.h
===================================================================
--- trunk/myserver/include/http_handler/proxy/proxy.h   2009-05-24 18:42:26 UTC 
(rev 3098)
+++ trunk/myserver/include/http_handler/proxy/proxy.h   2009-05-24 18:42:33 UTC 
(rev 3099)
@@ -47,7 +47,8 @@
                    u_long initBufferSize,
                    int timeout,
                    bool useChunks = false,
-                   bool keepalive = false);
+                   bool keepalive = false,
+                   string *serverTransferEncoding = NULL);
 
   static int timeout;
 };

Modified: trunk/myserver/include/protocol/http/http_headers.h
===================================================================
--- trunk/myserver/include/protocol/http/http_headers.h 2009-05-24 18:42:26 UTC 
(rev 3098)
+++ trunk/myserver/include/protocol/http/http_headers.h 2009-05-24 18:42:33 UTC 
(rev 3099)
@@ -66,8 +66,8 @@
        static void buildDefaultHTTPResponseHeader (HttpResponseHeader*);
        static void buildDefaultHTTPRequestHeader (HttpRequestHeader*);
 
-       static void buildHTTPResponseHeader (char *, HttpResponseHeader*);
-       static void buildHTTPRequestHeader (char *, HttpRequestHeader*);
+       static u_long buildHTTPResponseHeader (char*, HttpResponseHeader*);
+       static u_long buildHTTPRequestHeader (char*, HttpRequestHeader*);
 
 protected:
   static int readReqAuthLine (HttpRequestHeader *request, 

Modified: trunk/myserver/src/http_handler/cgi/cgi.cpp
===================================================================
--- trunk/myserver/src/http_handler/cgi/cgi.cpp 2009-05-24 18:42:26 UTC (rev 
3098)
+++ trunk/myserver/src/http_handler/cgi/cgi.cpp 2009-05-24 18:42:33 UTC (rev 
3099)
@@ -550,10 +550,10 @@
         return 1;
       }
 
-      HttpHeaders::buildHTTPResponseHeader(td->buffer->getBuffer(),
-                                           &td->response);
+      u_long hdrLen = 
HttpHeaders::buildHTTPResponseHeader(td->buffer->getBuffer(),
+                                                           &td->response);
 
-      td->buffer->setLength((u_int)strlen(td->buffer->getBuffer()));
+      td->buffer->setLength(hdrLen);
 
       if (chain.getStream ()->write(td->buffer->getBuffer(),
                                     static_cast<int> (td->buffer->getLength()),

Modified: trunk/myserver/src/http_handler/fastcgi/fastcgi.cpp
===================================================================
--- trunk/myserver/src/http_handler/fastcgi/fastcgi.cpp 2009-05-24 18:42:26 UTC 
(rev 3098)
+++ trunk/myserver/src/http_handler/fastcgi/fastcgi.cpp 2009-05-24 18:42:33 UTC 
(rev 3099)
@@ -800,11 +800,11 @@
       return 0;
     }
 
-    HttpHeaders::buildHTTPResponseHeader(con->td->secondaryBuffer->getBuffer(),
-                                         &con->td->response);
+    u_long hdrLen = 
HttpHeaders::buildHTTPResponseHeader(con->td->secondaryBuffer->getBuffer(),
+                                                         &con->td->response);
 
     if(con->td->connection->socket->send(con->td->secondaryBuffer->getBuffer(),
-                                         
static_cast<int>(strlen(con->td->secondaryBuffer->getBuffer())),
+                                         hdrLen,
                                          0) == SOCKET_ERROR )
     {
       *responseCompleted = true;

Modified: trunk/myserver/src/http_handler/http_file/http_file.cpp
===================================================================
--- trunk/myserver/src/http_handler/http_file/http_file.cpp     2009-05-24 
18:42:26 UTC (rev 3098)
+++ trunk/myserver/src/http_handler/http_file/http_file.cpp     2009-05-24 
18:42:33 UTC (rev 3099)
@@ -486,10 +486,11 @@
       }
     }
  
-    HttpHeaders::buildHTTPResponseHeader(td->buffer->getBuffer(), 
-                                         &td->response);
+    u_long hdrLen = 
HttpHeaders::buildHTTPResponseHeader(td->buffer->getBuffer(), 
+                                                         &td->response);
 
-    td->buffer->setLength((u_long)strlen(td->buffer->getBuffer()));
+    td->buffer->setLength(hdrLen);
+
     if(!td->appendOutputs)
     {
       /* Send the HTTP header.  */

Modified: trunk/myserver/src/http_handler/isapi/isapi.cpp
===================================================================
--- trunk/myserver/src/http_handler/isapi/isapi.cpp     2009-05-24 18:42:26 UTC 
(rev 3098)
+++ trunk/myserver/src/http_handler/isapi/isapi.cpp     2009-05-24 18:42:33 UTC 
(rev 3099)
@@ -290,12 +290,11 @@
         else
           ConnInfo->td->response.connection.assign("Close");
         
-        HttpHeaders::buildHTTPResponseHeader(
-                 
(char*)ConnInfo->td->secondaryBuffer->getBuffer(),&(ConnInfo->td->response));
+        u_long hdrLen = HttpHeaders::buildHTTPResponseHeader 
((char*)ConnInfo->td->secondaryBuffer->getBuffer(),
+                                                              
&(ConnInfo->td->response));
   
         if(ConnInfo->connection->socket->send(
-                     (char*)ConnInfo->td->secondaryBuffer->getBuffer(),
-                     
(int)strlen((char*)ConnInfo->td->secondaryBuffer->getBuffer()), 0)==-1)
+                     (char*)ConnInfo->td->secondaryBuffer->getBuffer(), 
hdrLen, 0)==-1)
           return 0;
       }
       /*! Save the headerSent status. */

Modified: trunk/myserver/src/http_handler/mscgi/mscgi.cpp
===================================================================
--- trunk/myserver/src/http_handler/mscgi/mscgi.cpp     2009-05-24 18:42:26 UTC 
(rev 3098)
+++ trunk/myserver/src/http_handler/mscgi/mscgi.cpp     2009-05-24 18:42:33 UTC 
(rev 3099)
@@ -220,8 +220,8 @@
     char *buffer = td->secondaryBuffer->getBuffer();
     ConnectionPtr s = td->connection;
 
-    HttpHeaders::buildHTTPResponseHeader(buffer, &(td->response));
-    if(s->socket->send(buffer, (int)strlen(buffer), 0) == SOCKET_ERROR)
+    u_long hdrLen = HttpHeaders::buildHTTPResponseHeader(buffer, 
&(td->response));
+    if(s->socket->send(buffer, hdrLen, 0) == SOCKET_ERROR)
       return 1;
   }
 

Modified: trunk/myserver/src/http_handler/proxy/proxy.cpp
===================================================================
--- trunk/myserver/src/http_handler/proxy/proxy.cpp     2009-05-24 18:42:26 UTC 
(rev 3098)
+++ trunk/myserver/src/http_handler/proxy/proxy.cpp     2009-05-24 18:42:33 UTC 
(rev 3099)
@@ -85,8 +85,8 @@
 
   req.setValue ("Host", host.str ().c_str ());
 
-       HttpHeaders::buildHTTPRequestHeader (td->secondaryBuffer->getBuffer (),
-                                       &req);
+       u_long hdrLen = HttpHeaders::buildHTTPRequestHeader 
(td->secondaryBuffer->getBuffer (),
+                                                       &req);
 
   if (sock.connect (destUrl.getHost ().c_str (), destUrl.getPort ()))
     return td->http->raiseHTTPError (500);
@@ -98,8 +98,7 @@
       return td->http->raiseHTTPError (500);
     }
 
-  if (sock.write (td->secondaryBuffer->getBuffer (),
-                  strlen (td->secondaryBuffer->getBuffer ()), &nbw))
+  if (sock.write (td->secondaryBuffer->getBuffer (), hdrLen, &nbw))
     {
       sock.close ();
       return td->http->raiseHTTPError (500);
@@ -174,15 +173,25 @@
   else
     td->response.setValue ("Via", via);
 
+  string transferEncoding;
+  bool hasTransferEncoding = false;
+  tmp = td->response.getValue ("Transfer-Encoding", NULL);
+  if (tmp)
+    {
+      hasTransferEncoding = false;
+      transferEncoding.assign (*tmp);
+    }
+  
+
   if (useChunks)
     td->response.setValue ("Transfer-Encoding", "chunked");
 
 
-  HttpHeaders::buildHTTPResponseHeader (td->buffer->getBuffer (),
-                                        &td->response);
+  u_long hdrLen = HttpHeaders::buildHTTPResponseHeader (td->buffer->getBuffer 
(),
+                                                        &td->response);
 
   if (out.getStream ()->write (td->buffer->getBuffer (),
-                               strlen (td->buffer->getBuffer ()),
+                               hdrLen,
                                &nbw))
     return 0;
 
@@ -198,7 +207,8 @@
                      read - headerLength,
                      timeout,
                      useChunks,
-                     keepalive);
+                     keepalive,
+                     hasTransferEncoding ? &transferEncoding : NULL);
 
   if (ret != -1)
     td->sentData += ret;
@@ -236,6 +246,8 @@
  *\param useChunks Use chunked transfer encoding
  *with the client.
  *\param keepalive The connection is keep-alive.
+ *\param serverTransferEncoding Transfer-Encoding
+ *used by the server.
  *
  *\return -1 on error.
  *\return Otherwise the number of bytes transmitted.
@@ -248,18 +260,18 @@
                         u_long initBufferSize,
                         int timeout,
                         bool useChunks,
-                        bool keepalive)
+                        bool keepalive,
+                        string *serverTransferEncoding)
 {
-  u_long contentLength = -1;
+  u_long contentLength = 0;
 
   u_long nbr = 0, nbw = 0, length = 0, inPos = 0;
   u_long bufferDataSize = 0;
   u_long written = 0;
 
-  HttpResponseHeader::Entry *encoding = res->other.get ("Transfer-Encoding");
 
   /* Only the chunked transfer encoding is supported.  */
-  if(encoding && !encoding->value->compare("chunked"))
+  if(serverTransferEncoding && serverTransferEncoding->compare("chunked"))
     return -1;
 
   if (res->contentLength.length ())
@@ -276,9 +288,9 @@
                     : td->buffer->getRealLength() - 1 ) - td->nHeaderChars;
 
   /* If it is specified a transfer encoding read data using it.  */
-  if(encoding)
+  if(serverTransferEncoding)
   {
-    if(!encoding->value->compare("chunked"))
+    if(!serverTransferEncoding->compare("chunked"))
     {
       for (;;)
         {
@@ -294,7 +306,7 @@
                                                  1))
             return -1;
 
-          if (nbr == 0)
+          if (!nbr)
             break;
 
           if (HttpDataHandler::appendDataToHTTPChannel (td,
@@ -314,24 +326,31 @@
   else for(;;)
   {
 
+    u_long len = td->buffer->getRealLength() - 1;
+
+    if (contentLength && length < len)
+      len = length;
+
+    if (len == 0)
+      break;
+
     if(HttpDataRead::readContiguousPrimitivePostData (initBuffer,
                                                       &inPos,
                                                       initBufferSize,
                                                       client,
                                                       td->buffer->getBuffer(),
-                                                      
td->buffer->getRealLength() - 1,
+                                                      len,
                                                       &nbr,
                                                       timeout))
     {
       return -1;
     }
 
-    if(nbr <= length)
+    if (contentLength == 0 && nbr == 0)
+      break;
+
+    if (length)
       length -= nbr;
-    else
-    {
-      return -1;
-    }
 
     if (nbr && HttpDataHandler::appendDataToHTTPChannel (td,
                                                          td->buffer->getBuffer 
(),
@@ -344,7 +363,7 @@
 
     written += nbr;
 
-    if(!length)
+    if(contentLength && length == 0)
       break;
   }
 

Modified: trunk/myserver/src/http_handler/scgi/scgi.cpp
===================================================================
--- trunk/myserver/src/http_handler/scgi/scgi.cpp       2009-05-24 18:42:26 UTC 
(rev 3098)
+++ trunk/myserver/src/http_handler/scgi/scgi.cpp       2009-05-24 18:42:33 UTC 
(rev 3099)
@@ -295,11 +295,10 @@
                                                  &td->response, 
                                                  &(td->nBytesToRead));
     }
-    HttpHeaders::buildHTTPResponseHeader(td->buffer->getBuffer(),
-                                         &td->response);
+    u_long hdrLen = 
HttpHeaders::buildHTTPResponseHeader(td->buffer->getBuffer(),
+                                                         &td->response);
     
-    if(chain->write(td->buffer->getBuffer(), strlen(td->buffer->getBuffer()),
-                    &nbw))
+    if(chain->write(td->buffer->getBuffer(), hdrLen, &nbw))
       return -1;
   }
 

Modified: trunk/myserver/src/http_handler/wincgi/wincgi.cpp
===================================================================
--- trunk/myserver/src/http_handler/wincgi/wincgi.cpp   2009-05-24 18:42:26 UTC 
(rev 3098)
+++ trunk/myserver/src/http_handler/wincgi/wincgi.cpp   2009-05-24 18:42:33 UTC 
(rev 3099)
@@ -373,10 +373,10 @@
     /*!
      *Send the header if it is not appending.
      */
-    HttpHeaders::buildHTTPResponseHeader(td->buffer->getBuffer(),
-                                          &td->response);
+    u_long hdrLen = 
HttpHeaders::buildHTTPResponseHeader(td->buffer->getBuffer(),
+                                                         &td->response);
     if(chain.getStream ()->write((const char*)td->buffer->getBuffer(),
-                                 (int)strlen((const 
char*)td->buffer->getBuffer()), 
+                                 hdrLen,
                                  &nbw2))
     {
       OutFileHandle.close();
@@ -411,9 +411,10 @@
       chain.clearAllFilters();
       return 1;
     }
-    
+
     td->outputData.writeToFile((char*)(buffer + headerSize),
-                               nBytesRead - headerSize,&nbw2);
+                               nBytesRead - headerSize,
+                               &nbw2);
     nbw += nbw2;
   }
 

Modified: trunk/myserver/src/protocol/http/http.cpp
===================================================================
--- trunk/myserver/src/protocol/http/http.cpp   2009-05-24 18:42:26 UTC (rev 
3098)
+++ trunk/myserver/src/protocol/http/http.cpp   2009-05-24 18:42:33 UTC (rev 
3099)
@@ -1530,11 +1530,10 @@
         td->response.contentLength.assign(size.str());
       }
     }
-    HttpHeaders::buildHTTPResponseHeader(td->buffer->getBuffer(),
-                                         &td->response);
-    if(td->connection->socket->send(td->buffer->getBuffer(),
-                                   (u_long)strlen(td->buffer->getBuffer()), 0)
-       == -1)
+    u_long hdrLen = 
HttpHeaders::buildHTTPResponseHeader(td->buffer->getBuffer(),
+                                                         &td->response);
+
+    if(td->connection->socket->send(td->buffer->getBuffer(), hdrLen, 0) == -1)
       return 0;
 
     if(errorBodyLength && 
(td->connection->socket->send(errorBodyMessage.str().c_str(),

Modified: trunk/myserver/src/protocol/http/http_data_read.cpp
===================================================================
--- trunk/myserver/src/protocol/http/http_data_read.cpp 2009-05-24 18:42:26 UTC 
(rev 3098)
+++ trunk/myserver/src/protocol/http/http_data_read.cpp 2009-05-24 18:42:33 UTC 
(rev 3099)
@@ -68,7 +68,6 @@
                                                   u_long timeout)
 {
   int ret;
-  u_long nbtrSocket = 0;
   *nbr = 0;
   if(inBufferSize - *inBufferPos)
   {
@@ -83,13 +82,8 @@
   if(outBufferSize == *nbr)
     return 0;
 
-  nbtrSocket = inSocket->bytesToRead();
+  ret = inSocket->recv(outBuffer + *nbr,  outBufferSize - *nbr, 0, timeout);
 
-  if(!nbtrSocket)
-    return 0;
-
-  ret = inSocket->recv(outBuffer + *nbr,  min(nbtrSocket, outBufferSize - 
*nbr), 0, timeout);
-
   if(ret == -1)
     return -1;
 
@@ -211,7 +205,10 @@
       if(nbw != nbr)
         return -1;
 
-      *outNbr += nbw;
+      if (out)
+        *outNbr += nbw;
+      else
+        *outNbr += nbr;
 
       /* Read final chunk \r\n.  */
       if(readContiguousPrimitivePostData(inBuffer,
@@ -243,7 +240,7 @@
  */
 int HttpDataRead::readPostData(HttpThreadContext* td, int* httpRetCode)
 {
-  int contentLength = -1;
+  int contentLength = 0;
 
   u_long nbw = 0;
   u_long bufferDataSize = 0;

Modified: trunk/myserver/src/protocol/http/http_headers.cpp
===================================================================
--- trunk/myserver/src/protocol/http/http_headers.cpp   2009-05-24 18:42:26 UTC 
(rev 3098)
+++ trunk/myserver/src/protocol/http/http_headers.cpp   2009-05-24 18:42:33 UTC 
(rev 3099)
@@ -41,9 +41,11 @@
  *Builds an HTTP header string starting from an HttpResponseHeader structure.
  *\param str The buffer where write the HTTP header.
  *\param response the HttpResponseHeader where the HTTP data is.
+ *
+ *\return The number of bytes written to STR.
  */
-void HttpHeaders::buildHTTPResponseHeader(char *str, 
-                                          HttpResponseHeader* response)
+u_long HttpHeaders::buildHTTPResponseHeader (char *str, 
+                                             HttpResponseHeader* response)
 {
   /*
    *Here we build the HTTP response header.
@@ -51,234 +53,248 @@
    *Every directive ends with a \r\n sequence.
    */
   char *pos = str;
-  const int MAX = MYSERVER_KB(8);
-  if(response->httpStatus != 200)
+  const int MAX = MYSERVER_KB (8);
+  if (response->httpStatus != 200)
   {
-    if(response->errorType.length() == 0)
+    if (response->errorType.length () == 0)
     {
-      HttpErrors::getErrorMessage(response->httpStatus, response->errorType);
+      HttpErrors::getErrorMessage (response->httpStatus, response->errorType);
     }
-    pos += sprintf(str, "%s %i %s\r\nStatus: %s\r\n", response->ver.c_str(),
-            response->httpStatus, response->errorType.c_str(), 
-            response->errorType.c_str() );
+    pos += sprintf (str, "%s %i %s\r\nStatus: %s\r\n", response->ver.c_str (),
+                    response->httpStatus, response->errorType.c_str (), 
+                    response->errorType.c_str () );
   }
   else
-    pos += sprintf(str,"%s 200 OK\r\n",response->ver.c_str());
+    pos += sprintf (str,"%s 200 OK\r\n",response->ver.c_str ());
   
-  if(response->serverName.length())
-  {
-    pos += myserver_strlcpy(pos, "Server: ", MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, response->serverName.c_str(), 
MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, "\r\n", MAX-(long)(pos-str));
-  }
+  if (response->serverName.length ())
+    {
+      pos += myserver_strlcpy (pos, "Server: ", MAX-(long)(pos-str));
+      pos += myserver_strlcpy (pos, response->serverName.c_str (), 
MAX-(long)(pos-str));
+      pos += myserver_strlcpy (pos, "\r\n", MAX-(long)(pos-str));
+    }
   else
-  {
-    pos += myserver_strlcpy(pos, "Server: GNU MyServer ", MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, MYSERVER_VERSION,  MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, "\r\n", MAX-(long)(pos-str));
-  }
+    {
+      pos += myserver_strlcpy (pos, "Server: GNU MyServer ", 
MAX-(long)(pos-str));
+      pos += myserver_strlcpy (pos, MYSERVER_VERSION,  MAX-(long)(pos-str));
+      pos += myserver_strlcpy (pos, "\r\n", MAX-(long)(pos-str));
+    }
 
-  if(response->lastModified.length())
-  {
-    pos += myserver_strlcpy(pos,"Last-Modified: ", MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, response->lastModified.c_str(), 
-                            MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos,"\r\n", MAX-(long)(pos-str));
-  }
-  if(response->connection.length())
-  {
-    pos += myserver_strlcpy(pos,"Connection: ", MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, response->connection.c_str(), 
-                            MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, "\r\n", MAX-(long)(pos-str));
-  }
+  if (response->lastModified.length ())
+    {
+      pos += myserver_strlcpy (pos,"Last-Modified: ", MAX-(long)(pos-str));
+      pos += myserver_strlcpy (pos, response->lastModified.c_str (), 
+                               MAX-(long)(pos-str));
+      pos += myserver_strlcpy (pos,"\r\n", MAX-(long)(pos-str));
+    }
+
+  if (response->connection.length ())
+    {
+      pos += myserver_strlcpy (pos,"Connection: ", MAX-(long)(pos-str));
+      pos += myserver_strlcpy (pos, response->connection.c_str (), 
+                             MAX-(long)(pos-str));
+      pos += myserver_strlcpy (pos, "\r\n", MAX-(long)(pos-str));
+    }
   else
-  {
-    pos += myserver_strlcpy(pos, "Connection: Close\r\n", MAX-(long)(pos-str));
-  }
-  if(response->contentLength.length())
-  {
-    /*
-    *Do not specify the Content-Length field if it is used
-    *the chunked Transfer-Encoding.
-    */
-    HttpResponseHeader::Entry *e = response->other.get("Transfer-Encoding");
+    {
+      pos += myserver_strlcpy (pos, "Connection: Close\r\n", 
MAX-(long)(pos-str));
+    }
 
-    if(!e || (e && e->value->find("chunked",0) == string::npos ))
+  if (response->contentLength.length ())
     {
-      pos += myserver_strlcpy(pos, "Content-Length: ", MAX-(long)(pos-str));
-      pos += myserver_strlcpy(pos, response->contentLength.c_str(), 
MAX-(long)(pos-str));
-      pos += myserver_strlcpy(pos, "\r\n", MAX-(long)(pos-str));
+      /*
+       *Do not specify the Content-Length field if it is used
+       *the chunked Transfer-Encoding.
+       */
+      HttpResponseHeader::Entry *e = response->other.get ("Transfer-Encoding");
+
+      if (!e || (e && e->value->find ("chunked", 0) == string::npos ))
+        {
+          pos += myserver_strlcpy (pos, "Content-Length: ", 
MAX-(long)(pos-str));
+          pos += myserver_strlcpy (pos, response->contentLength.c_str (), 
MAX-(long)(pos-str));
+          pos += myserver_strlcpy (pos, "\r\n", MAX-(long)(pos-str));
+        }
     }
-  }
-  if(response->cookie.length())
-  {
-    string cookie;
-    const char *token = response->cookie.c_str();
-    int max = response->cookie.length();
-    while(token)
+
+  if (response->cookie.length ())
     {
-      int len = getCharInString(token, "\n", max);
-      if(len == -1 || *token=='\n')
+      string cookie;
+      const char *token = response->cookie.c_str ();
+      int max = response->cookie.length ();
+      while (token)
+        {
+          int len = getCharInString (token, "\n", max);
+          if (len == -1 || *token=='\n')
         break;
-      cookie.assign("Set-Cookie: ");
-      cookie.append(token, len);
-      cookie.append("\r\n");  
-      pos += myserver_strlcpy(pos, cookie.c_str(), MAX-(long)(pos-str));  
-      token+=len+1;
+          cookie.assign ("Set-Cookie: ");
+          cookie.append (token, len);
+          cookie.append ("\r\n");  
+          pos += myserver_strlcpy (pos, cookie.c_str (), MAX-(long)(pos-str)); 
 
+          token += len + 1;
+        }
     }
-  }
-  if(response->mimeVer.length())
-  {
-    pos += myserver_strlcpy(pos, "MIME-Version: ", MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, response->mimeVer.c_str(), 
MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, "\r\n", MAX-(long)(pos-str));
-  }
-  if(response->contentType.length())
-  {
-    pos += myserver_strlcpy(pos, "Content-Type: ", MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, response->contentType.c_str(), 
MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, "\r\n", MAX-(long)(pos-str));
-  }
-  if(response->date.length())
-  {
-    pos += myserver_strlcpy(pos, "Date: ", MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, response->date.c_str(), MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, "\r\n", MAX-(long)(pos-str));
-  }
-  if(response->dateExp.length())
-  {
-    pos += myserver_strlcpy(pos, "Expires: ", MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, response->dateExp.c_str(), 
MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, "\r\n", MAX-(long)(pos-str));
-  }
-  if(response->auth.length())
-  {
-    pos += myserver_strlcpy(pos, "WWW-Authenticate: ", MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, response->auth.c_str(), MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, "\r\n", MAX-(long)(pos-str));
-  }
-  
-  if(response->location.length())
-  {
-    pos += myserver_strlcpy(pos, "Location: ", MAX - (long)(pos - str));
-    pos += myserver_strlcpy(pos, response->location.c_str(), 
-                            MAX - (long)(pos-str));
-    pos += myserver_strlcpy(pos, "\r\n", MAX - (long)(pos - str));
-  }
 
-  if(response->other.size())
-  {
-    HashMap<string, HttpResponseHeader::Entry*>::Iterator it = 
-      response->other.begin();
-    for(; it != response->other.end(); it++)
+  if (response->mimeVer.length ())
     {
-      HttpResponseHeader::Entry *e = *it;
-      if(e)
+      pos += myserver_strlcpy (pos, "MIME-Version: ", MAX-(long)(pos-str));
+      pos += myserver_strlcpy (pos, response->mimeVer.c_str (), 
MAX-(long)(pos-str));
+      pos += myserver_strlcpy (pos, "\r\n", MAX-(long)(pos-str));
+    }
+
+  if (response->contentType.length ())
+    {
+      pos += myserver_strlcpy (pos, "Content-Type: ", MAX-(long)(pos-str));
+      pos += myserver_strlcpy (pos, response->contentType.c_str (), 
MAX-(long)(pos-str));
+      pos += myserver_strlcpy (pos, "\r\n", MAX-(long)(pos-str));
+    }
+
+  if (response->date.length ())
+    {
+      pos += myserver_strlcpy(pos, "Date: ", MAX-(long)(pos-str));
+      pos += myserver_strlcpy(pos, response->date.c_str (), 
MAX-(long)(pos-str));
+      pos += myserver_strlcpy(pos, "\r\n", MAX-(long)(pos-str));
+    }
+
+  if (response->dateExp.length ())
+    {
+      pos += myserver_strlcpy (pos, "Expires: ", MAX-(long)(pos-str));
+      pos += myserver_strlcpy (pos, response->dateExp.c_str (), 
MAX-(long)(pos-str));
+      pos += myserver_strlcpy (pos, "\r\n", MAX-(long)(pos-str));
+    }
+
+  if (response->auth.length ())
+    {
+      pos += myserver_strlcpy(pos, "WWW-Authenticate: ", MAX-(long)(pos-str));
+      pos += myserver_strlcpy(pos, response->auth.c_str (), 
MAX-(long)(pos-str));
+      pos += myserver_strlcpy(pos, "\r\n", MAX-(long)(pos-str));
+    }
+
+  if (response->location.length ())
+    {
+      pos += myserver_strlcpy (pos, "Location: ", MAX - (long)(pos - str));
+      pos += myserver_strlcpy (pos, response->location.c_str (), 
+                               MAX - (long)(pos-str));
+      pos += myserver_strlcpy (pos, "\r\n", MAX - (long)(pos - str));
+    }
+
+  if (response->other.size ())
+    {
+      HashMap<string, HttpResponseHeader::Entry*>::Iterator it = 
+        response->other.begin();
+    for (; it != response->other.end(); it++)
       {
-        pos += myserver_strlcpy(pos, e->name->c_str(), MAX-(long)(pos-str));
-        pos += myserver_strlcpy(pos, ": ", MAX-(long)(pos-str));
-        pos += myserver_strlcpy(pos, e->value->c_str(), MAX-(long)(pos-str));
-        pos += myserver_strlcpy(pos, "\r\n", MAX-(long)(pos-str));
+        HttpResponseHeader::Entry *e = *it;
+        if (e)
+          {
+            pos += myserver_strlcpy (pos, e->name->c_str (), 
MAX-(long)(pos-str));
+            pos += myserver_strlcpy (pos, ": ", MAX-(long)(pos-str));
+            pos += myserver_strlcpy (pos, e->value->c_str (), 
MAX-(long)(pos-str));
+            pos += myserver_strlcpy (pos, "\r\n", MAX-(long)(pos-str));
+          }
       }
-      
     }
-  }
 
   /*
    *MyServer supports the bytes range.
    */
-  pos += myserver_strlcpy(pos, "Accept-Ranges: bytes\r\n", 
MAX-(long)(pos-str));
+  pos += myserver_strlcpy (pos, "Accept-Ranges: bytes\r\n", 
MAX-(long)(pos-str));
   
   /*
    *The HTTP header ends with a \r\n sequence.
    */
-  pos += myserver_strlcpy(pos, "\r\n\0\0\0\0\0", MAX-(long)(pos-str));
+  pos += myserver_strlcpy (pos, "\r\n\0\0\0", MAX-(long)(pos-str));
+
+  return (pos - str);
 }
 
 /*!
  *Builds an HTTP header string starting from an HttpRequestHeader structure.
  *\param str The buffer where write the HTTP header.
  *\param request the HttpRequestHeader where the HTTP data is.
+ *
+ *\return The number of bytes written to STR.
  */
-void HttpHeaders::buildHTTPRequestHeader(char * str,HttpRequestHeader* request)
+u_long HttpHeaders::buildHTTPRequestHeader (char * str,HttpRequestHeader* 
request)
 {
   char *pos = str;
   const int MAX = MYSERVER_KB(8);
 
   /* First line.  */
-  pos += myserver_strlcpy(pos, request->cmd.c_str(), MAX-(long)(pos-str));
-  pos += myserver_strlcpy(pos, " ", MAX-(long)(pos-str));
-  pos += myserver_strlcpy(pos, request->uri.c_str(), MAX-(long)(pos-str));
-  pos += myserver_strlcpy(pos, " ", MAX-(long)(pos-str));
-  if(request->uriOpts.length() > 0)
+  pos += myserver_strlcpy (pos, request->cmd.c_str (), MAX-(long)(pos-str));
+  pos += myserver_strlcpy (pos, " ", MAX-(long)(pos-str));
+  pos += myserver_strlcpy (pos, request->uri.c_str (), MAX-(long)(pos-str));
+  pos += myserver_strlcpy (pos, " ", MAX-(long)(pos-str));
+
+  if (request->uriOpts.length () > 0)
   {
-    pos += myserver_strlcpy(pos, "?", MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, request->uriOpts.c_str(), 
MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, " ", MAX-(long)(pos-str));
+    pos += myserver_strlcpy (pos, "?", MAX-(long)(pos-str));
+    pos += myserver_strlcpy (pos, request->uriOpts.c_str (), 
MAX-(long)(pos-str));
+    pos += myserver_strlcpy (pos, " ", MAX-(long)(pos-str));
 
   }
-  pos += myserver_strlcpy(pos, request->ver.c_str(), MAX-(long)(pos-str));
-  pos += myserver_strlcpy(pos, "\r\n", MAX-(long)(pos-str));
+
+  pos += myserver_strlcpy (pos, request->ver.c_str (), MAX-(long)(pos-str));
+  pos += myserver_strlcpy (pos, "\r\n", MAX-(long)(pos-str));
   
   /* Authorization.  */
-  if(request->auth.length() > 0)
+  if (request->auth.length () > 0)
   {
-    pos += myserver_strlcpy(pos, "Authorization: ", MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, request->auth.c_str(), MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, "\r\n", MAX-(long)(pos-str));
+    pos += myserver_strlcpy (pos, "Authorization: ", MAX-(long)(pos-str));
+    pos += myserver_strlcpy (pos, request->auth.c_str (), MAX-(long)(pos-str));
+    pos += myserver_strlcpy (pos, "\r\n", MAX-(long)(pos-str));
   }
 
   /* Content-Length.  */
-  if(request->contentLength.length() > 0)
+  if (request->contentLength.length () > 0)
   {
-    pos += myserver_strlcpy(pos, "Content-Length: ", MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, request->contentLength.c_str(), 
MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, "\r\n", MAX-(long)(pos-str));
+    pos += myserver_strlcpy (pos, "Content-Length: ", MAX-(long)(pos-str));
+    pos += myserver_strlcpy (pos, request->contentLength.c_str (), 
MAX-(long)(pos-str));
+    pos += myserver_strlcpy (pos, "\r\n", MAX-(long)(pos-str));
   }
 
   /* Range.  */
-  if(request->rangeType.length() > 0)
+  if (request->rangeType.length () > 0)
   {
     char buffer[12];
-    pos += myserver_strlcpy(pos, "Range: ", MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, request->rangeType.c_str(), 
MAX-(long)(pos-str));
-    pos += myserver_strlcpy(pos, " ", MAX-(long)(pos-str));
+    pos += myserver_strlcpy (pos, "Range: ", MAX-(long)(pos-str));
+    pos += myserver_strlcpy (pos, request->rangeType.c_str (), 
MAX-(long)(pos-str));
+    pos += myserver_strlcpy (pos, " ", MAX-(long)(pos-str));
 
-    if(request->rangeByteBegin != (u_long)-1)
+    if (request->rangeByteBegin != (u_long)-1)
     {
       sprintf(buffer, "%lu", request->rangeByteBegin);
-      pos += myserver_strlcpy(pos, buffer, MAX-(long)(pos-str));
+      pos += myserver_strlcpy (pos, buffer, MAX-(long)(pos-str));
     }
 
-    pos += myserver_strlcpy(pos, "-", MAX-(long)(pos-str));
+    pos += myserver_strlcpy (pos, "-", MAX-(long)(pos-str));
 
-    if(request->rangeByteEnd != (u_long)-1)
+    if (request->rangeByteEnd != (u_long)-1)
     {
       sprintf(buffer, "%lu", request->rangeByteEnd);
-      pos += myserver_strlcpy(pos, buffer, MAX-(long)(pos-str));
+      pos += myserver_strlcpy (pos, buffer, MAX-(long)(pos-str));
     }
 
-    pos += myserver_strlcpy(pos, "\r\n", MAX-(long)(pos-str));
+    pos += myserver_strlcpy (pos, "\r\n", MAX-(long)(pos-str));
   }
 
-  if(request->other.size())
+  if (request->other.size())
   {
     HashMap<string, HttpRequestHeader::Entry*>::Iterator it = 
       request->other.begin();
     for(; it != request->other.end(); it++)
     {
       HttpRequestHeader::Entry *e = *it;
-      if(e)
+      if (e)
       {
-        pos += myserver_strlcpy(pos, e->name->c_str(), MAX-(long)(pos-str));
-        pos += myserver_strlcpy(pos, ": ", MAX-(long)(pos-str));
-        pos += myserver_strlcpy(pos, e->value->c_str(), MAX-(long)(pos-str));
-        pos += myserver_strlcpy(pos, "\r\n", MAX-(long)(pos-str));
+        pos += myserver_strlcpy (pos, e->name->c_str (), MAX-(long)(pos-str));
+        pos += myserver_strlcpy (pos, ": ", MAX-(long)(pos-str));
+        pos += myserver_strlcpy (pos, e->value->c_str (), MAX-(long)(pos-str));
+        pos += myserver_strlcpy (pos, "\r\n", MAX-(long)(pos-str));
       }
     }
   }
-  pos += myserver_strlcpy(pos, "\r\n", MAX-(long)(pos-str));
+  pos += myserver_strlcpy (pos, "\r\n\0\0\0", MAX-(long)(pos-str));
+  return (pos - str);
 }
 
 
@@ -356,16 +372,16 @@
   u_long nLinechars = 0;
   u_long nLines = 0;
 
-  if(res == 0)
+  if (res == 0)
     return 0;
   /*
    *Count the number of lines in the header.
    */
   for(i = 0; res[i]; i++)
   {
-    if(res[i]=='\n')
+    if (res[i]=='\n')
     {
-      if((res[i+2] == '\n') || (res[i+1] == '\0') || (res[i+1] == '\n'))
+      if ((res[i+2] == '\n') || (res[i+1] == '\0') || (res[i+1] == '\n'))
         break;
       nLines++;
     }
@@ -375,7 +391,7 @@
        *If a line contains more than 4160 characters we consider the 
        *header invalid.
        */
-      if(nLinechars >= 4160)
+      if (nLinechars >= 4160)
           return 0;
         nLinechars++;
     }
@@ -454,14 +470,14 @@
   validRequest = validHTTPRequest(input, inputSize, &nLines, &maxTotchars);
 
   /* Invalid header.  */
-  if(validRequest!=200)
+  if (validRequest!=200)
   {
     /* Incomplete header.  */
-    if(validRequest==-1)
+    if (validRequest==-1)
       return -1;
     /* Keep trace of first line for logging. */
     tokenOff = getEndLine(input, HTTP_REQUEST_URI_DIM);
-    if(tokenOff > 0)
+    if (tokenOff > 0)
       request->uri.assign( input, min(HTTP_REQUEST_URI_DIM, tokenOff) );
     else
       request->uri.assign(input, HTTP_REQUEST_URI_DIM );
@@ -471,11 +487,11 @@
   /* Get the first token, this is the HTTP command.*/
   tokenOff = getCharInString(token, cmdSeps, HTTP_REQUEST_CMD_DIM);
   
-  if(tokenOff == -1)
+  if (tokenOff == -1)
   {
     /* Keep trace of first line for logging.  */
     tokenOff = getEndLine(token, HTTP_REQUEST_URI_DIM);
-    if(tokenOff > 0)
+    if (tokenOff > 0)
       request->uri.assign(input, min(HTTP_REQUEST_URI_DIM, tokenOff) );
     else
       request->uri.assign(input, HTTP_REQUEST_URI_DIM );
@@ -483,22 +499,22 @@
   
   do
   {
-    if(tokenOff== -1 )
+    if (tokenOff== -1 )
       return 400;
     
     /* Copy the HTTP field(this is the command if we are on the first line).  
*/
-    myserver_strlcpy(command, token, min(commandSize, tokenOff + 1) );
+    myserver_strlcpy (command, token, min(commandSize, tokenOff + 1) );
   
     token += tokenOff;
     
-    if(*token == ':')
+    if (*token == ':')
       token++;
     while(*token == ' ')
       token++;
     nLineControlled++;
     lineControlled = 0;
 
-    if(nLineControlled == 1)
+    if (nLineControlled == 1)
     {
       int containOpts = 0;
       u_long lenToken = tokenOff;
@@ -513,23 +529,23 @@
       tokenOff = getEndLine(token, 
                             HTTP_REQUEST_VER_DIM + HTTP_REQUEST_URI_DIM+10);
       lenToken = tokenOff;
-      if(tokenOff == -1)
+      if (tokenOff == -1)
       {
         request->ver.clear();
         request->cmd.clear();
         tokenOff = getEndLine(input, HTTP_REQUEST_URI_DIM);
-        if(tokenOff > 0)
+        if (tokenOff > 0)
           request->uri.assign(input, min(HTTP_REQUEST_URI_DIM, tokenOff) );
         else
           request->uri.assign(input, HTTP_REQUEST_URI_DIM );
         return 400;
       }
-      if(tokenOff > maxUri)
+      if (tokenOff > maxUri)
       {
         request->ver.clear();
         request->cmd.clear();
         tokenOff = getEndLine(input, HTTP_REQUEST_URI_DIM);
-        if(tokenOff > 0)
+        if (tokenOff > 0)
           request->uri.assign(input, min(HTTP_REQUEST_URI_DIM, tokenOff) );
         else
           request->uri.assign(input, HTTP_REQUEST_URI_DIM );
@@ -540,12 +556,12 @@
         max--;
       for(i=0; ((int)i < max) && (i < HTTP_REQUEST_URI_DIM); i++)
       {
-        if(token[i] == '?')
+        if (token[i] == '?')
         {
           containOpts = 1;
           break;
         }
-        else if(token[i] == ' ')
+        else if (token[i] == ' ')
         {
           break;
         }
@@ -555,14 +571,14 @@
        *If a uri was specified store it. If it wasn't specified 
        *return an invalid header value.
        */
-      if(i)
+      if (i)
         request->uri.assign(token, i);
       else
       {
         request->ver.clear();
         request->cmd.clear();
         tokenOff = getEndLine(input, HTTP_REQUEST_URI_DIM);
-        if(tokenOff > 0)
+        if (tokenOff > 0)
           request->uri.assign(input, min(HTTP_REQUEST_URI_DIM, tokenOff) );
         else
           request->uri.assign(input, HTTP_REQUEST_URI_DIM );
@@ -570,7 +586,7 @@
       }  
 
       /* If the uri contains some query data determine how long it is. */
-      if(containOpts)
+      if (containOpts)
       {
         j = getEndLine(&token[i], HTTP_REQUEST_URI_DIM);
         for(j = 0; ((int)(i+j+1)<max) && (j<HTTP_REQUEST_URI_OPTS_DIM-1);j++)
@@ -592,7 +608,7 @@
        */
       for(j = 0; j < 10; j++)
       {
-        if(token[i]==' ')
+        if (token[i]==' ')
           i++;
         else 
           break;
@@ -601,12 +617,12 @@
        *If there are more than 10 black spaces store the entire line 
        *for logging then return an invalid header value.
        */
-      if(j == 10)
+      if (j == 10)
       {
         request->ver.clear();
         request->cmd.clear();
         tokenOff = getEndLine(input, HTTP_REQUEST_URI_DIM);
-        if(tokenOff > 0)
+        if (tokenOff > 0)
           request->uri.assign(input, min(HTTP_REQUEST_URI_DIM, tokenOff) );
         else
           request->uri.assign(input, HTTP_REQUEST_URI_DIM );
@@ -620,19 +636,19 @@
         i++;
 
       /* Save the HTTP version. */
-      if(i-j)
+      if (i-j)
         request->ver.assign(&token[j], i-j);
 
       /*
        *If the version is not specified or it is too long store 
        *some information for logging then return an invalid header value. 
        */
-      if((!j) || ( (i-j) == HTTP_REQUEST_VER_DIM ))
+      if ((!j) || ( (i-j) == HTTP_REQUEST_VER_DIM ))
       {
         request->ver.clear();
         request->cmd.clear();   
         tokenOff = getEndLine(input, HTTP_REQUEST_URI_DIM);
-        if(tokenOff > 0)
+        if (tokenOff > 0)
           request->uri.assign(input, min(HTTP_REQUEST_URI_DIM, tokenOff) );
         else
           request->uri.assign(input, HTTP_REQUEST_URI_DIM );
@@ -640,7 +656,7 @@
       }
       
       /* Store if the requested uri terminates with a slash character. */
-      request->uriEndsWithSlash = request->uri[(request->uri.length())-1]=='/';
+      request->uriEndsWithSlash = request->uri[(request->uri.length 
())-1]=='/';
 
       /*
        *Do not maintain any slash character if the uri has them at 
@@ -651,7 +667,7 @@
 
     }else
     /* Authorization.  */
-    if(!strcmpi(command,"Authorization"))
+    if (!strcmpi(command,"Authorization"))
     {
       int ret = readReqAuthLine (request, connection, token, &tokenOff);
       if (ret)
@@ -659,32 +675,32 @@
       lineControlled = 1;
     }else
     /* Content-Length.  */
-    if(!strcmpi(command, (char*)"Content-Length"))
+    if (!strcmpi(command, (char*)"Content-Length"))
     {
       tokenOff = getEndLine(token, HTTP_REQUEST_CONTENT_LENGTH_DIM);
-      if(tokenOff==-1)
+      if (tokenOff==-1)
         return 400;
       lineControlled = 1;
       request->contentLength.assign(token,tokenOff);
     }else
     /* Range.  */
-    if(!strcmpi(command, (char*)"Range"))
+    if (!strcmpi(command, (char*)"Range"))
     {
       int ret = readReqRangeLine (request, connection, token, &tokenOff);
       if (ret)
         return ret;
       lineControlled = 1;
     }else
-    if(!lineControlled)
+    if (!lineControlled)
     {
       tokenOff = getEndLine(token, maxTotchars);
-      if(tokenOff==-1)
+      if (tokenOff==-1)
         return 400;
       
       {
         string cmdStr(command);
         HttpRequestHeader::Entry *old = request->other.get(cmdStr);
-        if(old)
+        if (old)
         {
           old->value->append(", ");
           old->value->append(token, 
@@ -695,7 +711,7 @@
         else
         {
           HttpRequestHeader::Entry *e = new HttpRequestHeader::Entry(); 
-          if(e)
+          if (e)
           {
             e->name->assign(command, HTTP_RESPONSE_OTHER_DIM);
             e->value->assign(token, 
@@ -737,7 +753,7 @@
   rangeByteEnd[0] = '\0';
 
   int tokenOff = getEndLine(token, HTTP_REQUEST_RANGE_TYPE_DIM + 30);
-  if(tokenOff ==-1)
+  if (tokenOff ==-1)
     return 400;
   
   *lenOut = tokenOff;
@@ -769,19 +785,19 @@
     }
   while((*(++localToken) != '\r' )&&(i<12));
 
-  for(i=0;i < static_cast<int>(request->rangeType.length()); i++)
-    if(request->rangeType[i] == '=')
+  for(i=0;i < static_cast<int>(request->rangeType.length ()); i++)
+    if (request->rangeType[i] == '=')
       request->rangeType[i] = '\0';
   
-  for(i = 0; i < static_cast<int>(strlen(rangeByteBegin)); i++)
-    if(rangeByteBegin[i] == '=')
+  for(i = 0; i < static_cast<int>(strlen (rangeByteBegin)); i++)
+    if (rangeByteBegin[i] == '=')
       rangeByteBegin[i] = '\0';
   
-  for(i = 0; i < static_cast<int>(strlen(rangeByteEnd)); i++)
-    if(rangeByteEnd[i]== '=')
+  for(i = 0; i < static_cast<int>(strlen (rangeByteEnd)); i++)
+    if (rangeByteEnd[i]== '=')
       rangeByteEnd[i]='\0';
       
-  if(rangeByteBegin[0] == 0)
+  if (rangeByteBegin[0] == 0)
     {
       request->rangeByteBegin=0;
     }      
@@ -789,14 +805,14 @@
     {
       request->rangeByteBegin = (u_long)atol(rangeByteBegin); 
     }
-  if(rangeByteEnd[0] == '\r')
+  if (rangeByteEnd[0] == '\r')
     {
       request->rangeByteEnd = 0;
     }
   else
     {
       request->rangeByteEnd = (u_long)atol(rangeByteEnd);
-      if(request->rangeByteEnd < request->rangeByteBegin)
+      if (request->rangeByteEnd < request->rangeByteBegin)
         return 400;
     }
 
@@ -820,14 +836,14 @@
     token++;
   int tokenOff = getCharInString(token, " ", HTTP_REQUEST_AUTH_DIM);
   
-  if(tokenOff==-1)
+  if (tokenOff==-1)
     return 400;
 
   request->auth.assign(token, tokenOff);
   connection->setLogin("");
   connection->setPassword("");
 
-  if(!request->auth.compare("Basic"))
+  if (!request->auth.compare("Basic"))
     {
       u_long i;
       const char *base64 = &token[6];
@@ -839,7 +855,7 @@
       char password[32]; 
       CBase64Utils base64Utils;
     
-      if(len == -1)
+      if (len == -1)
         return 400;    
       
       login[0] = password[0] = '\0';
@@ -873,7 +889,7 @@
       delete lsecondaryBufferOr;
       *lenOut = tokenOff = getEndLine(token, 100);
     }
-  else if(!request->auth.compare("Digest"))
+  else if (!request->auth.compare("Digest"))
     {
       char *digestBuff;
       char *digestToken;
@@ -895,100 +911,100 @@
       memcpy(digestBuff, token, tokenOff);
       digestBuff[tokenOff]='\0';
       digestToken = strtok( digestBuff, "=" );
-      if(!digestToken)
+      if (!digestToken)
         return 400;
       do
         {
           StrTrim(digestToken, (char*)" ");
-          if(!strcmpi(digestToken, (char*)"nonce"))
+          if (!strcmpi(digestToken, (char*)"nonce"))
             {
               digestToken = strtok( NULL, (char*)"," );
-              if(digestToken)
+              if (digestToken)
                 {
                   StrTrim(digestToken, (char*)"\" ");
-                  myserver_strlcpy(request->digestNonce,digestToken,48+1);
+                  myserver_strlcpy (request->digestNonce,digestToken,48+1);
                 }
             }
-          else if(!strcmpi(digestToken, (char*)"opaque"))
+          else if (!strcmpi(digestToken, (char*)"opaque"))
             {
               digestToken = strtok( NULL, (char*)"," );
-              if(digestToken)
+              if (digestToken)
                 {
                   StrTrim(digestToken, (char*)"\" ");
-                  myserver_strlcpy(request->digestOpaque,digestToken,48+1);
+                  myserver_strlcpy (request->digestOpaque,digestToken,48+1);
                 }
             }
-          else if(!strcmpi(digestToken, (char*)"uri"))
+          else if (!strcmpi(digestToken, (char*)"uri"))
             {
               digestToken = strtok( NULL, (char*)"\r\n," );
-              if(digestToken)
+              if (digestToken)
                 {
                   StrTrim(digestToken, (char*)"\" ");
-                  myserver_strlcpy(request->digestUri,digestToken,1024+1);
+                  myserver_strlcpy (request->digestUri,digestToken,1024+1);
                 }
             }
-          else if(!strcmpi(digestToken, (char*)"method"))
+          else if (!strcmpi(digestToken, (char*)"method"))
             {
               digestToken = strtok( NULL, (char*)"\r\n," );
-              if(digestToken)
+              if (digestToken)
                 {
                   StrTrim(digestToken, (char*)"\" ");
-                  myserver_strlcpy(request->digestMethod,digestToken,16+1);
+                  myserver_strlcpy (request->digestMethod,digestToken,16+1);
                 }
             }  
-          else if(!strcmpi(digestToken, (char*)"qop"))
+          else if (!strcmpi(digestToken, (char*)"qop"))
             {
               digestToken = strtok( NULL, (char*)"\r\n," );
-              if(digestToken)
+              if (digestToken)
                 {
                   StrTrim(digestToken,(char*)"\" ");
-                  myserver_strlcpy(request->digestQop,digestToken,16+1);
+                  myserver_strlcpy (request->digestQop,digestToken,16+1);
                 }
             }          
-          else if(!strcmpi(digestToken, (char*)"realm"))
+          else if (!strcmpi(digestToken, (char*)"realm"))
             {
               digestToken = strtok( NULL, (char*)"\r\n," );
-              if(digestToken)
+              if (digestToken)
                 {
                   StrTrim(digestToken, (char*)"\" ");
-                  myserver_strlcpy(request->digestRealm,digestToken,48+1);
+                  myserver_strlcpy (request->digestRealm,digestToken,48+1);
                 }
             }
-          else if(!strcmpi(digestToken, (char*)"cnonce"))
+          else if (!strcmpi(digestToken, (char*)"cnonce"))
             {
               digestToken = strtok( NULL, (char*)"\r\n," );
-              if(digestToken)
+              if (digestToken)
                 {
                   StrTrim(digestToken, (char*)" \"");
-                  myserver_strlcpy(request->digestCnonce, digestToken, 48+1);
+                  myserver_strlcpy (request->digestCnonce, digestToken, 48+1);
                 }
             }
-          else if(!strcmpi(digestToken, (char*)"username"))
+          else if (!strcmpi(digestToken, (char*)"username"))
             {
               digestToken = strtok( NULL, (char*)"\r\n," );
-              if(digestToken)
+              if (digestToken)
                 {
                   StrTrim(digestToken, (char*)"\" ");
-                  myserver_strlcpy(request->digestUsername, digestToken, 48+1);
+                  myserver_strlcpy (request->digestUsername, digestToken, 
48+1);
                   connection->setLogin(digestToken);
                 }
             }
-          else if(!strcmpi(digestToken, (char*)"response"))
+          else if (!strcmpi(digestToken, (char*)"response"))
             {
               digestToken = strtok( NULL, "\r\n," );
-              if(digestToken)
+              if (digestToken)
                 {
                   StrTrim(digestToken, (char*)"\" ");
-                  myserver_strlcpy(request->digestResponse,digestToken,48+1);
+                  myserver_strlcpy (request->digestResponse,digestToken,48+1);
                 }
             }
-          else if(!strcmpi(digestToken, (char*)"nc"))
+          else if (!strcmpi(digestToken, (char*)"nc"))
             {
               digestToken = strtok( NULL, (char*)"\r\n," );
-              if(digestToken)
+              if (digestToken)
                 {
                   StrTrim(digestToken, (char*)"\" ");
-                  myserver_strlcpy(request->digestNc,digestToken,10+1);
+                  myserver_strlcpy (request->digestNc,digestToken,10+1);
                 }
             }
           else 
@@ -1040,14 +1056,14 @@
   int nLineControlled = 0;
 
   /* Control if the HTTP header is a valid header.  */
-  if(input[0] == 0)
+  if (input[0] == 0)
     return 0;
   validResponse = validHTTPResponse(input,&nLines, &maxTotchars);
 
-  if(validResponse)
+  if (validResponse)
   {
     newInput = new char[maxTotchars + 1];
-    if(!newInput)
+    if (!newInput)
       return 0;
     /*
      * FIXME: 
@@ -1063,7 +1079,7 @@
   token = (char*) input;
   
   /* Check if is specified the first line containing the HTTP status.  */
-  if((input[0] == 'H') && (input[1] == 'T') && (input[2] == 'T')
+  if ((input[0] == 'H') && (input[1] == 'T') && (input[2] == 'T')
      &&(input[3] == 'P') && (input[4] == '/'))
   {
     containStatusLine = 1;
@@ -1073,7 +1089,7 @@
     token = strtok( token, ": ,\t\n\r" );
   do
   {
-    if(!token)
+    if (!token)
       break;
     /*
      *Reset the flag lineControlled.
@@ -1083,26 +1099,26 @@
     /*
      *Copy the HTTP command.
      */
-    myserver_strlcpy(command, token, 96);
+    myserver_strlcpy (command, token, 96);
     
     nLineControlled++;
-    if((nLineControlled == 1) && containStatusLine)
+    if ((nLineControlled == 1) && containStatusLine)
     {
       lineControlled = 1;
       /* Copy the HTTP version.  */
       response->ver.assign(command);
     
       token = strtok( NULL, " ,\t\n\r" );
-      if(token)
+      if (token)
         response->httpStatus = atoi(token);
       
       token = strtok( NULL, "\r\n\0" );
-      if(token)
+      if (token)
         response->errorType.assign(token);
 
     }else
     /* Server.  */
-    if(!strcmpi(command,"Server"))
+    if (!strcmpi(command,"Server"))
     {
       token = strtok( NULL, "\r\n\0" );
       lineControlled = 1;
@@ -1110,11 +1126,11 @@
       while(token && *token == ' ')
         token++;
 
-      if(token)
+      if (token)
         response->serverName.assign(token);
     }else
     /* Location  */
-    if(!strcmpi(command,"Location"))
+    if (!strcmpi(command,"Location"))
     {
       token = strtok( NULL, "\r\n\0" );
       lineControlled = 1;
@@ -1122,11 +1138,11 @@
       while(token && *token == ' ')
         token++;
 
-      if(token)
+      if (token)
         response->location.assign(token);
     }else
     /* Last-Modified.  */
-    if(!strcmpi(command,"Last-Modified"))
+    if (!strcmpi(command,"Last-Modified"))
     {
       token = strtok( NULL, "\r\n\0" );
       lineControlled = 1;
@@ -1134,11 +1150,11 @@
       while(token && *token == ' ')
         token++;
 
-      if(token)
+      if (token)
         response->lastModified.assign(token);
     }else
     /* Status.  */
-    if(!strcmpi(command,"Status"))
+    if (!strcmpi(command,"Status"))
     {
       token = strtok( NULL, "\r\n\0" );
       lineControlled = 1;
@@ -1147,12 +1163,12 @@
         token++;
 
       /*! If the response status is different from 200 don't modify it. */
-      if(response->httpStatus == 200)
-        if(token)
+      if (response->httpStatus == 200)
+        if (token)
           response->httpStatus = atoi(token);
     }else
     /* Date.  */
-    if(!strcmpi(command,"Date"))
+    if (!strcmpi(command,"Date"))
     {
       token = strtok( NULL, "\r\n\0" );
       lineControlled = 1;
@@ -1160,11 +1176,11 @@
       while(token && *token == ' ')
         token++;
 
-      if(token)
+      if (token)
         response->date.assign(token);
     }else
     /* Content-Type.  */
-    if(!strcmpi(command,"Content-Type"))
+    if (!strcmpi(command,"Content-Type"))
     {
       token = strtok( NULL, "\r\n\0" );
       lineControlled = 1;
@@ -1172,11 +1188,11 @@
       while(token && *token == ' ')
         token++;
 
-      if(token)
+      if (token)
         response->contentType.assign(token);
     }else
     /* MIME-Version.  */
-    if(!strcmpi(command,"MIME-Version"))
+    if (!strcmpi(command,"MIME-Version"))
     {
       token = strtok( NULL, "\r\n\0" );
       lineControlled = 1;
@@ -1184,11 +1200,11 @@
       while(token && *token == ' ')
         token++;
 
-      if(token)
+      if (token)
         response->mimeVer.assign(token);
     }else
     /* Set-Cookie.  */
-    if(!strcmpi(command,"Set-Cookie"))
+    if (!strcmpi(command,"Set-Cookie"))
     {
       token = strtok( NULL, "\r\n\0" );
       lineControlled = 1;
@@ -1196,7 +1212,7 @@
       while(token && *token == ' ')
         token++;
 
-      if(token)
+      if (token)
       {
         /* Divide multiple cookies.  */
         response->cookie.append(token );
@@ -1204,7 +1220,7 @@
       }
     }else
     /* Content-Length.  */
-    if(!strcmpi(command,"Content-Length"))
+    if (!strcmpi(command,"Content-Length"))
     {
       token = strtok( NULL, "\r\n\0" );
       lineControlled = 1;
@@ -1215,42 +1231,42 @@
       response->contentLength.assign(token);
     }else
     /* Connection.  */
-    if(!strcmpi(command,"Connection"))
+    if (!strcmpi(command,"Connection"))
     {
       token = strtok( NULL, "\r\n\0" );
       lineControlled = 1;
 
-      if(token)
+      if (token)
         response->connection.assign(token);
     }else
     /* Expires.  */
-    if(!strcmpi(command,"Expires"))
+    if (!strcmpi(command,"Expires"))
     {
       token = strtok( NULL, "\r\n\0" );
       lineControlled = 1;
-      if(token)
+      if (token)
         response->dateExp.assign(token);
     }
     /*
      *If the line is not controlled arrive with the token
      *at the end of the line.
      */
-    if( (!lineControlled) &&  ((!containStatusLine) || (nLineControlled != 1)))
+    if ( (!lineControlled) &&  ((!containStatusLine) || (nLineControlled != 
1)))
     {
       token = strtok(NULL, "\r\n");
 
       while(token && *token == ' ')
         token++;
 
-      if(token)
+      if (token)
       {
         HttpResponseHeader::Entry *e;
-        if(strlen(command) > HTTP_RESPONSE_OTHER_DIM || 
-           strlen(token) > HTTP_RESPONSE_OTHER_DIM)
+        if (strlen (command) > HTTP_RESPONSE_OTHER_DIM || 
+           strlen (token) > HTTP_RESPONSE_OTHER_DIM)
           return 0;
 
         e = new HttpResponseHeader::Entry(); 
-        if(e)
+        if (e)
         {
           e->name->assign(command);
           e->value->assign(token);
@@ -1258,7 +1274,7 @@
             HttpResponseHeader::Entry *old = 0;
             string cmdString(command);
             old = response->other.put(cmdString, e);
-            if(old)
+            if (old)
               delete old;
           }
         }
@@ -1294,16 +1310,16 @@
   nLinechars = 0;
   u_long nLines = 0;
   
-  if(req == 0)
+  if (req == 0)
     return 400;
   
   for(;i < MYSERVER_KB(8); i++)
   {
-    if(req[i] == '\n')
+    if (req[i] == '\n')
     {
-      if(req[i + 2] == '\n')
+      if (req[i + 2] == '\n')
       {
-        if((i + 3) > size)
+        if ((i + 3) > size)
           return 400;
         break;
       }
@@ -1311,20 +1327,20 @@
        *If the lines number is greater than 25 we consider 
        *the header invalid.
       */
-      if(nLines >= 25)
+      if (nLines >= 25)
         return 400;
       nLinechars = 0;
       nLines++;
     }
-    else if(req[i]=='\0')
+    else if (req[i]=='\0')
       return -1;
 
     /*
     *If a line contains more than 2048 characters then the header is 
considered invalid.
     */
-    if(nLinechars >= 2048)
+    if (nLinechars >= 2048)
     {
-      if(nLines == 0)
+      if (nLines == 0)
         return 414;
       return 400;
     }





reply via email to

[Prev in Thread] Current Thread [Next in Thread]