Jakub Narebski <jnareb@xxxxxxxxx> writes: > Always return just after HTTP header is sent when asking only about > headers (HTTP request method 'HEAD'); first appeared in git_rss. > > While at it uniquify style of http_header(...) calls, formerly > "print $cgi->header(...)", and remove default HTTP status, '200 OK'. > > Signed-off-by: Jakub Narebski <jnareb@xxxxxxxxx> > --- > This one is fairly generic, and if considered worthy, I think > can be accepted without much ado. Maybe I am missing something fundamental, but I cannot see how this affects anything whatsoever... > +## functions printing HTTP or HTML: header, footer, error page > + > +sub http_header { > + my @header = @_; > + > + print $cgi->header(@header); > + > + # Optimization: skip generating the body if client asks only > + # for HTTP header (e.g. cache validation). > + return if ($cgi->request_method() eq 'HEAD'); > +} Ok, so this explicitly written "return" returns when it is a HEAD request not GET. Otherwise the control falls out of the end of the function. Either way you return undef. Then the caller does... > @@ -1709,8 +1719,11 @@ sub git_header_html { > } else { > $content_type = 'text/html'; > } > - print $cgi->header(-type=>$content_type, -charset => 'utf-8', > - -status=> $status, -expires => $expires); > + http_header( > + -type => $content_type, > + -charset => 'utf-8', > + -status => $status, > + -expires => $expires); > print <<EOF; > <?xml version="1.0" encoding="utf-8"?> > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> which means it does not omit generating the body anyway no matter what "sub http_header" did... Or is there some Perl magic that makes a return from sub named *_header magically terminate the execution of the caller? Puzzled... - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html