Apache Mod-Python - Resolved: (MODPYTHON-101) If target handler found but

This is Interesting: Free IT Magazines  
Home > Archive > Apache Mod-Python > April 2006 > Resolved: (MODPYTHON-101) If target handler found but





You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

Author Resolved: (MODPYTHON-101) If target handler found but
Graham Dumpleton (JIRA)

2006-04-24, 8:02 am

[ http://issues.apache.org/jira/brows...ON-101?page=all ]

Graham Dumpleton resolved MODPYTHON-101:
----------------------------------------

Fix Version: 3.3
Resolution: Fixed

> 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.7, 3.1.4
> Reporter: Graham Dumpleton
> Assignee: 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.


Sponsored Links






Free braindumps | Software forum | Database administration forum

Copyright 2003 - 2008 webservertalk.com