[ https://issues.apache.org/jira/browse/MODPYTHON-101?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Graham Dumpleton closed MODPYTHON-101. -------------------------------------- > If target handler found but evaluates false, there should still be an error > if not silent. > ------------------------------------------------------------------------------------------ > > Key: MODPYTHON-101 > URL: https://issues.apache.org/jira/browse/MODPYTHON-101 > Project: mod_python > Issue Type: Bug > Components: core > Affects Versions: 3.1.4, 3.2.7 > Reporter: Graham Dumpleton > Assigned To: Graham Dumpleton > Fix For: 3.3 > > > 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 in case of ConnectionDispatch() > and call to filter.flush() in FilterDispatcher() should also be shifted out > as well as appropriate. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.