Return-Path: X-Original-To: apmail-httpd-dev-archive@www.apache.org Delivered-To: apmail-httpd-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 7AFCD1874E for ; Mon, 5 Oct 2015 11:13:08 +0000 (UTC) Received: (qmail 66703 invoked by uid 500); 5 Oct 2015 11:13:07 -0000 Delivered-To: apmail-httpd-dev-archive@httpd.apache.org Received: (qmail 66620 invoked by uid 500); 5 Oct 2015 11:13:07 -0000 Mailing-List: contact dev-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list dev@httpd.apache.org Received: (qmail 66605 invoked by uid 99); 5 Oct 2015 11:13:07 -0000 Received: from Unknown (HELO spamd4-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 05 Oct 2015 11:13:07 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd4-us-west.apache.org (ASF Mail Server at spamd4-us-west.apache.org) with ESMTP id 17A3CC028F for ; Mon, 5 Oct 2015 11:13:07 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd4-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -0.12 X-Spam-Level: X-Spam-Status: No, score=-0.12 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=disabled Authentication-Results: spamd4-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-us-west.apache.org ([10.40.0.8]) by localhost (spamd4-us-west.apache.org [10.40.0.11]) (amavisd-new, port 10024) with ESMTP id DPMwim0Xez6G for ; Mon, 5 Oct 2015 11:13:01 +0000 (UTC) Received: from mail-qk0-f173.google.com (mail-qk0-f173.google.com [209.85.220.173]) by mx1-us-west.apache.org (ASF Mail Server at mx1-us-west.apache.org) with ESMTPS id 4112120F20 for ; Mon, 5 Oct 2015 11:13:01 +0000 (UTC) Received: by qkbi190 with SMTP id i190so46546748qkb.1 for ; Mon, 05 Oct 2015 04:13:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; bh=gPV69huueIadhZEM0XHlthnIB6AvYWIPPazTcqbsTls=; b=AYe3Gz5zL4ttIK9L0J++VN0lua9PzBXaRnCyvnShqmByUK7uItSRBXMAIWxGXRONac e8ZJKMkYcAuXHtCy1fkQA69JN0bd65r+Y/eb9W0QxG0jqpUv5lO84eKCu4nGq9wVeFmu JYJHJ8t0uaFcHnpj6EaqjVkywhKImsJkApOy83NuAdbfCZiG9my4VDdiavphsya9u2jz bSJAdY15nDQTHlx2BmBzWLp8I0nVm7RRANClPyyY9PSqsC9Le1k+0HT81RLEp2sK00lF 9Jws5I1d5WoPl80fV5rvfTldbrYBwPtrzEktpcX/z9aK/yIfppZmG/C2Sg6EWzbtlFhT Dstg== MIME-Version: 1.0 X-Received: by 10.55.215.156 with SMTP id t28mr1446306qkt.68.1444043580525; Mon, 05 Oct 2015 04:13:00 -0700 (PDT) Received: by 10.55.72.20 with HTTP; Mon, 5 Oct 2015 04:13:00 -0700 (PDT) In-Reply-To: <28641C04-8936-4004-BA40-C889C8B7846A@sharp.fm> References: <715A3AE8-8015-4537-943F-A34E0E2A76F7@sharp.fm> <540DFB30.6050700@apache.org> <2F3B060C-E383-407F-A24C-7F026AD3CA81@sharp.fm> <7A74676C-AA9D-40E1-A434-9280C297217D@sharp.fm> <54128B11.9080803@apache.org> <496E8EFA-7A10-4D91-8C7E-434A9A3B09C5@sharp.fm> <541499A9.5050408@apache.org> <4D9E72F8-4918-49AD-8DC4-E3594C9ED43D@sharp.fm> <04776F50-0A53-4C1D-AA1C-9F57B60BC0AC@sharp.fm> <38C56976-E693-4EEE-88BA-85DE3328FED3@sharp.fm> <7051D658-B96C-47BA-B21F-6511665DDAD8@jaguNET.com> <28641C04-8936-4004-BA40-C889C8B7846A@sharp.fm> Date: Mon, 5 Oct 2015 13:13:00 +0200 Message-ID: Subject: Re: [Patch] Async write completion for the full connection filter stack From: Yann Ylavic To: dev@httpd.apache.org Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On Sun, Oct 4, 2015 at 1:40 PM, Graham Leggett wrote: > > The next bit of this is the ability to safely suspend a filter. > > A suspended filter is a filter that is waiting for some external event, a= callback of some kind, some timer that it might have set, and in the mean = time doesn=E2=80=99t want to be kicked. From the perspective of ap_filter_s= hould_yield() the filter has data in it and a well behaved upstream filter = should wait before sending anything further. > > The idea behind suspending filters over and above connections is that if = two separate filters want to suspend a connection, what stops them from sto= mping on one another? Why suspend a filter rather than the calling handler (on EAGAIN/EWOULDBLOCK= )? > > I am thinking of the sharp end of mod_proxy_httpd (and friends) becoming = an async filter that suspends or not based on whether data is available on = the other connection. In the process, mod_proxy becomes asynchronous. It seems that suspending the handlers would avoid rewriting them as filters= . Or is your plan to go for something like (mod_)serf? Regards, Yann.