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 0205D1856B for ; Sat, 28 Nov 2015 12:01:40 +0000 (UTC) Received: (qmail 1534 invoked by uid 500); 28 Nov 2015 12:01:39 -0000 Delivered-To: apmail-httpd-dev-archive@httpd.apache.org Received: (qmail 1461 invoked by uid 500); 28 Nov 2015 12:01:39 -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 1451 invoked by uid 99); 28 Nov 2015 12:01:39 -0000 Received: from Unknown (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 28 Nov 2015 12:01:39 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id B1B28C199A for ; Sat, 28 Nov 2015 12:01:38 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -0.11 X-Spam-Level: X-Spam-Status: No, score=-0.11 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, URIBL_BLOCKED=0.001] autolearn=disabled Authentication-Results: spamd1-us-west.apache.org (amavisd-new); dkim=pass (1024-bit key) header.d=greenbytes.de Received: from mx1-eu-west.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id ggSccj59OWBY for ; Sat, 28 Nov 2015 12:01:29 +0000 (UTC) Received: from mail.greenbytes.de (mail.greenbytes.de [217.91.35.233]) by mx1-eu-west.apache.org (ASF Mail Server at mx1-eu-west.apache.org) with ESMTPS id EBEAC20DD2 for ; Sat, 28 Nov 2015 12:01:28 +0000 (UTC) Received: from [192.168.0.118] (unknown [78.35.84.207]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.greenbytes.de (Postfix) with ESMTPSA id 6D3D815A027A for ; Sat, 28 Nov 2015 13:01:22 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=greenbytes.de; s=mail; t=1448712082; bh=jhoD9d1VYn84BHGHxBD61X/jriQdwaW2U4izcdpvBVo=; h=Subject:To:References:From:Date:In-Reply-To:From; b=q6rKx5nt0Djuo4V9XHXOYmoGcnSFybjP97G0q1DKLph2b+KadX8pJFKEjOsnFamaF QhMQ+y5hNMsxOEHH3nNDVlvmfMX4slox9kE0zBjC4Jl8mqDXzsBvpK01RTYjWeoQWX SG9FYIKgZFr+nyNNg06PLeKcA6vRD0ApFSj7Mg3Y= Subject: Re: No H2 Window updates! To: dev@httpd.apache.org References: <02f401d12912$fcba4130$f62ec390$@qqmail.nl> <030501d12916$cf7e1120$6e7a3360$@qqmail.nl> From: Stefan Eissing Message-ID: <56599792.3060402@greenbytes.de> Date: Sat, 28 Nov 2015 13:01:22 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.4.0 MIME-Version: 1.0 In-Reply-To: <030501d12916$cf7e1120$6e7a3360$@qqmail.nl> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 8bit 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. What is not well tested, I think, is the timeout/cleanup behaviour on this. So, as long as the connection is alive, individual stream could appear to hang infinitely *if* no one ever reads the data. Maybe you see something like this? //Stefan Am 27.11.2015 um 14:23 schrieb Bert Huijben: >> -----Original Message----- >> From: Bert Huijben [mailto:bert@qqmail.nl] >> Sent: vrijdag 27 november 2015 13:56 >> To: bert@qqmail.nl >> Subject: >> >> Hi, >> >> I finally took the time to diagnose that segfault I had, and I think it >> points to a serious bug in httpd. >> >> To summarize this: I don�t receive window updates. >> >> In this specific test we set a very huge amount of small requests (bodies > of >> 95 and 113 bytes), until we get out of the 65535 (or 65536) bytes of > window >> space I get from httpd at the connection level. >> (Each stream doesn�t get near its limit. I can try if I can receive window >> updates there� but currently I can�t reproduce ever receiving a window >> update) >> >> >> Originally this caused a segfault in my code, but I fixed that one. But > now >> I�m just stuck waiting to receive a window update from httpd� >> >> >> My last testing was against 2.4.x (to get the 2.4.18 goodness) > And I think the combination of: > > === h2_session.c around line 707 === > /* We need to handle window updates ourself, otherwise we > * get flooded by nghttp2. */ > nghttp2_option_set_no_auto_window_update(options, 1); > > ==================== > And not a single call to nghttp2_submit_window_update() to find, explains > the situation. > > I haven't tried what happens when I disable this auto_window call... but > sending window updates is really required by the H2 specs. > > > > And I totally understand that this wasn't high priority... I worked around > not sending updates in my implementation until yesterday :-) > > > Bert >