<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/apache/httpd.git/modules/http, branch apreq-integration</title>
<subtitle>github.com: apache/httpd.git
</subtitle>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/apache/httpd.git/'/>
<entry>
<title>Hopefully the final fix for the subreq/filter issue. The</title>
<updated>2008-12-10T13:01:31+00:00</updated>
<author>
<name>Jim Jagielski</name>
<email>jim@apache.org</email>
</author>
<published>2008-12-10T13:01:31+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/apache/httpd.git/commit/?id=6777364613148c8d39f5520aba92d9475e9302c4'/>
<id>6777364613148c8d39f5520aba92d9475e9302c4</id>
<content type='text'>
prob was that we at this point could still have some
stale and incorrect refs when we adjusted the f-stack.
So move the update earlier so when we adjust, we're
affecting r. Rdiger and Jim pretty much
simultaneously :)


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@725077 13f79535-47bb-0310-9956-ffa450edef68
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
prob was that we at this point could still have some
stale and incorrect refs when we adjusted the f-stack.
So move the update earlier so when we adjust, we're
affecting r. Rdiger and Jim pretty much
simultaneously :)


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@725077 13f79535-47bb-0310-9956-ffa450edef68
</pre>
</div>
</content>
</entry>
<entry>
<title>reset chain if we need to...</title>
<updated>2008-12-09T18:19:20+00:00</updated>
<author>
<name>Jim Jagielski</name>
<email>jim@apache.org</email>
</author>
<published>2008-12-09T18:19:20+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/apache/httpd.git/commit/?id=a36484e4e0c74dcc696bbf0a3848b0398b5a5bd9'/>
<id>a36484e4e0c74dcc696bbf0a3848b0398b5a5bd9</id>
<content type='text'>
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@724805 13f79535-47bb-0310-9956-ffa450edef68
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@724805 13f79535-47bb-0310-9956-ffa450edef68
</pre>
</div>
</content>
</entry>
<entry>
<title>* Correctly remove the SUBREQ_CORE filter from the filter chain if we do an</title>
<updated>2008-12-08T22:18:27+00:00</updated>
<author>
<name>Ruediger Pluem</name>
<email>rpluem@apache.org</email>
</author>
<published>2008-12-08T22:18:27+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/apache/httpd.git/commit/?id=206fa0e2f47a9cbcc32af30e3730cd590b99e375'/>
<id>206fa0e2f47a9cbcc32af30e3730cd590b99e375</id>
<content type='text'>
  internal fast redirect and if the new redirected request is NO subrequest.
  This fixes at least one of the possible subtle issues mentioned in the
  comment to r620133.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@724515 13f79535-47bb-0310-9956-ffa450edef68
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  internal fast redirect and if the new redirected request is NO subrequest.
  This fixes at least one of the possible subtle issues mentioned in the
  comment to r620133.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@724515 13f79535-47bb-0310-9956-ffa450edef68
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove X-Pad work around.</title>
<updated>2008-12-05T05:10:13+00:00</updated>
<author>
<name>Paul Querna</name>
<email>pquerna@apache.org</email>
</author>
<published>2008-12-05T05:10:13+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/apache/httpd.git/commit/?id=e70a4ba68c826d6a3d4b33e41f457a20d5e31b5c'/>
<id>e70a4ba68c826d6a3d4b33e41f457a20d5e31b5c</id>
<content type='text'>
Submitted by: Takashi Sato &lt;takashi lans-tv.com&gt;


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@723585 13f79535-47bb-0310-9956-ffa450edef68
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Submitted by: Takashi Sato &lt;takashi lans-tv.com&gt;


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@723585 13f79535-47bb-0310-9956-ffa450edef68
</pre>
</div>
</content>
</entry>
<entry>
<title>Import the core parts of the DTrace patch.  This is a modified and updated </title>
<updated>2008-12-05T03:34:52+00:00</updated>
<author>
<name>Paul Querna</name>
<email>pquerna@apache.org</email>
</author>
<published>2008-12-05T03:34:52+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/apache/httpd.git/commit/?id=f47b6f394ef7c9639388b3c0815947016e333764'/>
<id>f47b6f394ef7c9639388b3c0815947016e333764</id>
<content type='text'>
version of what was submited by Theo before:
 &lt;http://mail-archives.apache.org/mod_mbox/httpd-dev/200805.mbox/%3C6AFBCFE8-4CCA-4A02-8A43-F9170689695D@omniti.com%3E&gt;

Note, this does not hook it up into the build system at this time, because
the original patch was a little too creative there.

Submitted By: Theo Schlossnagle &lt;jesus omniti.com&gt;


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@723565 13f79535-47bb-0310-9956-ffa450edef68
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
version of what was submited by Theo before:
 &lt;http://mail-archives.apache.org/mod_mbox/httpd-dev/200805.mbox/%3C6AFBCFE8-4CCA-4A02-8A43-F9170689695D@omniti.com%3E&gt;

Note, this does not hook it up into the build system at this time, because
the original patch was a little too creative there.

Submitted By: Theo Schlossnagle &lt;jesus omniti.com&gt;


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@723565 13f79535-47bb-0310-9956-ffa450edef68
</pre>
</div>
</content>
</entry>
<entry>
<title>* Avoid sending no answer at all if a custom error page causes an</title>
<updated>2008-12-01T20:27:27+00:00</updated>
<author>
<name>Ruediger Pluem</name>
<email>rpluem@apache.org</email>
</author>
<published>2008-12-01T20:27:27+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/apache/httpd.git/commit/?id=cd505682e9cba5aead0cdfd56089b2273f0bcebe'/>
<id>cd505682e9cba5aead0cdfd56089b2273f0bcebe</id>
<content type='text'>
  AP_FILTER_ERROR.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@722213 13f79535-47bb-0310-9956-ffa450edef68
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  AP_FILTER_ERROR.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@722213 13f79535-47bb-0310-9956-ffa450edef68
</pre>
</div>
</content>
</entry>
<entry>
<title>To be safe, consume the entire brigade after processing an error bucket in</title>
<updated>2008-12-01T14:31:51+00:00</updated>
<author>
<name>Eric Covener</name>
<email>covener@apache.org</email>
</author>
<published>2008-12-01T14:31:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/apache/httpd.git/commit/?id=5d9555b238f577da070832b90fb53e95bb2f817a'/>
<id>5d9555b238f577da070832b90fb53e95bb2f817a</id>
<content type='text'>
the HTTP output filter.

Submitted by: Rudeiger Pluem
Reviewed by: niq, covener



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@722081 13f79535-47bb-0310-9956-ffa450edef68
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
the HTTP output filter.

Submitted by: Rudeiger Pluem
Reviewed by: niq, covener



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@722081 13f79535-47bb-0310-9956-ffa450edef68
</pre>
</div>
</content>
</entry>
<entry>
<title>Make %k work as it should. No regression noted in perl</title>
<updated>2008-11-24T18:33:09+00:00</updated>
<author>
<name>Jim Jagielski</name>
<email>jim@apache.org</email>
</author>
<published>2008-11-24T18:33:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/apache/httpd.git/commit/?id=51df5d37cb7a8b4f59ae6775a7f995600da8af69'/>
<id>51df5d37cb7a8b4f59ae6775a7f995600da8af69</id>
<content type='text'>
test framework.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@720250 13f79535-47bb-0310-9956-ffa450edef68
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
test framework.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@720250 13f79535-47bb-0310-9956-ffa450edef68
</pre>
</div>
</content>
</entry>
<entry>
<title>* modules/http/http_request.c</title>
<updated>2008-10-29T08:18:45+00:00</updated>
<author>
<name>Paul Querna</name>
<email>pquerna@apache.org</email>
</author>
<published>2008-10-29T08:18:45+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/apache/httpd.git/commit/?id=92e9540e3b0bed90b92a01d3475cf067e4f22348'/>
<id>92e9540e3b0bed90b92a01d3475cf067e4f22348</id>
<content type='text'>
  (ap_process_async_request): Fix warning: 'return' with a value, in function 
      returning void


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@708821 13f79535-47bb-0310-9956-ffa450edef68
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
  (ap_process_async_request): Fix warning: 'return' with a value, in function 
      returning void


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@708821 13f79535-47bb-0310-9956-ffa450edef68
</pre>
</div>
</content>
</entry>
<entry>
<title>Introduce Suspendable Requests to the Event MPM.</title>
<updated>2008-09-20T11:58:08+00:00</updated>
<author>
<name>Paul Querna</name>
<email>pquerna@apache.org</email>
</author>
<published>2008-09-20T11:58:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/apache/httpd.git/commit/?id=767cc30c029cabba2796303f705bf6e8595083a5'/>
<id>767cc30c029cabba2796303f705bf6e8595083a5</id>
<content type='text'>
Using this basic framework, you can return SUSPENDED from an HTTP Handler,
and then register a callback that is invoked by the MPM at a later time.

This initial version only supports _timers_ as callbacks, but in the future I
would like to add things like wait for socket activity, on a socket specified by
the handler.

Once in a callback, It is then the responsibility of the callback fucntion 
to finish the HTTP Request handling, but this alows you to do cool things like 
a fully async proxy, COMET support, or even rate limiting.

To prove I'm not insane, I've inlcuded an example module, mod_dialup.

You can configure it like this:
&lt;Location "/docs"&gt;
  ModemStandard "V.32"
&lt;/Location&gt;

And for static files inside that path, you will be rate limited to V.32 speeds, 
aka 9.6 kilobits/second.

Does anyone besides RÃ¼diger read commit emails :-) ?

I know there are likely huge problems with this, but I would like to see how far
we can push the Event MPM, figure out what to do better, if there is anything, 
and then really dive into the 3.0 development before ApacheCon.

* server/mpm/experimental/event/fdqueue.h:
    (timer_event_t): New structure to hold timer events and callback functions.
    
* server/mpm/experimental/event/fdqueue.c
    (ap_queue_empty): Modify to also look at Timer Ring.

    (ap_queue_init): Initialize Timer Ring.

    (ap_queue_push_timer): New function, pushes a timer event into the queue.

    (ap_queue_pop_something): Renamed function, returns a timer event or
        a socket/pool for a worker thread to run.


* server/mpm/experimental/event/event.c
    (process_socket): If the connection is in SUSPENDED state, don't force it
        into linger mode yet, the callback will have to take care of that.

    (push_timer2worker): New shortcut function, pushes timer event into queue
        for a worker to run.

    (timer_free_ring): New global data structure to recycle memory used by 
        timer events.

    (timer_ring): New global data structure to hold active timer events.

    (g_timer_ring_mtx): Thread mutex to protect timer event data structures.

    (ap_mpm_register_timed_callback): New Function, registers a callback to be
        invoked by the MPM at a later time.

    (listener_thread): Calculate our wakeup time based on the upcoming Event 
        Queue, and after pollset_poll runs, push any Timers that have passed
        onto worker threads to run.
    
    (worker_thread): Call new queue pop method, and if the Timer Event is 
        non-null, invoke the callback.  Once the callback is done, push the
        structure onto the timer_free_ring, to be recycled.

    (child_main): Initialize new mutex and ring structures.


* server/config.c
    (ap_invoke_handler): Allow SUSPENDED aa valid return code from handlers.


* modules/http/http_core.c
    (ap_process_http_async_connection): Don't close the connection when in 
        SUSPENDED state.


* modules/http/http_request.c
    (ap_process_request_after_handler): New function, body pulled from the old,
        ap_process_async_request.  Split to let handlers invoke this so they 
        don't need to know all of the details of finishing a request.

    (ap_process_async_request): If the handler returns SUSPENDED, don't do
        anything but return.


* include/ap_mmn.h: Bump MMN.


* include/ap_mpm.h
    (ap_mpm_register_timed_callback): New function.


* include/httpd.h:
    (SUSPENDED): New return code for handlers.
    (request_rec::invoke_mtx): New mutex to protect callback invokcations
        from being run before the original handler finishes running.
    (conn_state_e): Add a suspended state.


* include/http_request.h
    (ap_process_request_after_handler): New function to make it easier for 
        handlers to finish the HTTP Request.


* modules/test/config.m4: Add mod_dialup to build.


* modules/test/mod_dialup.c: New rate limiting module, requires the Event MPM 
    to work.




git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@697357 13f79535-47bb-0310-9956-ffa450edef68
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Using this basic framework, you can return SUSPENDED from an HTTP Handler,
and then register a callback that is invoked by the MPM at a later time.

This initial version only supports _timers_ as callbacks, but in the future I
would like to add things like wait for socket activity, on a socket specified by
the handler.

Once in a callback, It is then the responsibility of the callback fucntion 
to finish the HTTP Request handling, but this alows you to do cool things like 
a fully async proxy, COMET support, or even rate limiting.

To prove I'm not insane, I've inlcuded an example module, mod_dialup.

You can configure it like this:
&lt;Location "/docs"&gt;
  ModemStandard "V.32"
&lt;/Location&gt;

And for static files inside that path, you will be rate limited to V.32 speeds, 
aka 9.6 kilobits/second.

Does anyone besides RÃ¼diger read commit emails :-) ?

I know there are likely huge problems with this, but I would like to see how far
we can push the Event MPM, figure out what to do better, if there is anything, 
and then really dive into the 3.0 development before ApacheCon.

* server/mpm/experimental/event/fdqueue.h:
    (timer_event_t): New structure to hold timer events and callback functions.
    
* server/mpm/experimental/event/fdqueue.c
    (ap_queue_empty): Modify to also look at Timer Ring.

    (ap_queue_init): Initialize Timer Ring.

    (ap_queue_push_timer): New function, pushes a timer event into the queue.

    (ap_queue_pop_something): Renamed function, returns a timer event or
        a socket/pool for a worker thread to run.


* server/mpm/experimental/event/event.c
    (process_socket): If the connection is in SUSPENDED state, don't force it
        into linger mode yet, the callback will have to take care of that.

    (push_timer2worker): New shortcut function, pushes timer event into queue
        for a worker to run.

    (timer_free_ring): New global data structure to recycle memory used by 
        timer events.

    (timer_ring): New global data structure to hold active timer events.

    (g_timer_ring_mtx): Thread mutex to protect timer event data structures.

    (ap_mpm_register_timed_callback): New Function, registers a callback to be
        invoked by the MPM at a later time.

    (listener_thread): Calculate our wakeup time based on the upcoming Event 
        Queue, and after pollset_poll runs, push any Timers that have passed
        onto worker threads to run.
    
    (worker_thread): Call new queue pop method, and if the Timer Event is 
        non-null, invoke the callback.  Once the callback is done, push the
        structure onto the timer_free_ring, to be recycled.

    (child_main): Initialize new mutex and ring structures.


* server/config.c
    (ap_invoke_handler): Allow SUSPENDED aa valid return code from handlers.


* modules/http/http_core.c
    (ap_process_http_async_connection): Don't close the connection when in 
        SUSPENDED state.


* modules/http/http_request.c
    (ap_process_request_after_handler): New function, body pulled from the old,
        ap_process_async_request.  Split to let handlers invoke this so they 
        don't need to know all of the details of finishing a request.

    (ap_process_async_request): If the handler returns SUSPENDED, don't do
        anything but return.


* include/ap_mmn.h: Bump MMN.


* include/ap_mpm.h
    (ap_mpm_register_timed_callback): New function.


* include/httpd.h:
    (SUSPENDED): New return code for handlers.
    (request_rec::invoke_mtx): New mutex to protect callback invokcations
        from being run before the original handler finishes running.
    (conn_state_e): Add a suspended state.


* include/http_request.h
    (ap_process_request_after_handler): New function to make it easier for 
        handlers to finish the HTTP Request.


* modules/test/config.m4: Add mod_dialup to build.


* modules/test/mod_dialup.c: New rate limiting module, requires the Event MPM 
    to work.




git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@697357 13f79535-47bb-0310-9956-ffa450edef68
</pre>
</div>
</content>
</entry>
</feed>
