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
next prev parent 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.