- Process lingering close asynchronously instead of tying up worker threads
(based on patch by Jeff Trawick).
- If the number of connections of a process is above
threads_per_child + WORKER_OVERCOMMIT * (idle_workers - 1)
(WORKER_OVERCOMMIT is fixed at 2, at the moment), or if all workers are busy,
don't accept new connections in that process. Such a dynamic connection limit
is necessary because we may have both async and non-async (ssl) connections.
WORKER_OVERCOMMIT should be a config option.
- Don't count idle workers of not-accepting processes against MinSpareThreads,
so that the parent will spawn new processes when necessary.
- If we receive a keep-alive request while all workers are busy, don't block
but close the connection immediately so that the client will re-connect to a
different process.
Related changes:
- Log what is going on at trace loglevels.
- Remove the bypass_push poll type flag, this code cannot be hit anymore
(if it ever could?).
- Add some macro helpers for dealing with timeout queues.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1137358 13f79535-47bb-0310-9956-ffa450edef68
This define serves no modern purpose, since every module in the wild, including
our own define it, for no purpose.
If you have functions which you do not want in the 'public' API, put them
in a private header, that is not installed, just like mod_ssl does.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@645412 13f79535-47bb-0310-9956-ffa450edef68
required creating a new EOC (End-Of-Connection) bucket type to notify mod_ssl
that the connection is about to be closed.
Reviewed by: Joe Orton, Justin Erenkrantz
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@102793 13f79535-47bb-0310-9956-ffa450edef68
Add an allocator-passing mechanism throughout the bucket brigades API.
From Apache's standpoint, the apr_bucket_alloc_t* used throughout a given
connection is stored in the conn_rec by the create_connection hook. That
means it's the MPM's job to optimize recycling of apr_bucket_alloc_t's --
the MPM must ensure that no two threads can ever use the same one at the
same time, for instance.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94304 13f79535-47bb-0310-9956-ffa450edef68
acheived with the pre_connection hook. I have added the socket to the
pre_connection phase to make this possible.
Reviewed by: Bill Stoddard
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93259 13f79535-47bb-0310-9956-ffa450edef68
client_socket from the conn_rec. Diffs from Ryan's patch include:
- rename the create_connection hook to install_transport_filters
- move the point of invocation of the hook till after the call to
after ap_update_vhost_given_ip to enable the hook to use vhost
config info in its decision making.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93087 13f79535-47bb-0310-9956-ffa450edef68
conn_rec. The create_connection_hook has a design flaw that prevents it
from making decisions based on vhost information.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93050 13f79535-47bb-0310-9956-ffa450edef68
many bugs. Instead, it is called where it used to be called. I have
abstracted some of the logic out of the lingering close so that it gets
the socket from the connection using the core's conn_config vector. This
is in anticipation of a change to use a hook for the lingering close,
which I hope to do soon.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@91968 13f79535-47bb-0310-9956-ffa450edef68
takes the old ap_new_connection, and puts into the new core_create_conn
function. There is no good reason to have two functions to do this.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@91890 13f79535-47bb-0310-9956-ffa450edef68
The first step is to remove the socket from the conn_rec,
the server now lives in a context that is passed to the
core's input and output filters. This forces us to be very
careful when adding calls that use the socket directly,
because the socket isn't available in most locations.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@91887 13f79535-47bb-0310-9956-ffa450edef68
function. If it can re-use the socket, we are better off not calling
the function. To fix this, we re-expose the lingering_close function,
and we allow the MPM to remove the cleanup.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@91839 13f79535-47bb-0310-9956-ffa450edef68
a cleanup registered with the connection_pool. I have also turned
ap_lingering_close into a static function, because it is only used
in connection.c. This is the next step to consolidating all of the
socket function calls. ap_lingering_close will only be added if the
core is dealing with a standard socket.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@91832 13f79535-47bb-0310-9956-ffa450edef68
is core code, basically the default handler, the default input
and output filters, and all of the core configuration directives.
All of this code is required in order for the server to work, with or
without HTTP. The server is closer to working without the HTTP
module, although there is still more to do.
I tried to fix Windows, but somebody should probably make sure I did
it correctly.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@88449 13f79535-47bb-0310-9956-ffa450edef68
and ap_new_connection() were changed last week)
I have skipped putting the change into WinNT MPM and mod_proxy. I
left a note in the mod_proxy code; for the NT MPM I think I can talk
somebody into doing the right thing for me.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@87982 13f79535-47bb-0310-9956-ffa450edef68
fewer parameters: the local and remote socket addresses were removed
from the parameter list because all required information is available
via the APR socket.
I haven't tested the most important part -- the WinNT MPM changes
-- but it compiles and it looks okay :) If the WinNT MPM works on
Win98 these days let me know.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@87181 13f79535-47bb-0310-9956-ffa450edef68
BUFF. This has been tested, but all we can determine is that it doesn't
fail, not that it works. This needs to be tested much better.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@86709 13f79535-47bb-0310-9956-ffa450edef68
with this. To begin with, we store both the socket and the BUFF in the
conn_rec. Functions are free to use which ever they want, in the end all
of the data goes to the same place. This modifies all of the MPMs except
Windows. All of the Unix MPMs are working, but the others need to be
tested.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@86651 13f79535-47bb-0310-9956-ffa450edef68
for CORE_EXPORT to AP_CORE_DECLARE (namespace protecting the wrapper)
and retitled API_EXPORT as AP_DECLARE and APR_EXPORT as APR_DECLARE.
All _VAR_ flavors changes to _DATA to be absolutely clear.
Thank you Greg, for the most obvious suggestion.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@86609 13f79535-47bb-0310-9956-ffa450edef68
in ap_new_connection, but that is bogus, because then other modules can't
put their own filter in. Now, we do this in a new pre-connection hook
function. Later, we will want to add some checking to make sure that this
is really an HTTP request that we are adding the filter for.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@86364 13f79535-47bb-0310-9956-ffa450edef68