On Wed, Mar 20, 2002 at 09:45:51AM -0500, Neil Schemenauer wrote:
> On Wed, Mar 20, 2002 at 05:00:09AM -0500, Neal M. Holtz wrote:
> > I've found something, but don't know what it means, yet:
> >
> > in fcgi.py there is this:
> >
> > def _startup():
> > . . . lines omitted for brevity
> > try:
> > s=socket.fromfd(sys.stdin.fileno(), socket.AF_INET,
> > socket.SOCK_STREAM)
> > s.getpeername()
> > except socket.error, (err, errmsg):
> > if err!=errno.ENOTCONN: # must be a non-fastCGI environment
> > _isFCGI = 0
> > return
> >
> > The s.getpeername() call raises an exception, which causes
> > _isFCGI to be set to 0. Why does this happen?
>
> Try changing socket.error to something like "foobar" (i.e. an exception
> that will never get raised). Run it again and see what the traceback
> says. Perhaps the socket is not connected but the errno is something
> other than ENOTCONN.
Actually, I just stuck a 'raise' right after the except socket.err, and
the partial traceback is:
. . .
File "/alt/python2.1/lib/python2.1/site-packages/quixote/fcgi.py", line 382,
in _startup
s.getpeername()
socket.error: (88, 'Socket operation on non-socket')
>
> Also, since you know the script is running under FCGI you could comment
> out the s.getpeername() line and see if that works.
The script dies with an exception somewhere else when the socket
is used:
Traceback (most recent call last):
File "/files/www/data/Quotes/New/test2/test.cgi", line 13, in ?
app.publish_cgi() # Enter the publishing main loop
File "publish.py", line 677, in publish_cgi
File "/alt/python2.1/lib/python2.1/site-packages/quixote/fcgi.py", line 241,
in __init__
self.conn, addr=_sock.accept()
socket.error: (88, 'Socket operation on non-socket')
--
Neal Holtz http://www.docuweb.ca/~nholtz
Dept. of Civil and Environmental Engineering, Carleton University,
Ottawa, Ontario, Canada K1S 5B6. nholtz@docuweb.ca