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 805F1185EB for ; Sat, 28 Nov 2015 12:34:13 +0000 (UTC) Received: (qmail 25272 invoked by uid 500); 28 Nov 2015 12:34:13 -0000 Delivered-To: apmail-httpd-dev-archive@httpd.apache.org Received: (qmail 25209 invoked by uid 500); 28 Nov 2015 12:34:12 -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 25198 invoked by uid 99); 28 Nov 2015 12:34:12 -0000 Received: from Unknown (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 28 Nov 2015 12:34:12 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id 66AEC1A2529 for ; Sat, 28 Nov 2015 12:34:12 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -0.121 X-Spam-Level: X-Spam-Status: No, score=-0.121 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] autolearn=disabled Authentication-Results: spamd2-us-west.apache.org (amavisd-new); dkim=pass (1024-bit key) header.d=qqmail.nl Received: from mx1-us-west.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id Z9iF_Hgmr-sS for ; Sat, 28 Nov 2015 12:34:10 +0000 (UTC) Received: from mail-wm0-f45.google.com (mail-wm0-f45.google.com [74.125.82.45]) by mx1-us-west.apache.org (ASF Mail Server at mx1-us-west.apache.org) with ESMTPS id 74F9D2059E for ; Sat, 28 Nov 2015 12:34:10 +0000 (UTC) Received: by wmww144 with SMTP id w144so80311728wmw.1 for ; Sat, 28 Nov 2015 04:34:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qqmail.nl; s=google; h=from:to:references:in-reply-to:subject:date:message-id:mime-version :content-type:content-transfer-encoding:thread-index :content-language; bh=ctrDfHbH9l3axUgiHAiT1ZqEvm2m1waNmY1F446dspI=; b=dc22j088pGUimxg3s+SCYcbdk99lu8ABda7WTVr0495tcOOEaFHHvH8VtbgUUr828x 7k2tIyjKJUh5PjqoXTyBGqJU5PdVxfnDi5AGPPfFF3XcXFskpHXZHuULPVq7up9cE+sP 3C6LHvLMUVzqWqx82aTpHZpAGtCyh/UftR4oI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:references:in-reply-to:subject:date :message-id:mime-version:content-type:content-transfer-encoding :thread-index:content-language; bh=ctrDfHbH9l3axUgiHAiT1ZqEvm2m1waNmY1F446dspI=; b=kve53zFRWEXrwZdGBEKXIu8n3vdCVewrm5BkP+cBxdc0VAeke+IjgUjq89YSZ0YLtL sONy7MiBJCqYGCI2NUUnKBfxtCeiwkwsZTJvpU2Hz9bnW9ywbrROyXSyKCAEIONNg0tE WJXtzAptZJ5/Qm5/WWqiyB6Ui5mbMMX7Fibt6nBUgfRQwzk4Ucb6JozW+SLOgtqMPSyu OQrivpXxXNmFp1uNKr1akbbApxWQUY0yLIER3VisbVr1m+EHeUNqceCZdZYRBPUfJJ3J URTBi6YiAAWgRYmXFQUT7W2u9z3U+nZ6Bpv+bhHA43aq5iGsNGHYSR+06aFZF2frsO63 +r9A== X-Gm-Message-State: ALoCoQmhJZnsqM/OvjdbzdZ/HDN/H1nkwzrCaDw5oJRPl2q2nGPd64BUaZsmcSAPMhTTsPwcg3kh X-Received: by 10.28.210.137 with SMTP id j131mr17684707wmg.93.1448714049037; Sat, 28 Nov 2015 04:34:09 -0800 (PST) Received: from i72600 ([2001:610:66e:0:52e5:49ff:fee1:96b7]) by smtp.gmail.com with ESMTPSA id w67sm12047141wmw.17.2015.11.28.04.34.08 for (version=TLSv1/SSLv3 cipher=OTHER); Sat, 28 Nov 2015 04:34:08 -0800 (PST) From: "Bert Huijben" To: References: <02f401d12912$fcba4130$f62ec390$@qqmail.nl> <030501d12916$cf7e1120$6e7a3360$@qqmail.nl> <56599792.3060402@greenbytes.de> In-Reply-To: <56599792.3060402@greenbytes.de> Subject: RE: No H2 Window updates! Date: Sat, 28 Nov 2015 13:33:56 +0100 Message-ID: <03a201d129d9$0d829a00$2887ce00$@qqmail.nl> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Outlook 16.0 Thread-Index: AQJt5VCTIFs6KteEjCgZz0PozG8d2QIIvd2DAZcYZYmdWucw8A== Content-Language: nl > -----Original Message----- > From: Stefan Eissing [mailto:stefan.eissing@greenbytes.de] > Sent: zaterdag 28 november 2015 13:01 > To: dev@httpd.apache.org > Subject: Re: No H2 Window updates! > > I am not really here, but... > > the window updates are sent out via update_window(), line 1001, > h2_session.c. If you do not see any window updates with a client, it may > be that the server app you called does not read its input. I have > several test cases with uploads and they work with nghttp and curl. > > Basics of mod_http2 flow control: > - the auto udates of nghttp2 are disabled because nghttp2 would > continously update the window for the client, letting the client sent > more and more - until we run out of memory. > - instead, input reads from workers against the h2_mplx io are recorded > and lead to regular window update being sent out. So clients can only > send more when the data is actually consumed by someone. >From h2_session.c around line 1640. ======================= switch (status) { case APR_SUCCESS: /* successful read, reset our idle timers */ have_read = 1; wait_micros = 0; break; case APR_EAGAIN: /* non-blocking read, nothing there */ break; default: if (APR_STATUS_IS_ETIMEDOUT(status) || APR_STATUS_IS_ECONNABORTED(status) || APR_STATUS_IS_ECONNRESET(status) || APR_STATUS_IS_EOF(status) || APR_STATUS_IS_EBADF(status)) { /* common status for a client that has left */ ap_log_cerror( APLOG_MARK, APLOG_DEBUG, status, session->c, "h2_session(%ld): terminating", session->id); /* Stolen from mod_reqtimeout to speed up lingering when * a read timeout happened. */ apr_table_setn(session->c->notes, "short-lingering-close", "1"); } else { /* uncommon status, log on INFO so that we see this */ ap_log_cerror( APLOG_MARK, APLOG_INFO, status, session->c, APLOGNO(02950) "h2_session(%ld): error reading, terminating", session->id); } h2_session_abort(session, status, 0); goto end_process; } =========================== I'm not familiar enough with differences in bucket handling between serf and httpd to really make the call, but as the serf buckets were designed by the same group: I'm guessing that there might be successful reads with different status values than just APR_SUCCESS. In serf I would expect to see an immediate APR_EOF when there is only a single frame to be read (or perhaps a few intermediate APR_EAGAINS and then a EOF), which may both imply successful reading 0 or more bytes, followed by their status code. Bert