From: Jakub Narebski Date: Fri, 28 May 2010 19:58:55 GMT Subject: Re: [PATCH 2/3] git-instaweb: Wait for server to start before running web browser Message-ID: <201005282158.57998.jnareb@gmail.com> In-Reply-To: On Fri, 28 May 2010, Pavan Kumar Sunkara wrote: > Jakub Narebski wrote; > > > > It uses IO::Socket::INET module, which is core Perl module since v5.6.0. > > Core module means it will be installed by default in v5.6. But what > happens in case of lower versions of Perl? Gitweb itself requires even higher version of Perl for its utf-8 support: at least v5.8.0 for Encode module, and IIRC at least v5.8.3 or even v5.8.6 for correct handling of utf-8. Perl v5.8.6 was released in 2006. > > > +httpd_is_ready () { > > +       "$PERL" -MIO::Socket::INET -e " > > +local \$| = 1; # turn on autoflush > > +exit if (IO::Socket::INET->new('127.0.0.1:$port')); > > +print 'Waiting for \'$httpd\' to start ..'; > > +do { > > +       print '.'; > > +       sleep(1); > > +} until (IO::Socket::INET->new('127.0.0.1:$port')); > > +print qq! (done)\n!; > > +" > > +} > > + > > One of the solution is to add a web server specific branch in httpd_is_ready(). > So, if the server is plackup it load the module and checks the port, > if not it will just continue. > > Just an idea for a common usage. The above solution is universal, and works for any web server. We can add web server specific branch in httpd_is_ready() to use e.g. server_startup hook (and some blocking mechanism) for server(s) which support it. -- Jakub Narebski Poland