| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@393955 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@390571 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
| |
(which is currently 65535)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@389847 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
|
|
| |
given socket. This somewhat makes up for our lack of a good way to
manage connections to a given proxy backend.
* support/fcgistarter.c
(main): Accept a new -N option that controls how many child procs
we fork off.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@383774 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
| |
* support/fcgistarter.c
(main): Give the usage message if we get a bogus port argument.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@383415 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
daemonization and sockets magic to let a standard fastcgi program listen
on a TCP port.
Unfortunately due to some requirements of the FastCGI libraries and the
way APR process creation works this currently requires platform specific
code and thus only works on Unix systems.
* support/fcgistarter.c: New program.
* support: Add fcgistarter to svn:ignore.
* support/Makefile.in: Build fcgistarter.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@383414 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
| |
* modules/proxy/mod_proxy_fcgi.c
(dispatch): Use the worker timeout for our polls, falling back to the
old behavior of 30 seconds if there is no worker timeout set.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@383292 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
fcgi backend. This lets Rails apps work under a balancer setup without
any hacks to Rails itself.
* modules/proxy/mod_proxy_balancer.c
(proxy_balancer_canon): Set r->path_info based on the path we got
from parsing the URL.
* modules/proxy/mod_proxy_fcgi.c
(proxy_fcgi_canon): Remove the comment about balancer not setting
the path_info.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@383291 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
this point we lack a good way to manage them, and thus it's really
easy to end up with situations where you get weird timeouts because
other worker process are holding all the connections open.
This allows Rails applications to reliably work with mod_proxy_fcgi.
* modules/proxy/mod_proxy_fcgi.c
(dispatch): Add a timeout for our poll. This should be controlled
by a config option of some sort, but for now just hardcode it.
(proxy_fcgi_handler): Set close_on_recycle to 1, so we don't hold
open connections to the fastcgi processes.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@383278 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
actually being debugged at the moment. Also note a problem with the way
we handle the path info setup.
* modules/proxy/mod_proxy_fcgi.c
(proxy_fcgi_canon): Log the filename and path info when we set them,
add a note that the path info stuff isn't being set if we're run in
a balancer setup, which needs to be fixed somehow.
(send_environment): Add an (ifdefed) call to log the environment vars
we send to the backend server.
(dump_header_to_log): Default to ifdefing this out, we're a bit beyond
bugs in the raw FCGI protocol at this point and it fills up the logs.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@383239 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
| |
(dispatch): Remove extra level of indentation.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@377284 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
| |
content passing, as compared to simply spooling
all the content in until clen == 0. Also, we
need to cleanup the brigade after each pass.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@376346 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
| |
good idea to go ahead and pass the data along.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@376318 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
| |
just better and more consistant.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@376297 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
|
|
| |
to create a long lived pool, we can use one that's local to the function.
* modules/proxy/mod_proxy_fcgi.c
(proxy_fcgi_baton_t): Removed.
(dispatch): Use a local setaside pool instead of one from the baton.
(proxy_fcgi_handler): Don't bother creating a baton.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@373269 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
strange problems with really large numbers of headers, but I'm starting to
suspect that it's a problem with my FastCGI lib, not this module, and this
at least makes things shorter and a bit easier to read, along with fixing
one bug.
* modules/proxy/mod_proxy_fcgi.c
(handle_headers): Get rid of some cases that were not strictly needed.
Insert a case that was missed that screwed things up when there were
more than one header.
(dispatch): Move the 'done with headers' code into the preceding block,
add a note about a case that needs to be investigated.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@371840 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
|
|
| |
end fastcgi process.
* modules/proxy/mod_proxy_fcgi.c
(send_data, get_data): New wrapper functions that do the sendv/recv
stuff and then update the proper statistics.
(send_begin_request, send_environment, dispatch): Use send_data/get_data.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@371560 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
| |
* modules/proxy/mod_proxy_fcgi.c
(proxy_fcgi_handler): Stop describing the old URL style, remove a stray
empty line.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@371431 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the old code, we'd fail to detect the end of the headers if they were split
over multiple fastcgi records, or if the cgi script used \n at the end of
each header instead of \r\n.
* modules/proxy/mod_proxy_fcgi.c
(HDR_STATE_READING_HEADERS,
HDR_STATE_GOT_CR,
HDR_STATE_GOT_CRLF,
HDR_STATE_GOT_CRLFCR,
HDR_STATE_GOT_LF,
HDR_STATE_DONE_WITH_HEADERS): Constants to track where we are in parsing
the end of the headers.
(handle_headers): Take the current parsing state as an argument, use a
state machine to detect the end of the headers instead of strstr.
(dispatch): Pass the state to handle_headers.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@371428 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
|
|
| |
* modules/proxy/mod_proxy_fcgi.c
(proxy_fcgi_canon): Stop pretending unix domain sockets will need their
own url scheme.
(FCGI_SCHEME): New constant to describe the FastCGI proxy backend.
(proxy_fcgi_handler): Drop the fcgi-local stuff, use FCGI_SCHEME now that
we aren't worrying about multiple types of FastCGI workers.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@367906 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
|
| |
still correctly handle cases where we need to ship those structs
over the wire, by transforming them from FCGI structs to
unsigned char arrays. Place the logic of mapping that
struct to the arrays in distinct functions, isolating
them.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@367300 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
it seems clear that we're going to need to be able to specify arbitrary
portions of the URL that need to be added to the path info. Follow the
lead of mod_proxy_http and add the calculation of this into the canon
handler.
* modules/proxy/mod_proxy_fcgi.c
(proxy_fcgi_canon): Add the path portion of the back end URL to the
path_info of the request, via the ap_proxy_canonenc function.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@367208 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
|
| |
passed on to the back end FastCGI process.
* modules/proxy/mod_proxy_fcgi.c
(proxy_fcgi_canon): Use the post-hostname portion of the URL as the
path info for the request.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@367170 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
there's no reason that request ids wouldn't be matching up. Until we
see an example of a request id mismatch error that is absolutely not
caused by an error in our parsing of the FastCGI protocol, we should
be able to go back to treating mismatches as errors.
* modules/proxy/mod_proxy_fcgi.c
(dispatch): Remove #ifdef that turned off treating rid mismatches as
fatal errors.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@366985 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
| |
* modules/proxy/mod_proxy_fcgi.c
(fcgi_do_request): We're no longer just handling STDIN in this call...
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@366927 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
used a struct to hold the data when writing it, but read it into an array
when reading it. This meant that the knowledge of the header layout was
in two places. This change moves both sides to using an array, and adds
a set of #defines for the offsets into the array, so neither side can get
out of sync.
This also moves the logic for setting up the content length bytes into one
place, where before we had it in several places.
* modules/proxy/fcgi_protocol.h
(fcgi_header): Removed.
(FCGI_HDR_VERSION_OFFSET,
FCGI_HDR_TYPE_OFFSET,
FCGI_HDR_REQUEST_ID_B1_OFFSET,
FCGI_HDR_REQUEST_ID_B0_OFFSET,
FCGI_HDR_CONTENT_LEN_B1_OFFSET,
FCGI_HDR_CONTENT_LEN_B0_OFFSET,
FCGI_HDR_PADDING_LEN_OFFSET,
FCGI_HDR_RESERVED_OFFSET): New constants.
* modules/proxy/mod_proxy_fcgi.c
(fill_in_header): Take an array, not a struct pointer, and handle all
the contents of the header, not just the type and request id.
(send_begin_request, send_environment, dispatch): Update for new way
to fill in headers.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@366926 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
| |
makes everything consistent with regard to spacing, line length, etc.
* modules/proxy/mod_proxy_fcgi.c
(dump_header_to_log, dispatch, proxy_fcgi_handler): Clean up.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@366414 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
cleanup, but at least it keeps us from messing up the stream when we get
stuff written to stderr by the fastcgi process.
* modules/proxy/mod_proxy_fcgi.c
(dispatch): Move the plen recv down after the switch, so it gets done
for all cases that have padding. Read data for the FCGI_STDERR case
just like we do for FCGI_STDOUT, but write it to the log instead of
sending it to the client.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@366412 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
down on some of the crazy verbose logging, since this seems to be
the problem we were trying to find.
* modules/proxy/mod_proxy_fcgi.c
(dispatch): Remove really verbose logging, move reading of the
padding bytes down to the end of the FCGI_STDOUT case.
Tested By: iholsman
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@366086 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
| |
right now it looks like for large requests it isn't reading enough off the wire.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@365863 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@365824 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
people have seen where rid != request_id.
* modules/proxy/mod_proxy_fcgi.c
(dispatch): Stop initializing things we're just going to assign over
them later, initialize all of the rid and clen variables, and fix a
warning from passing an unsigned char array into apr_socket_recv by
adding a cast to char *.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@365813 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
| |
struct, and assuming that it's following the correct format,
we should be extra careful when rec'ing the header info, and
ensure that each byte is followed one after another.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@365698 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@365643 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@365432 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
| |
other FCGI modules (like mod_fcgid) don't bother to test
the return request_id...
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@365387 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
| |
be explicit about it. Also removes the need to clean up
the readbuf again, and any potential for confusion on
what we are doing ;)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@365376 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
| |
current socket, since we don't know if we are left in a working state.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@360174 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* modules/proxy/mod_proxy_fcgi.c
(proxy_fcgi_baton_t): New struct, holds per-connection data.
(dispatch): Set buckets aside into the scratch pool in the baton,
clearing it when we pass the baton on. Deal with the case where
the content length is larger than AP_IOBUFSIZE. Consistently use
sizeof when referring to the length of buffers. Explicitly null
terminate the read buffer after reading. Read the padding bytes
in a second pass to simplify logic.
(proxy_fcgi_handler): Create our baton and stash it in the connection's
data member.
Submitted By: Garrett Rooney <rooneg apache.org>
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@360164 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
back end fastcgi process. This includes switching to a poll based dispatch
loop that handles interleaved reads and writes.
* modules/proxy/mod_proxy_fcgi.c
(MAX_INPUT_BYTES): Removed, we now use AP_IOBUFSIZE.
(handle_headers): New helper function for parsing headers out of the
response data.
(send_stdin): Removed, code incorporated into dispatch routine.
(dispatch): New, poll based dispatch loop that handles both reads and
writes.
(fcgi_do_request): Call new dispatch routine. Return OK if we get
through without errors.
Submitted By: Garrett Rooney <rooneg apache.org>
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@359901 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
process.
* modules/proxy/mod_proxy_fcgi.c
(fill_in_header): New helper function.
(send_begin_request, send_environment): Fix formatting, use fill_in_header.
(MAX_INPUT_BYTES): New constant.
(send_stdin): New function.
(fcgi_do_request): Send the body of the request via send_stdin.
Submitted By: Garrett Rooney <rooneg apache.org>
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@359183 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to mod_proxy_fcgi.
* modules/proxy/mod_proxy_fcgi.c
(proxy_fcgi_canon): Remove unused variables, wrap a long line.
(send_begin_request): Helper function to send the FCGI_BEGIN_REQUEST
message.
(send_environment): Helper function to send the environment.
(fcgi_do_request): Use send_begin_request and send_environment.
Submitted By: Garrett Rooney <rooneg apache.org>
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@359043 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
| |
- Add basic structures, defined in the FastCGI Spec.
- Write a request to the server.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@358719 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
| |
ProxyPass / fcgi-tcp://localhost:9000/, and we will try to connect with TCP.
I still need to write supporting code to send/recv the FastCGI protocol packets.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@358690 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
| |
yet, but is the base for more development. I hope to work on this more tomorrow.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@357444 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/fcgi-proxy-dev@357431 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
|
|
|
| |
flush bucket is pre- and postfixed by data buckets in the brigade.
Submitted by: Ruediger Pluem
Reviewed by: Justin Erenkrantz, Joe Orton, Jim Jagielski
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@357328 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@357234 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
| |
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@357231 13f79535-47bb-0310-9956-ffa450edef68
|
|
|
|
|
|
|
| |
and use $(MAKEOPT) -f syntax throughout to avoid problems
on mingw, borland, etc.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@357226 13f79535-47bb-0310-9956-ffa450edef68
|