You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mod_python-commits@quetz.apache.org by gr...@apache.org on 2006/04/02 12:24:27 UTC

svn commit: r390804 - in /httpd/mod_python/trunk: Doc/appendixc.tex Doc/modpython4.tex lib/python/mod_python/__init__.py src/include/mpversion.h src/requestobject.c test/htdocs/tests.py test/test.py

Author: grahamd
Date: Sun Apr  2 03:24:21 2006
New Revision: 390804

URL: http://svn.apache.org/viewcvs?rev=390804&view=rev
Log:
Added req.discard_request_body() function as wrapper for similar function
provided by Apache C API. The function tests for and reads any message body
in the request, simply discarding whatever it receives. (MODPYTHON-153)

Modified:
    httpd/mod_python/trunk/Doc/appendixc.tex
    httpd/mod_python/trunk/Doc/modpython4.tex
    httpd/mod_python/trunk/lib/python/mod_python/__init__.py
    httpd/mod_python/trunk/src/include/mpversion.h
    httpd/mod_python/trunk/src/requestobject.c
    httpd/mod_python/trunk/test/htdocs/tests.py
    httpd/mod_python/trunk/test/test.py

Modified: httpd/mod_python/trunk/Doc/appendixc.tex
URL: http://svn.apache.org/viewcvs/httpd/mod_python/trunk/Doc/appendixc.tex?rev=390804&r1=390803&r2=390804&view=diff
==============================================================================
--- httpd/mod_python/trunk/Doc/appendixc.tex (original)
+++ httpd/mod_python/trunk/Doc/appendixc.tex Sun Apr  2 03:24:21 2006
@@ -69,6 +69,12 @@
       Added \code{req.set_etag()}, \code{req.set_last_modified()} and
       \code{req.update_mtime()} functions as wrappers for similar functions
       provided by Apache C API.
+    \item
+      (\citetitle[http://issues.apache.org/jira/browse/MODPYTHON-153]{MODPYTHON-153})
+      Added \code{req.discard_request_body()} function as wrapper for
+      similar function provided by Apache C API. The function tests for
+      and reads any message body in the request, simply discarding
+      whatever it receives.
   \end{itemize}
 
   Improvements

Modified: httpd/mod_python/trunk/Doc/modpython4.tex
URL: http://svn.apache.org/viewcvs/httpd/mod_python/trunk/Doc/modpython4.tex?rev=390804&r1=390803&r2=390804&view=diff
==============================================================================
--- httpd/mod_python/trunk/Doc/modpython4.tex (original)
+++ httpd/mod_python/trunk/Doc/modpython4.tex Sun Apr  2 03:24:21 2006
@@ -643,6 +643,11 @@
 
 \end{methoddesc}
 
+\begin{methoddesc}[request]{discard_request_body}{}
+  Tests for and reads any message body in the request, simply discarding
+  whatever it receives.
+\end{methoddesc}
+
 \begin{methoddesc}[request]{document_root}{}
   Returns DocumentRoot setting.
 \end{methoddesc}

Modified: httpd/mod_python/trunk/lib/python/mod_python/__init__.py
URL: http://svn.apache.org/viewcvs/httpd/mod_python/trunk/lib/python/mod_python/__init__.py?rev=390804&r1=390803&r2=390804&view=diff
==============================================================================
--- httpd/mod_python/trunk/lib/python/mod_python/__init__.py (original)
+++ httpd/mod_python/trunk/lib/python/mod_python/__init__.py Sun Apr  2 03:24:21 2006
@@ -20,5 +20,5 @@
 __all__ = ["apache", "cgihandler", "psp",
            "publisher", "util", "python22"]
 
-version = "3.3.0-dev-20060328"
+version = "3.3.0-dev-20060402"
 

Modified: httpd/mod_python/trunk/src/include/mpversion.h
URL: http://svn.apache.org/viewcvs/httpd/mod_python/trunk/src/include/mpversion.h?rev=390804&r1=390803&r2=390804&view=diff
==============================================================================
--- httpd/mod_python/trunk/src/include/mpversion.h (original)
+++ httpd/mod_python/trunk/src/include/mpversion.h Sun Apr  2 03:24:21 2006
@@ -1,5 +1,5 @@
 #define MPV_MAJOR 3
 #define MPV_MINOR 3
 #define MPV_PATCH 0
-#define MPV_BUILD 20060328
-#define MPV_STRING "3.3.0-dev-20060328"
+#define MPV_BUILD 20060402
+#define MPV_STRING "3.3.0-dev-20060402"

Modified: httpd/mod_python/trunk/src/requestobject.c
URL: http://svn.apache.org/viewcvs/httpd/mod_python/trunk/src/requestobject.c?rev=390804&r1=390803&r2=390804&view=diff
==============================================================================
--- httpd/mod_python/trunk/src/requestobject.c (original)
+++ httpd/mod_python/trunk/src/requestobject.c Sun Apr  2 03:24:21 2006
@@ -510,6 +510,17 @@
 }
 
 /**
+ ** request.discard_request_body(request self)
+ **
+ *      discard content supplied with request
+ */
+
+static PyObject * req_discard_request_body(requestobject *self)
+{
+    return PyInt_FromLong(ap_discard_request_body(self->request_rec));
+}
+
+/**
  ** request.get_addhandler_exts(request self)
  **
  *     Returns file extentions that were given as argument to AddHandler mod_mime
@@ -1358,6 +1369,7 @@
     {"auth_name",             (PyCFunction) req_auth_name,             METH_NOARGS},
     {"auth_type",             (PyCFunction) req_auth_type,             METH_NOARGS},
     {"construct_url",         (PyCFunction) req_construct_url,         METH_VARARGS},
+    {"discard_request_body",  (PyCFunction) req_discard_request_body,  METH_NOARGS},
     {"get_config",            (PyCFunction) req_get_config,            METH_NOARGS},
     {"document_root",         (PyCFunction) req_document_root,         METH_NOARGS},
     {"flush",                 (PyCFunction) req_flush,                 METH_NOARGS},

Modified: httpd/mod_python/trunk/test/htdocs/tests.py
URL: http://svn.apache.org/viewcvs/httpd/mod_python/trunk/test/htdocs/tests.py?rev=390804&r1=390803&r2=390804&view=diff
==============================================================================
--- httpd/mod_python/trunk/test/htdocs/tests.py (original)
+++ httpd/mod_python/trunk/test/htdocs/tests.py Sun Apr  2 03:24:21 2006
@@ -702,6 +702,29 @@
 
     return apache.OK
 
+def req_discard_request_body(req):
+
+    s = req.read(10)
+    if s != '1234567890':
+        req.log_error('read() #1 returned %s' % `s`)
+        req.write('test failed')
+        return apache.OK
+
+    status = req.discard_request_body()
+    if status != apache.OK:
+        req.log_error('discard_request_body() returned %d' % status)
+        return status
+
+    s = req.read()
+    if s:
+        req.log_error('read() #2 returned %s' % `s`)
+        req.write('test failed')
+        return apache.OK
+
+    req.write('test ok')
+
+    return apache.OK
+
 def req_register_cleanup(req):
 
     req.cleanup_data = "req_register_cleanup test ok"

Modified: httpd/mod_python/trunk/test/test.py
URL: http://svn.apache.org/viewcvs/httpd/mod_python/trunk/test/test.py?rev=390804&r1=390803&r2=390804&view=diff
==============================================================================
--- httpd/mod_python/trunk/test/test.py (original)
+++ httpd/mod_python/trunk/test/test.py Sun Apr  2 03:24:21 2006
@@ -873,6 +873,37 @@
         if (rsp != params):
             self.fail(`rsp`)
 
+    def test_req_discard_request_body_conf(self):
+
+        c = str(Timeout("5")) + \
+            str(VirtualHost("*",
+                        ServerName("test_req_discard_request_body"),
+                        DocumentRoot(DOCUMENT_ROOT),
+                        Directory(DOCUMENT_ROOT,
+                                  SetHandler("mod_python"),
+                                  PythonHandler("tests::req_discard_request_body"),
+                                  PythonDebug("On"))))
+        return c
+
+    def test_req_discard_request_body(self):
+
+        print "\n  * Testing req.discard_request_body()"
+
+        params = '1234567890'*2
+        print "    writing %d bytes..." % len(params)
+        conn = httplib.HTTPConnection("127.0.0.1:%s" % PORT)
+        conn.putrequest("GET", "/tests.py", skip_host=1)
+        conn.putheader("Host", "test_req_discard_request_body:%s" % PORT)
+        conn.putheader("Content-Length", len(params))
+        conn.endheaders()
+        conn.send(params)
+        response = conn.getresponse()
+        rsp = response.read()
+        conn.close()
+
+        if (rsp != "test ok"):
+            self.fail(`rsp`)
+
     def test_req_register_cleanup_conf(self):
 
         c = VirtualHost("*",
@@ -2407,6 +2438,7 @@
         perRequestSuite.addTest(PerRequestTestCase("test_req_read"))
         perRequestSuite.addTest(PerRequestTestCase("test_req_readline"))
         perRequestSuite.addTest(PerRequestTestCase("test_req_readlines"))
+        perRequestSuite.addTest(PerRequestTestCase("test_req_discard_request_body"))
         perRequestSuite.addTest(PerRequestTestCase("test_req_register_cleanup"))
         perRequestSuite.addTest(PerRequestTestCase("test_req_headers_out"))
         perRequestSuite.addTest(PerRequestTestCase("test_req_sendfile"))