Thanks Christoph, I've taken your suggestions and applied them to my
patchset for 
ThreadedAppServer for Webware 1.0.2, below:

--- WebKit/ThreadedAppServer.py.orig    Mon Jun 29 08:54:13 2009
+++ WebKit/ThreadedAppServer.py Mon Jun 29 09:39:28 2009
@@ -271,6 +271,20 @@
                try:
                        sock.bind(serverAddress)
                        sock.listen(1024)
+                       try:
+                               import fcntl
+                       except ImportError, e:
+                               # Platform does not have fcntl module
+                               pass
+                       else:
+                               fd = sock.fileno()
+                               flags = fcntl.fcntl(fd, fcntl.F_GETFD)
+                               try:
+                                       flags |= fnctl.FD_CLOEXEC
+                               except AttributeError, e:
+                                       # Python 2.2 does not include
FD_CLOEXEC
+                                       flags |= 1
+                               fcntl.fcntl(fd, fcntl.F_SETFD, flags)
                except Exception:
                        print "Error: Can not listen for %s on %s" % (
                                handlerClass.settingPrefix,
str(serverAddress))

Having this in the main distribution would be great!

I have a few more suggestions for upstreaming patches, which I'll send
to the list separately.

-Justin Akehurst

> -----Original Message-----
> From: Christoph Zwerschke [mailto:c...@online.de]
> Sent: Saturday, June 27, 2009 1:51 AM
> To: Discussion of Webware for Python including feedback and proposals.
> Subject: Re: [Webware-discuss] socket close-on-exec patch needed
anymore on
> ThreadedAppServer?
> 
> Hi Justin,
> 
> > I'm in the process of upgrading Webware to version 1.0.2 from
version
> 0.8.4
> 
> You probably mean 0.8.1? Please note that you should create a new app
> work dir in this case (with MakeAppWorkDir) and move your contexts
etc.
> to the new app work dir, since some things have changed here.
> 
> > We currently have a patch that we apply to the older version to add
> > in socket close-on-exec within the ThreadedAppServer, like so:
> >
> > Do we need to reapply this patch to Webware 1.0.2, or was
>  > ThreadedAppServer rewritten to avoid this problem?
> 
> No, it seems this patch has never been suggested. It makes sense when
> your app forks its own processes, right? I can try to get this into
> 1.0.3/1.1 (needs to be done carefully, because it works only on Unix,
> and F_SETFD and FD_CLOEXEC may not be defined in all Py versions).
> 
> If you want to do it with Webware 1.0.2, you need to apply your patch
> after line 273 of ThreadedAppServer.py.
> 
> -- Christoph
> 
>
------------------------------------------------------------------------
----
> --
> _______________________________________________
> Webware-discuss mailing list
> Webware-discuss@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/webware-discuss

------------------------------------------------------------------------------
_______________________________________________
Webware-discuss mailing list
Webware-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/webware-discuss

Reply via email to