You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mod_python-dev@quetz.apache.org by "Graham Dumpleton (JIRA)" <ji...@apache.org> on 2006/06/14 13:37:31 UTC
[jira] Reopened: (MODPYTHON-84) req.sendfile(filename) sends an
incorrect number of bytes when filename is a symlink
[ http://issues.apache.org/jira/browse/MODPYTHON-84?page=all ]
Graham Dumpleton reopened MODPYTHON-84:
---------------------------------------
Assign To: Graham Dumpleton (was: Jim Gallacher)
As per report by Sergey:
http://www.modpython.org/pipermail/mod_python/2006-May/021276.html
I'd like to offer the following patch for 3.2.8's sendfile function that
asks APR to provide less information about a file (which is beneficial
on Windows as APR doesn't have to construct POSIX protection flags),
because the only field in use becomes file size. Incidentally, it also
allows mod_python (plus Apache 2.2 patch) to work with the following
tweak for APR 1.2.7 (required for Subversion), under Windows and Apache
2.2.2: http://article.gmane.org/gmane.comp.apache.apr.devel/9389/.
I didn't test the patch on anything but Windows XP. The error I was
getting with the setup above was "Could not stat file for reading."
I also have to mention that the whole thing was compiled with VS 2005
compiler to support Python 2.4, although I think it's not relevant for
the patch attached.
with patch:
--- requestobject.c.orig 2006-01-10 19:03:06.000000000 -0500
+++ requestobject.c 2006-05-30 17:11:22.124624100 -0400
@@ -1024,7 +1024,7 @@
Py_BEGIN_ALLOW_THREADS
status=apr_stat(&finfo, fname,
- APR_FINFO_NORM, self->request_rec->pool);
+ APR_FINFO_SIZE, self->request_rec->pool);
Py_END_ALLOW_THREADS
if (status != APR_SUCCESS) {
PyErr_SetString(PyExc_IOError, "Could not stat file for reading");
@@ -1033,7 +1033,7 @@
Py_BEGIN_ALLOW_THREADS
status=apr_file_open(&fd, fname,
- APR_READ, finfo.protection,
+ APR_READ, APR_OS_DEFAULT,
self->request_rec->pool);
Py_END_ALLOW_THREADS
if (status != APR_SUCCESS) {
the original change to fix this symlink issue was causing issues on Win32, plus needs to be changed to work with a APR 1.2.7 change required for subversion to work.
Thus the patch above, seems to be necessary.
At this stage can't see anything wrong with the change.
> req.sendfile(filename) sends an incorrect number of bytes when filename is a symlink
> ------------------------------------------------------------------------------------
>
> Key: MODPYTHON-84
> URL: http://issues.apache.org/jira/browse/MODPYTHON-84
> Project: mod_python
> Type: Bug
> Components: core
> Versions: 3.1.4, 3.1.3, 3.2.7
> Reporter: Jim Gallacher
> Assignee: Graham Dumpleton
> Fix For: 3.2.7
>
> This issue was reported by Wim Heirman on the mod_python list:
> When req.sendfile(filename) is called where filename is a symbolic link, only part of the file is sent to the client (as many bytes as there are characters in the symlink's file reference, so for a symlink pointing to '../index.html' returns the first 13 bytes of the correct file).
> Wim suggested changing APR_READ to APR_FINFO_NORM in the apr_stat call in req_sendfile().
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira