If target handler found but evaluates false, there should still be an error if
not silent.
------------------------------------------------------------------------------------------
Key: MODPYTHON-101
URL: http://issues.apache.org/jira/browse/MODPYTHON-101
Project: mod_python
Type: Bug
Components: core
Versions: 3.2, 3.1.4
Reporter: Graham Dumpleton
If one specifies PythonHandler directive and the target is mistakenly set to be
something like:
handler = 0
handler = None
handler = False
handler = []
handler = {}
no error is raised.
As comparison, if one has:
handler = 1
you get an error:
Traceback (most recent call last):
File
"/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/mod_python/apache.py",
line 309, in HandlerDispatch
result = object(req)
TypeError: 'int' object is not callable
This is because if the target in any way evaluates to false, no attempt is made
to execute it, but at the same time if the silent flag is not set no error is
raised either.
In the case of HandlerDispatch in apache.py, the code currently is:
# find the object
object = resolve_object(module, object_str,
arg=req, silent=hlist.silent)
if object:
# call the object
....
elif hlist.silent:
result = DECLINED
It would make more sense that if hlist.silent is not set, that the object,
whatever it may be should be called. This would ensure that any error response
is always generated when it can be.
Thus, instead of just:
if object:
it should really be:
if not hlist.silent or object:
In the case of ConnectionDispatch() and FilterDispatch(), because silent is
fixed to "0" in those cases, there should not even be a check of whether object
evaluates true, it should just be called regardless.
Thus instead of:
if object:
# call the object
if config.has_key("PythonEnablePdb"):
result = pdb.runcall(object, conn)
else:
result = object(conn)
it should just be:
# call the object:
if config.has_key("PythonEnablePdb"):
result = pdb.runcall(object, conn)
else:
result = object(conn)
Indent level of following assertion clause should also be shifted out as well.
--
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