myserver-commit
[Top][All Lists]
Advanced

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

[myserver-commit] [SCM] GNU MyServer branch, master, updated. 0_9_2-20-g


From: Giuseppe Scrivano
Subject: [myserver-commit] [SCM] GNU MyServer branch, master, updated. 0_9_2-20-g59bb686
Date: Sat, 20 Feb 2010 03:09:40 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU MyServer".

The branch, master has been updated
       via  59bb686116a92c5120388c2c08c6289e67dd49f1 (commit)
       via  51b5113034f1a88647791ca87e354a6a4b9c6376 (commit)
       via  e3dc2e96b957c32f9caabb0e4a906513f131b3f0 (commit)
      from  f843f46e1b3a2b0e9dac1e36f477fc69b6c586c3 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------


commit 59bb686116a92c5120388c2c08c6289e67dd49f1
Author: Giuseppe Scrivano <address@hidden>
Date:   Sat Feb 20 04:08:18 2010 +0100

    File::openFile ensures the descriptor is close on exceptions.

diff --git a/myserver/src/base/file/file.cpp b/myserver/src/base/file/file.cpp
index 0f5c0b8..d0c4eca 100644
--- a/myserver/src/base/file/file.cpp
+++ b/myserver/src/base/file/file.cpp
@@ -166,19 +166,29 @@ int File::openFile (const char* nfilename, u_long opt)
   else
     handle = open (filename.c_str (), O_CREAT | flags, S_IRUSR | S_IWUSR);
 
-  if (opt & File::FILE_CREATE_ALWAYS)
-    if (truncate ())
-      {
-        close ();
-        return -1;
-      }
+  try
+    {
+      if (opt & File::FILE_CREATE_ALWAYS)
+        if (truncate ())
+          {
+            close ();
+            return -1;
+          }
  
-  if (opt & File::TEMPORARY)
-    if (unlink (filename.c_str ()))
-      {
-        close ();
-        return -1;
-      }
+      if (opt & File::TEMPORARY)
+        if (unlink (filename.c_str ()))
+          {
+            close ();
+            return -1;
+          }
+    }
+  catch (exception &e)
+    {
+      /* Ensure the file is closed if something went wrong and don't leave
+         open descriptors around.  */
+      close ();
+      throw;
+    }
 
   this->opt = opt;
   return handle < 0;



commit 51b5113034f1a88647791ca87e354a6a4b9c6376
Author: Giuseppe Scrivano <address@hidden>
Date:   Sat Feb 20 04:02:50 2010 +0100

    Change the type of the local variable `i' and avoid casts.

diff --git a/myserver/src/protocol/http/http_headers.cpp 
b/myserver/src/protocol/http/http_headers.cpp
index 9b228e9..8956b8c 100644
--- a/myserver/src/protocol/http/http_headers.cpp
+++ b/myserver/src/protocol/http/http_headers.cpp
@@ -570,7 +570,7 @@ int HttpHeaders::buildHTTPRequestHeaderStruct (const char 
*input,
             return ret;
           lineControlled = 1;
         }
-      else if (!lineControlled)
+      else if (! lineControlled)
         {
           tokenOff = getEndLine (token, maxTotchars);
           if (tokenOff==-1)
@@ -621,7 +621,7 @@ int HttpHeaders::readReqRangeLine (HttpRequestHeader 
*request,
   char rangeByteBegin[13];
   char rangeByteEnd[13];
   const char *localToken = token;
-  int i = 0;
+  size_t i = 0;
   rangeByteBegin[0] = '\0';
   rangeByteEnd[0] = '\0';
 
@@ -656,22 +656,22 @@ int HttpHeaders::readReqRangeLine (HttpRequestHeader 
*request,
       rangeByteEnd[i++] = *localToken;
       rangeByteEnd[i] = '\0';
     }
-  while ((*(++localToken) != '\r' )&&(i<12));
+  while ((*(++localToken) != '\r') && (i < 12));
 
-  for (i = 0; i < static_cast<int>(request->rangeType.length ()); i++)
+  for (i = 0; i < request->rangeType.length (); i++)
     if (request->rangeType[i] == '=')
       request->rangeType[i] = '\0';
 
-  for (i = 0; i < static_cast<int>(strlen (rangeByteBegin)); i++)
+  for (i = 0; i < strlen (rangeByteBegin); i++)
     if (rangeByteBegin[i] == '=')
       rangeByteBegin[i] = '\0';
 
-  for (i = 0; i < static_cast<int>(strlen (rangeByteEnd)); i++)
-    if (rangeByteEnd[i]== '=')
-      rangeByteEnd[i]='\0';
+  for (i = 0; i < strlen (rangeByteEnd); i++)
+    if (rangeByteEnd[i] == '=')
+      rangeByteEnd[i] = '\0';
 
   if (rangeByteBegin[0] == 0)
-    request->rangeByteBegin=0;
+    request->rangeByteBegin = 0;
   else
     request->rangeByteBegin = (u_long) atol (rangeByteBegin);
 
@@ -696,8 +696,7 @@ int HttpHeaders::readReqRangeLine (HttpRequestHeader 
*request,
  * \return 0 on success, any other value is the HTTP error.
  */
 int HttpHeaders::readReqAuthLine (HttpRequestHeader *request,
-                                  Connection *connection,
-                                  const char *token,
+                                  Connection *connection, const char *token,
                                   int *lenOut)
 {
   const char *origToken = token;
@@ -713,7 +712,7 @@ int HttpHeaders::readReqAuthLine (HttpRequestHeader 
*request,
   connection->setLogin ("");
   connection->setPassword ("");
 
-  if (!request->auth.compare ("Basic"))
+  if (! request->auth.compare ("Basic"))
     {
       u_long i;
       const char *base64 = &token[6];
@@ -759,7 +758,7 @@ int HttpHeaders::readReqAuthLine (HttpRequestHeader 
*request,
         return 400;
       *lenOut += token - origToken;
     }
-  else if (!request->auth.compare ("Digest"))
+  else if (! request->auth.compare ("Digest"))
     {
       char *digestBuff;
       char *digestToken;
@@ -775,13 +774,13 @@ int HttpHeaders::readReqAuthLine (HttpRequestHeader 
*request,
 
 
       digestBuff = new char[tokenOff + 1];
-      if (!digestBuff)
+      if (! digestBuff)
         return 500;
 
       memcpy (digestBuff, token, tokenOff);
       digestBuff[tokenOff] = '\0';
       digestToken = strtok (digestBuff, "=" );
-      if (!digestToken)
+      if (! digestToken)
         return 400;
       do
         {
@@ -961,7 +960,7 @@ int HttpHeaders::buildHTTPResponseHeaderStruct (const char 
*input,
   if (validResponse)
   {
     newInput = new char[maxTotchars + 1];
-    if (!newInput)
+    if (! newInput)
       return 0;
     /*
      * FIXME:



commit e3dc2e96b957c32f9caabb0e4a906513f131b3f0
Author: Giuseppe Scrivano <address@hidden>
Date:   Sat Feb 20 03:54:34 2010 +0100

    HttpRequestHeader::isKeepAlive avoids a string copy.  Add a test.

diff --git a/myserver/src/protocol/http/http_request.cpp 
b/myserver/src/protocol/http/http_request.cpp
index 4152e7c..2cbfeea 100644
--- a/myserver/src/protocol/http/http_request.cpp
+++ b/myserver/src/protocol/http/http_request.cpp
@@ -85,11 +85,9 @@ bool HttpRequestHeader::isKeepAlive ()
 {
     Entry *connection = other.get ("Connection");
     if (connection)
-    {
-      string value (*connection->value);
-      std::transform (value.begin (), value.end (), value.begin (), (int 
(*)(int)) tolower);
-      return value.find ("keep-alive") != string::npos;
-    }
+      return (! stringcmpi (*connection->value,
+                            "keep-alive"));
+
     return false;
 }
 
diff --git a/myserver/tests/test_http_request.cpp 
b/myserver/tests/test_http_request.cpp
index 376197b..c2dc13e 100644
--- a/myserver/tests/test_http_request.cpp
+++ b/myserver/tests/test_http_request.cpp
@@ -42,6 +42,7 @@ class TestHttpRequest : public CppUnit::TestFixture
   CPPUNIT_TEST (testIncompleteHeader);
   CPPUNIT_TEST (testDefaultHttpRequest);
   CPPUNIT_TEST (testValidRequest);
+  CPPUNIT_TEST (testKeepAlive);
   CPPUNIT_TEST (testResetHttpRequest);
   CPPUNIT_TEST_SUITE_END ();
 
@@ -56,6 +57,50 @@ public:
 
   }
 
+
+  void testKeepAlive ()
+  {
+    HttpRequestHeader header;
+    Connection connection;
+    u_long requestLength;
+    const char * requestStr;
+    int ret;
+#define BUILD_KEEPALIVE_REQ(X) "GET / HTTP/1.1\r\n" \
+      "Connection: " X "\r\n"                       \
+      "Host: localhost\r\n\r\n"
+
+    requestStr = BUILD_KEEPALIVE_REQ ("Keep-Alive");
+    ret = HttpHeaders::buildHTTPRequestHeaderStruct (requestStr,
+                                                     strlen (requestStr),
+                                                     &requestLength,
+                                                     &header,
+                                                     &connection);
+
+    CPPUNIT_ASSERT (header.isKeepAlive ());
+
+    requestStr = BUILD_KEEPALIVE_REQ ("close");
+    HttpHeaders::resetHTTPRequest (&header);
+    ret = HttpHeaders::buildHTTPRequestHeaderStruct (requestStr,
+                                                     strlen (requestStr),
+                                                     &requestLength,
+                                                     &header,
+                                                     &connection);
+
+    CPPUNIT_ASSERT (! header.isKeepAlive ());
+
+    requestStr = BUILD_KEEPALIVE_REQ ("keep-Alive");
+    HttpHeaders::resetHTTPRequest (&header);
+    ret = HttpHeaders::buildHTTPRequestHeaderStruct (requestStr,
+                                                     strlen (requestStr),
+                                                     &requestLength,
+                                                     &header,
+                                                     &connection);
+
+    CPPUNIT_ASSERT (header.isKeepAlive ());
+
+#undef BUILD_KEEPALIVE_REQ
+  }
+
   void testSimpleHeader ()
   {
 

-----------------------------------------------------------------------

Summary of changes:
 myserver/src/base/file/file.cpp             |   34 +++++++++++++-------
 myserver/src/protocol/http/http_headers.cpp |   31 +++++++++---------
 myserver/src/protocol/http/http_request.cpp |    8 ++---
 myserver/tests/test_http_request.cpp        |   45 +++++++++++++++++++++++++++
 4 files changed, 85 insertions(+), 33 deletions(-)


hooks/post-receive
-- 
GNU MyServer




reply via email to

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