You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@gump.apache.org by le...@apache.org on 2005/06/27 22:44:08 UTC
svn commit: r202056 -
/gump/branches/Gump3/webgump/lib/mod_python.modify-mtime.txt
Author: leosimons
Date: Mon Jun 27 13:44:07 2005
New Revision: 202056
URL: http://svn.apache.org/viewcvs?rev=202056&view=rev
Log:
Patch to mod_python that allows writing mtime, which is nice for caching...
Added:
gump/branches/Gump3/webgump/lib/mod_python.modify-mtime.txt
Added: gump/branches/Gump3/webgump/lib/mod_python.modify-mtime.txt
URL: http://svn.apache.org/viewcvs/gump/branches/Gump3/webgump/lib/mod_python.modify-mtime.txt?rev=202056&view=auto
==============================================================================
--- gump/branches/Gump3/webgump/lib/mod_python.modify-mtime.txt (added)
+++ gump/branches/Gump3/webgump/lib/mod_python.modify-mtime.txt Mon Jun 27 13:44:07 2005
@@ -0,0 +1,44 @@
+--- mod_python-3.1.4/src/requestobject.c 2005-01-29 22:25:28.000000000 +0100
++++ mod_python-3.1.4.fixed/src/requestobject.c 2005-06-27 22:36:30.865602472 +0200
+@@ -1058,7 +1058,6 @@
+
+ static int setreq_recmbr(requestobject *self, PyObject *val, void *name)
+ {
+-
+ if (strcmp(name, "content_type") == 0) {
+ if (! PyString_Check(val)) {
+ PyErr_SetString(PyExc_TypeError, "content_type must be a string");
+@@ -1088,6 +1087,15 @@
+ apr_pstrdup(self->request_rec->pool, PyString_AsString(val));
+ return 0;
+ }
++ else if (strcmp(name, "mtime") == 0) {
++ if (!PyInt_Check(val)) {
++ PyErr_SetString(PyExc_TypeError, "mtime must be an integer");
++ return -1;
++ }
++ self->request_rec->mtime = (apr_time_t)(PyLong_AsLongLong(val) * 1000000); /* python has seconds, apr microseconds */
++ ap_set_last_modified(self->request_rec); /* updates the last-modified header to sync with mtime */
++ return 0;
++ }
+
+ return PyMember_SetOne((char*)self->request_rec,
+ find_memberdef(request_rec_mbrs, (char*)name),
+@@ -1105,7 +1113,7 @@
+ PyMemberDef *md = find_memberdef(request_rec_mbrs, name);
+ char *addr = (char *)self->request_rec + md->offset;
+ apr_time_t time = *(apr_time_t*)addr;
+- return PyFloat_FromDouble(time*0.000001);
++ return PyFloat_FromDouble(time*0.000001); /* python has seconds, apr microseconds */
+ }
+
+ /**
+@@ -1256,7 +1264,7 @@
+ {"allowed_methods", (getter)getreq_rec_ml, NULL, "Allowed methods", "allowed_methods"},
+ {"sent_bodyct", (getter)getreq_recmbr_off, NULL, "Byte count in stream for body", "sent_bodyct"},
+ {"bytes_sent", (getter)getreq_recmbr_off, NULL, "Bytes sent", "bytes_sent"},
+- {"mtime", (getter)getreq_recmbr_time, NULL, "Time resource was last modified", "mtime"},
++ {"mtime", (getter)getreq_recmbr_time, (setter)setreq_recmbr, "Time resource was last modified", "mtime"},
+ {"chunked", (getter)getreq_recmbr, NULL, "Sending chunked transfer-coding", "chunked"},
+ {"boundary", (getter)getreq_recmbr, NULL, "Multipart/byteranges boundary", "boundary"},
+ {"range", (getter)getreq_recmbr, NULL, "The Range: header", "range"},