All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jakub Narebski <jnareb@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] gitweb: Return or exit after done serving request
Date: Mon, 14 Jun 2010 10:28:58 +0200	[thread overview]
Message-ID: <201006141029.00310.jnareb@gmail.com> (raw)
In-Reply-To: <7v1vcach4x.fsf@alter.siamese.dyndns.org>

On Mon, 14 June 2010, Junio C Hamano wrote:
> Jakub Narebski <jnareb@gmail.com> writes:
> 
> > diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
> > index e108bbc..02f366d 100755
> > --- a/gitweb/gitweb.perl
> > +++ b/gitweb/gitweb.perl
> > @@ -987,7 +987,16 @@ if ($action !~ m/^(?:opml|project_list|project_index)$/ &&
> >  	die_error(400, "Project needed");
> >  }
> >  $actions{$action}->();
> > +
> >  DONE_GITWEB:
> > +if (defined caller) {
> > +	# wrapped in a subroutine processing requests,
> > +	# e.g. mod_perl with ModPerl::Registry, or PSGI with Plack::App::WrapCGI
> > +	return;
> > +} else {
> > +	# pure CGI script, serving single request
> > +	exit;
> > +}
> >  1;
> 
> Is the last "1;" still needed if we did this?

Probably not, and probably we never need this.

> 
> I am guessing that this new codeblock will go inside "sub run" when
> merging with your c2394fe (gitweb: Put all per-connection code in run()
> subroutine, 2010-05-07) and Sam's a0446e7 (gitweb: Add support for
> FastCGI, using CGI::Fast, 2010-05-07).  If I am mistaken, please advise.

No, the code is meant to be after last code to be run in gitweb, 
in *top level* scope, otherwise it would always return.

So the patch merged with commits mentioned above ('jn/gitweb-fastcgi',
old or new) would look like the following... but I am not sure if it
is needed, as I tried to reproduce error / warning that I got to ensure
that the patch really fixes it (as in new post "sub run" code there
are subroutine definitions before end of 'main' code, i.e. run(); in
new post "sub run" code, $actions{$action}->(); in pre "sub run" code)
and I couldn't get again this:

  /var/log/httpd/error_log:
  ...
  [Sun Jun 13 11:58:02 2010] gitweb.cgi: Subroutine git_atom redefined at /var/www/perl/gitweb/gitweb.cgi line 6804.
  [Sun Jun 13 11:58:02 2010] gitweb.cgi: Subroutine git_opml redefined at /var/www/perl/gitweb/gitweb.cgi line 6808.
  ...gi-bin

Lets table it now.

-- >8 --
Subject: [RFC/PATCH] gitweb: Return or exit after done serving request

Check if there is a caller in top frame of gitweb, and either 'return'
if gitweb code is wrapped in subroutine, or 'exit' if it is not.

This should avoid

  gitweb.cgi: Subroutine git_SOMETHING redefined at gitweb.cgi line NNN

warnings in error_log when running gitweb with mod_perl (using
ModPerl::Registry handler)

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
---
 gitweb/gitweb.perl |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 14ef50c..43589b5 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -1111,6 +1111,16 @@ sub run {
 
 run();
 
+if (defined caller) {
+	# wrapped in a subroutine processing requests,
+	# e.g. mod_perl with ModPerl::Registry, or PSGI with Plack::App::WrapCGI
+	return;
+} else {
+	# pure CGI script, serving single request
+	# or 'exit' hijacked appropriately
+	exit;
+}
+
 ## ======================================================================
 ## action links
 
-- 
1.7.0.1

  reply	other threads:[~2010-06-14  8:29 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-13 10:09 [PATCH] gitweb: Return or exit after done serving request Jakub Narebski
2010-06-14  5:33 ` Junio C Hamano
2010-06-14  8:28   ` Jakub Narebski [this message]
2010-06-14 20:54     ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201006141029.00310.jnareb@gmail.com \
    --to=jnareb@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.