Graham King wrote:
We migrated a Zope DTML application from Solaris systems (where it worked fine on 3 different Zope instances) to two openBSD systems. An obscure bit of "superfluous" DTML code caused lib/python/DTML.py to crash.
Of course, when using ProxyPass method, it caused Zope itself to crash, but if we used FastCGI or port 8080, then it just failed...
What do you mean by crash? I've never had that problem with ProxyPass...
The offending code (marked *)
<dtml-if sequence-end> * <dtml-call "REQUEST.set('span', (5 - (_.int(_.getitem('sequence-number')) % 4)) )"> * <dtml-if "_.getitem('span') > 4"><dtml-call "REQUEST.set('span', 1)"></dtml-if> <dtml-else> <dtml-call "REQUEST.set('span', 1)"> </dtml-if>
then fixed with:
<dtml-call "REQUEST.set('span', 1 )"> <dtml-if "_.getitem('span') > 4"><dtml-call "REQUEST.set('span', 1)"></dtml-if>
This is pretty offensive code anyway! ;-) You should be using a python script for all this logic, and more than likely ZPT instead of DTML. Then your life will be much less painfull...
"ok.. but be prepared for some abuse about the shitty code.. I don't remember what I was thinking at the time and I could not understand what I was doing when I read it back.. that is generally a sign of bad code :)"
...no comment ;-)
We're all still learning.... :) I was just surprised (read "horrified", since it was production) that some DTML appln code would crash Zope itself.
I wouldn't expect a crash, comeone should look into that further... cheers, Chris