From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by passt.top (Postfix) with ESMTP id 9E3EE5A02D1 for ; Thu, 16 May 2024 01:10:56 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1715814655; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=14+9htsXyc6KZxFTBf3K6fvPZJU0mUIVDaupH+CcCHk=; b=ZiowRZeH1eNCmF+evT0OizMffQLILYmoP58hHGGLNVrOWZNvGgaFfqFQC+2eGhzQqmTGqX XHitNMNKvKXRgWfjsrTLFWwyEGkbBewKH9AkfKjU4JbthsnMDNLNLAsCBBdK7xP7yxlGf6 N3Kt2LJDabq0/y4357S2M/fwMnpZ+Xs= Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-407-22mmDqBUNa6WDyKO0wvbDw-1; Wed, 15 May 2024 19:10:54 -0400 X-MC-Unique: 22mmDqBUNa6WDyKO0wvbDw-1 Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-43e0e0dab52so84063261cf.1 for ; Wed, 15 May 2024 16:10:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715814653; x=1716419453; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=14+9htsXyc6KZxFTBf3K6fvPZJU0mUIVDaupH+CcCHk=; b=siXMILlWt7AyUNCSRyDbiaxR1wrdkT2ftkhWa3DSAlj+mSzCPUu1xEl0rRe+FMza31 XQawMMpk6Q3qHzj2QdbbgpzZ0jehyLSNDXFLDEJLpQS7i88/wtrjKqSxx/lHtmk2emKx SbqdgAu/QRUJ8L1M/W7fZVmOkNbaZPs93DrGqu98A0HIJ87IWvSDBxQZ96fycB3DxRE6 YKs6TbuQuvfNyh4SEOpLQDJTsoz25I07FpKDV1sU4e2eab1Xie+e9zybH5FD9Rr5WUAE e+2L61itW2wqqdxj43aJKhHlSh5KHVqjmcd5/dAHIgeIsdbnI/0Z1R05+fByUJl4Kc+4 uuuQ== X-Gm-Message-State: AOJu0Yy65aw1P71rDlwTXB4BPmaBXcpDun22DwWQ1LzM666uCeoHTb9a OYlsl2VPn1id9UpxTnNtSvkHpy+WhH4cbAqpZ4cY1wJeHyjaSl/iRd/QjxiyBeUvK7MSsZ7NZp+ QPwu5wUxLTGdZDVyQ7bR7L0q40J8npg3f+8NzFwy9C0PM1bqqe3aUt43lBQ== X-Received: by 2002:ac8:7e83:0:b0:43a:d398:588e with SMTP id d75a77b69052e-43dfce2592cmr288064651cf.23.1715814653135; Wed, 15 May 2024 16:10:53 -0700 (PDT) X-Google-Smtp-Source: AGHT+IElx0uiG5vkXcQfaXO11kpn9FIFY1pTymVbBOQ0memzvX1urX7VgInsKj9H/FIA6+EaDxM5aQ== X-Received: by 2002:ac8:7e83:0:b0:43a:d398:588e with SMTP id d75a77b69052e-43dfce2592cmr288064341cf.23.1715814652675; Wed, 15 May 2024 16:10:52 -0700 (PDT) Received: from [10.0.0.97] ([24.225.234.80]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-43e046467a4sm72640381cf.83.2024.05.15.16.10.50 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 15 May 2024 16:10:50 -0700 (PDT) Message-ID: Date: Wed, 15 May 2024 19:10:49 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: [PATCH v4 3/3] tcp: allow retransmit when peer receive window is zero To: Stefano Brivio References: <20240515153429.859185-1-jmaloy@redhat.com> <20240515153429.859185-4-jmaloy@redhat.com> <20240515222417.72ce256b@elisabeth> From: Jon Maloy In-Reply-To: <20240515222417.72ce256b@elisabeth> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 Message-ID-Hash: RKZZBWPAXSMUAQ6M67PCWC22PAXZBYMP X-Message-ID-Hash: RKZZBWPAXSMUAQ6M67PCWC22PAXZBYMP X-MailFrom: jmaloy@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: passt-dev@passt.top, lvivier@redhat.com, dgibson@redhat.com X-Mailman-Version: 3.3.8 Precedence: list List-Id: Development discussion and patches for passt Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: DQoNCk9uIDIwMjQtMDUtMTUgMTY6MjQsIFN0ZWZhbm8gQnJpdmlvIHdyb3RlOg0KPiBPbiBXZWQs IDE1IE1heSAyMDI0IDExOjM0OjI5IC0wNDAwDQo+IEpvbiBNYWxveSA8am1hbG95QHJlZGhhdC5j b20+IHdyb3RlOg0KPg0KPj4gQSBidWcgaW4ga2VybmVsIFRDUCBtYXkgbGVhZCB0byBhIGRlYWRs b2NrIHdoZXJlIGEgemVybyB3aW5kb3cgaXMgc2VudA0KPj4gZnJvbSB0aGUgcGVlciwgd2hpbGUg aXQgaXMgdW5hYmxlIHRvIHNlbmQgb3V0IHdpbmRvdyB1cGRhdGVzIGV2ZW4gYWZ0ZXINCj4+IHJl YWRzIGhhdmUgZnJlZWQgdXAgZW5vdWdoIGJ1ZmZlciBzcGFjZSB0byBwZXJtaXQgYSBsYXJnZXIg d2luZG93Lg0KPj4gSW4gdGhpcyBzaXR1YXRpb24sIG5ldyB3aW5kb3cgYWR2ZXJ0aXNlbW50cyBm cm9tIHRoZSBwZWVyIGNhbiBvbmx5IGJlDQo+PiB0cmlnZ2VyZWQgYnkgcGFja2V0cyBhcnJpdmlu ZyBmcm9tIHRoaXMgc2lkZS4NCj4+DQo+PiBIb3dldmVyLCBzdWNoIHBhY2tldHMgYXJlIG5ldmVy IHNlbnQsIGJlY2F1c2UgdGhlIHplcm8td2luZG93IGNvbmRpdGlvbg0KPj4gY3VycmVudGx5IHBy ZXZlbnRzIHRoaXMgc2lkZSBmcm9tIHNlbmRpbmcgb3V0IGFueSBwYWNrZXRzIHdoYXRzb2V2ZXIN Cj4+IHRvIHRoZSBwZWVyLg0KPj4NCj4+IFdlIG5vdGljZSB0aGF0IHRoZSBhYm92ZSBidWcgaXMg dHJpZ2dlcmVkICpvbmx5KiBhZnRlciB0aGUgcGVlciBoYXMNCj4+IGRyb3BwZWQgYW4gYXJyaXZp bmcgcGFja2V0IGJlY2F1c2Ugb2Ygc2V2ZXJlIG1lbW9yeSBzcXVlZXplLCBhbmQgdGhhdCB3ZQ0K Pj4gaGVuY2UgYWx3YXlzIGVudGVyIGEgcmV0cmFuc21pc3Npb24gc2l0dWF0aW9uIHdoZW4gdGhp cyBvY2N1cnMuIFRoaXMNCj4+IGFsc28gbWVhbnMgdGhhdCBpdCBnb2VzIGFnYWluc3QgdGhlIFJG QyA5MjkzIHJlY29tbWVuZGF0aW9uIHRoYXQgYQ0KPj4gcHJldmlvdXNseSBhZHZlcnRpc2VkIHdp bmRvdyBuZXZlciBzaG91bGQgc2hyaW5rLg0KPj4NCj4+IFJGQyA5MjkzIGdpdmVzIHRoZSBzb2x1 dGlvbiB0byB0aGlzIHNpdHVhdGlvbi4gSW4gY2hhcHRlciAzLjYuMSB3ZSBmaW5kDQo+PiB0aGUg Zm9sbG93aW5nIHN0YXRlbWVudDoNCj4+ICJBIFRDUCByZWNlaXZlciBTSE9VTEQgTk9UIHNocmlu ayB0aGUgd2luZG93LCBpLmUuLCBtb3ZlIHRoZSByaWdodA0KPj4gd2luZG93IGVkZ2UgdG8gdGhl IGxlZnQgKFNITEQtMTQpLiBIb3dldmVyLCBhIHNlbmRpbmcgVENQIHBlZXIgTVVTVA0KPj4gYmUg cm9idXN0IGFnYWluc3Qgd2luZG93IHNocmlua2luZywgd2hpY2ggbWF5IGNhdXNlIHRoZQ0KPj4g InVzYWJsZSB3aW5kb3ciIChzZWUgU2VjdGlvbiAzLjguNi4yLjEpIHRvIGJlY29tZSBuZWdhdGl2 ZSAoTVVTVC0zNCkuDQo+Pg0KPj4gSWYgdGhpcyBoYXBwZW5zLCB0aGUgc2VuZGVyIFNIT1VMRCBO T1Qgc2VuZCBuZXcgZGF0YSAoU0hMRC0xNSksIGJ1dA0KPj4gU0hPVUxEIHJldHJhbnNtaXQgbm9y bWFsbHkgdGhlIG9sZCB1bmFja25vd2xlZGdlZCBkYXRhIGJldHdlZW4gU05ELlVOQQ0KPj4gYW5k IFNORC5VTkErU05ELldORCAoU0hMRC0xNikuIFRoZSBzZW5kZXIgTUFZIGFsc28gcmV0cmFuc21p dCBvbGQgZGF0YQ0KPj4gYmV5b25kIFNORC5VTkErU05ELldORCAoTUFZLTcpIg0KPj4NCj4+IFdl IG5ldmVyIHNlZSB0aGUgd2luZG93IGJlY29tZSBuZWdhdGl2ZSwgYnV0IHdlIGludGVycHJldCB0 aGlzIGFzIGENCj4+IHJlY29tbWVuZGF0aW9uIHRvIHVzZSB0aGUgcHJldmlvdXNseSBhdmFpbGFi bGUgd2luZG93IGR1cmluZw0KPj4gcmV0cmFuc21pc3Npb24gZXZlbiB3aGVuIHRoZSBjdXJyZW50 bHkgYWR2ZXJ0aXNlZCB3aW5kb3cgaXMgemVyby4NCj4+DQo+PiBXZSB1c2UgdGhlIGFib3ZlIG1l Y2hhbmlzbSBvbmx5IGF0IHRpbWVyLWluZHVjZWQgcmV0cmFuc21pdHMuDQo+PiBJbiB0aGUgY2Fz ZSB3ZSByZWNlaXZlIGR1cGxpY2F0ZSBhY2sgYW5kIGEgemVybyB3aW5kb3csIGJ1dA0KPj4gc3Rp bGwga25vdyB3ZSBoYXZlIG91dHN0YW5kaW5nIGRhdGEgYWNrcyB3YWl0aW5nLCB3ZSBzZW5kIG91 dCBhbg0KPj4gZW1wdHkgImZhc3QgcHJvYmUiIGluc3RlYWQgb2YgZG9pbmcgZmFzdCByZXRyYW5z bWl0LiBUaGlzIGF2ZXJ0cw0KPj4gdGhlIHJpc2sgb2Ygb3ZlcndoZWxtaW5nIGEgbWVtb3J5IHNx dWVlemVkIHBlZXIgd2l0aCByZXRyYW5zbWl0cywNCj4+IHdoaWxlIHN0aWxsIGZvcmNpbmcgaXQg dG8gc2VuZCBvdXQgYSBuZXcgd2luZG93IHVwZGF0ZSB3aGVuIHRoZQ0KPj4gcHJvYmUgaXMgcmVj ZWl2ZWQuIFRoaXMgZW50YWlscyBhIHRoZW9yZXRpY2FsIHJpc2sgb2YgcmVkdW5kYW50DQo+PiBy ZXRyYW5zbWl0cyBmcm9tIHRoZSBwZWVyLCBidXQgdGhhdCBpcyBhIHJpc2sgd29ydGggdGFraW5n Lg0KPj4NCj4+IEluIGNhc2Ugb2YgYSB6ZXJvLXdpbmRvdyBub24tcmV0cmFuc21pc3Npb24gc2l0 dWF0aW9uIHdoZXJlIHRoZXJlDQo+PiBpcyBubyBuZXcgZGF0YSB0byBiZSBzZW50LCB3ZSBhbHNv IGFkZCBhIHNpbXBsZSB6ZXJvLXdpbmRvdyBwcm9iaW5nDQo+PiBmZWF0dXJlLiBCeSBzZW5kaW5n IGFuIGVtcHR5IHBhY2tldCBhdCByZWd1bGFyIHRpbWVvdXQgZXZlbnRzIHdlDQo+PiByZXNvbHZl IHRoZSBzaXR1YXRpb24gZGVzY3JpYmVkIGFib3ZlLCBzaW5jZSB0aGUgcGVlciByZWNlaXZlcyB0 aGUNCj4+IG5lY2Vzc2FyeSB0cmlnZ2VyIHRvIGFkdmVydGlzZSBpdHMgd2luZG93IG9uY2UgaXQg YmVjb21lcyBub24temVybw0KPj4gYWdhaW4uDQo+Pg0KPj4gSXQgc2hvdWxkIGJlIG5vdGVkIHRo YXQgYWx0aG91Z2ggdGhpcyBzb2x2ZXMgdGhlIHByb2JsZW0gd2UgaGF2ZSBhdA0KPj4gaGFuZCwg aXQgaXMgbm90IGEgZ2VudWluZSBzb2x1dGlvbiB0byB0aGUga2VybmVsIGJ1Zy4gVGhlcmUgbWF5 IHdlbGwNCj4+IGJlIFRDUCBzdGFja3MgYXJvdW5kIGluIG90aGVyIE9TLWVzIHdoaWNoIGRvbid0 IGRvIHRoaXMsIG5vciBoYXZlDQo+PiBrZWVwLWFsaXZlIHByb2JpbmcgYXMgYW4gYWx0ZXJuYXR2 ZSB3YXkgdG8gc29sdmUgdGhlIHNpdHVhdGlvbi4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBKb24g TWFsb3kgPGptYWxveUByZWRoYXQuY29tPg0KPj4NCj4+IC0tLQ0KPj4gdjI6IC0gVXNpbmcgcHJl dmlvdXNseSBhZHZlcnRpc2VkIHdpbmRvdyBkdXJpbmcgcmV0cmFuc21pc3Npb24sIGluc3RlYWQN Cj4+ICAgICAgICBoaWdoZXN0IHNlbmQgc2VxdWVuY2VjZSBudW1iZXIgaW4gdGhlIGN5Y2xlLg0K Pj4gdjM6IC0gUmViYXNlZCB0byBuZXdlc3QgY29kZQ0KPj4gICAgICAtIENoYW5nZXMgYmFzZWQg b24gZmVlZGJhY2sgZnJvbSBQQVNTVCB0ZWFtDQo+PiAgICAgIC0gU2VuZGluZyBvdXQgZW1wdHkg cHJvYmUgbWVzc2FnZSBhdCB0aW1lciBleHBpcmF0aW9uIHdoZW4NCj4+ICAgICAgICB3ZSBhcmUg bm90IGluIHJldHJhbnNtaXQgc2l0dWF0aW9uLg0KPj4gdjQ6IC0gU29tZSBzbWFsbCBjaGFuZ2Vz IGJhc2VkIG9uIGZlZWRiYWNrIGZyb20gUEFTU1QgdGVhbS4NCj4+ICAgICAgLSBSZXBsYWNlZCBm YXN0IHJldHJhbnNtaXQgd2l0aCBhIG9uZS10aW1lICdmYXN0IHByb2JlJyB3aGVuDQo+PiAgICAg ICAgd2luZG93IGlzIHplcm8uDQo+PiAtLS0NCj4+ICAgdGNwLmMgICAgICB8IDMyICsrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLS0tDQo+PiAgIHRjcF9jb25uLmggfCAgMiArKw0KPj4gICAy IGZpbGVzIGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pDQo+Pg0KPj4g ZGlmZiAtLWdpdCBhL3RjcC5jIGIvdGNwLmMNCj4+IGluZGV4IDQxNjNiZjkuLmEzM2Y0OTQgMTAw NjQ0DQo+PiAtLS0gYS90Y3AuYw0KPj4gKysrIGIvdGNwLmMNCj4+IEBAIC0xNzYxLDkgKzE3NjEs MTUgQEAgc3RhdGljIHZvaWQgdGNwX2dldF90YXBfd3Moc3RydWN0IHRjcF90YXBfY29ubiAqY29u biwNCj4+ICAgICovDQo+PiAgIHN0YXRpYyB2b2lkIHRjcF90YXBfd2luZG93X3VwZGF0ZShzdHJ1 Y3QgdGNwX3RhcF9jb25uICpjb25uLCB1bnNpZ25lZCB3bmQpDQo+PiAgIHsNCj4+ICsJdWludDMy X3Qgd25kX2VkZ2U7DQo+PiArDQo+PiAgIAl3bmQgPSBNSU4oTUFYX1dJTkRPVywgd25kIDw8IGNv bm4tPndzX2Zyb21fdGFwKTsNCj4+ICAgCWNvbm4tPnduZF9mcm9tX3RhcCA9IE1JTih3bmQgPj4g Y29ubi0+d3NfZnJvbV90YXAsIFVTSFJUX01BWCk7DQo+PiAgIA0KPj4gKwl3bmRfZWRnZSA9IGNv bm4tPnNlcV9hY2tfZnJvbV90YXAgKyB3bmQ7DQo+PiArCWlmICh3bmQgJiYgU0VRX0dUKHduZF9l ZGdlLCBjb25uLT5zZXFfd25kX2VkZ2VfZnJvbV90YXApKQ0KPiBIZXJlLCBjcHBjaGVjayAoJ21h a2UgY3BwY2hlY2snKSBzYXlzOg0KPg0KPiB0Y3AuYzoxNzcwOjY6IHN0eWxlOiBDb25kaXRpb24g J3duZCcgaXMgYWx3YXlzIHRydWUgW2tub3duQ29uZGl0aW9uVHJ1ZUZhbHNlXQ0KPiAgIGlmICh3 bmQgJiYgU0VRX0dUKHduZF9lZGdlLCBjb25uLT5zZXFfd25kX2VkZ2VfZnJvbV90YXApKQ0KPiAg ICAgICBeDQo+IHRjcC5jOjE3NjY6ODogbm90ZTogQXNzaWdubWVudCAnd25kPSgoMTw8KDE2Kzgp KTwod25kPDxjb25uLT53c19mcm9tX3RhcCkpPygxPDwoMTYrOCkpOih3bmQ8PGNvbm4tPndzX2Zy b21fdGFwKScsIGFzc2lnbmVkIHZhbHVlIGlzIGxlc3MgdGhhbiAxDQo+ICAgd25kID0gTUlOKE1B WF9XSU5ET1csIHduZCA8PCBjb25uLT53c19mcm9tX3RhcCk7DQo+ICAgICAgICAgXg0KPiB0Y3Au YzoxNzcwOjY6IG5vdGU6IENvbmRpdGlvbiAnd25kJyBpcyBhbHdheXMgdHJ1ZQ0KPiAgIGlmICh3 bmQgJiYgU0VRX0dUKHduZF9lZGdlLCBjb25uLT5zZXFfd25kX2VkZ2VfZnJvbV90YXApKQ0KPiAg ICAgICBeDQo+DQo+IFNlZSB0aGUgY29tbWVudCBpbiB0Y3BfdXBkYXRlX3NlcWFja193bmQoKSBh bmQgcmVsYXRlZCBzdXBwcmVzc2lvbi4NCj4NCj4gSXQncyBjbGVhcmx5IGEgZmFsc2UgcG9zaXRp dmUgKGlmIHlvdSBvbWl0IHRoZSBNSU4oKSBtYWNybywgaXQgZ29lcw0KPiBhd2F5KSwgc28gd2Ug bmVlZCB0aGF0IHNhbWUgc3VwcHJlc3Npb24gaGVyZS4NCk9rLiBJJ2xsIGNoYW5nZSBpdC4gU3Rp bGwgYSBsaXR0bGUgYW5ub3lpbmcgd2hlbiBvdXIgdG9vbHMgYXJlIGNhdXNpbmcgDQp1cyBleHRy YSBqb2IgYmVjYXVzZSB0aGV5IGFyZW4ndCB1cCB0byB0aGUgdGFzay4NCj4NCj4+ICsJCWNvbm4t PnNlcV93bmRfZWRnZV9mcm9tX3RhcCA9IHduZF9lZGdlOw0KPj4gKw0KPj4gICAJLyogRklYTUU6 IHJlZmxlY3QgdGhlIHRhcC1zaWRlIHJlY2VpdmVyJ3Mgd2luZG93IGJhY2sgdG8gdGhlIHNvY2st c2lkZQ0KPj4gICAJICogc2VuZGVyIGJ5IGFkanVzdGluZyBTT19SQ1ZCVUY/ICovDQo+PiAgIH0N Cj4+IEBAIC0xNzk2LDYgKzE4MDIsNyBAQCBzdGF0aWMgdm9pZCB0Y3Bfc2VxX2luaXQoY29uc3Qg c3RydWN0IGN0eCAqYywgc3RydWN0IHRjcF90YXBfY29ubiAqY29ubiwNCj4+ICAgCW5zID0gKG5v dy0+dHZfc2VjICogMTAwMDAwMDAwMCArIG5vdy0+dHZfbnNlYykgPj4gNTsNCj4+ICAgDQo+PiAg IAljb25uLT5zZXFfdG9fdGFwID0gKCh1aW50MzJfdCkoaGFzaCA+PiAzMikgXiAodWludDMyX3Qp aGFzaCkgKyBuczsNCj4+ICsJY29ubi0+c2VxX3duZF9lZGdlX2Zyb21fdGFwID0gY29ubi0+c2Vx X3RvX3RhcDsNCj4+ICAgfQ0KPj4gICANCj4+ICAgLyoqDQo+PiBAQCAtMjIwNSwxMyArMjIxMiwx MiBAQCBzdGF0aWMgdm9pZCB0Y3BfZGF0YV90b190YXAoY29uc3Qgc3RydWN0IGN0eCAqYywgc3Ry dWN0IHRjcF90YXBfY29ubiAqY29ubiwNCj4+ICAgICovDQo+PiAgIHN0YXRpYyBpbnQgdGNwX2Rh dGFfZnJvbV9zb2NrKHN0cnVjdCBjdHggKmMsIHN0cnVjdCB0Y3BfdGFwX2Nvbm4gKmNvbm4pDQo+ PiAgIHsNCj4+IC0JdWludDMyX3Qgd25kX3NjYWxlZCA9IGNvbm4tPnduZF9mcm9tX3RhcCA8PCBj b25uLT53c19mcm9tX3RhcDsNCj4+ICAgCWludCBmaWxsX2J1ZnMsIHNlbmRfYnVmcyA9IDAsIGxh c3RfbGVuLCBpb3ZfcmVtID0gMDsNCj4+ICAgCWludCBzZW5kbGVuLCBsZW4sIGRsZW4sIHY0ID0g Q09OTl9WNChjb25uKTsNCj4+ICsJdWludDMyX3QgYWxyZWFkeV9zZW50LCBtYXhfc2VuZCwgc2Vx Ow0KPj4gICAJaW50IHMgPSBjb25uLT5zb2NrLCBpLCByZXQgPSAwOw0KPj4gICAJc3RydWN0IG1z Z2hkciBtaF9zb2NrID0geyAwIH07DQo+PiAgIAl1aW50MTZfdCBtc3MgPSBNU1NfR0VUKGNvbm4p Ow0KPj4gLQl1aW50MzJfdCBhbHJlYWR5X3NlbnQsIHNlcTsNCj4+ICAgCXN0cnVjdCBpb3ZlYyAq aW92Ow0KPj4gICANCj4+ICAgCS8qIEhvdyBtdWNoIGhhdmUgd2UgcmVhZC9zZW50IHNpbmNlIGxh c3QgcmVjZWl2ZWQgYWNrID8gKi8NCj4+IEBAIC0yMjI1LDE5ICsyMjMxLDI0IEBAIHN0YXRpYyBp bnQgdGNwX2RhdGFfZnJvbV9zb2NrKHN0cnVjdCBjdHggKmMsIHN0cnVjdCB0Y3BfdGFwX2Nvbm4g KmNvbm4pDQo+PiAgIAkJdGNwX3NldF9wZWVrX29mZnNldChzLCAwKTsNCj4+ICAgCX0NCj4+ICAg DQo+PiAtCWlmICghd25kX3NjYWxlZCB8fCBhbHJlYWR5X3NlbnQgPj0gd25kX3NjYWxlZCkgew0K Pj4gKwkvKiBIb3cgbXVjaCBhcmUgd2Ugc3RpbGwgYWxsb3dlZCB0byBzZW5kIHdpdGhpbiBjdXJy ZW50IHdpbmRvdyA/ICovDQo+PiArCW1heF9zZW5kID0gY29ubi0+c2VxX3duZF9lZGdlX2Zyb21f dGFwIC0gY29ubi0+c2VxX3RvX3RhcDsNCj4+ICsJaWYgKFNFUV9MRShtYXhfc2VuZCwgMCkpIHsN Cj4+ICsJCWZsb3dfdHJhY2UoY29ubiwgIkVtcHR5IHdpbmRvdzogd2luX3VwcGVyOiAldSwgc2Vu dDogJXUiLA0KPiBUaGlzIGlzIG5vdCB3aW5fdXBwZXIgYW55bW9yZSwgYW5kIHRoZSB3aW5kb3cg aXMgYWN0dWFsbHkgZnVsbCByYXRoZXINCj4gdGhhbiBlbXB0eSAoaXQncy4uLiBlbXB0eSBvZiBz cGFjZSkuIE1heWJlOg0KPg0KPiAJCWZsb3dfdHJhY2UoY29ubiwgIldpbmRvdyBmdWxsOiByaWdo dCBlZGdlOiAldSwgc2VudDogJXUiDQp5ZXMuDQo+DQo+PiArCQkJICAgY29ubi0+c2VxX3duZF9l ZGdlX2Zyb21fdGFwLCBjb25uLT5zZXFfdG9fdGFwKTsNCj4+ICsJCWNvbm4tPnNlcV93bmRfZWRn ZV9mcm9tX3RhcCA9IGNvbm4tPnNlcV90b190YXA7DQo+PiAgIAkJY29ubl9mbGFnKGMsIGNvbm4s IFNUQUxMRUQpOw0KPj4gICAJCWNvbm5fZmxhZyhjLCBjb25uLCBBQ0tfRlJPTV9UQVBfRFVFKTsN Cj4+ICAgCQlyZXR1cm4gMDsNCj4+ICAgCX0NCj4+ICAgDQo+PiAgIAkvKiBTZXQgdXAgYnVmZmVy IGRlc2NyaXB0b3JzIHdlJ2xsIGZpbGwgY29tcGxldGVseSBhbmQgcGFydGlhbGx5LiAqLw0KPj4g LQlmaWxsX2J1ZnMgPSBESVZfUk9VTkRfVVAod25kX3NjYWxlZCAtIGFscmVhZHlfc2VudCwgbXNz KTsNCj4+ICsJZmlsbF9idWZzID0gRElWX1JPVU5EX1VQKG1heF9zZW5kLCAgbXNzKTsNCj4+ICAg CWlmIChmaWxsX2J1ZnMgPiBUQ1BfRlJBTUVTKSB7DQo+PiAgIAkJZmlsbF9idWZzID0gVENQX0ZS QU1FUzsNCj4+ICAgCQlpb3ZfcmVtID0gMDsNCj4+ICAgCX0gZWxzZSB7DQo+PiAtCQlpb3ZfcmVt ID0gKHduZF9zY2FsZWQgLSBhbHJlYWR5X3NlbnQpICUgbXNzOw0KPj4gKwkJaW92X3JlbSA9IG1h eF9zZW5kICUgbXNzOw0KPj4gICAJfQ0KPj4gICANCj4+ICAgCS8qIFByZXBhcmUgaW92IGFjY29y ZGluZyB0byBrZXJuZWwgY2FwYWJpbGl0eSAqLw0KPj4gQEAgLTI0NjYsNiArMjQ3NywxMyBAQCBz dGF0aWMgaW50IHRjcF9kYXRhX2Zyb21fdGFwKHN0cnVjdCBjdHggKmMsIHN0cnVjdCB0Y3BfdGFw X2Nvbm4gKmNvbm4sDQo+PiAgIAkJY29ubi0+c2VxX3RvX3RhcCA9IG1heF9hY2tfc2VxOw0KPj4g ICAJCXRjcF9zZXRfcGVla19vZmZzZXQoY29ubi0+c29jaywgMCk7DQo+PiAgIAkJdGNwX2RhdGFf ZnJvbV9zb2NrKGMsIGNvbm4pOw0KPj4gKwl9IGVsc2UgaWYgKCFtYXhfYWNrX3NlcV93bmQgJiYg U0VRX0dUKGNvbm4tPnNlcV90b190YXAsIG1heF9hY2tfc2VxKSkgew0KPj4gKwkJLyogRm9yY2Ug cGVlciB0byBzZW5kIG5ldyBhZHZlcnRpc2VtZW50IG5vdywgYnV0IG9ubHkgb25jZSAqLw0KPiBU d28gcXVlc3Rpb25zOg0KPg0KPiAtIHdoaWNoIGFkdmVydGlzZW1lbnQ/IFdlJ3JlIHNlbmRpbmcg YSB6ZXJvLXdpbmRvdyBwcm9iZSwgbm90IGZvcmNpbmcNCj4gICAgdGhlIHBlZXIgdG8gZG8gbXVj aCByZWFsbHkuIEkgd291bGQgcmF0aGVyIGp1c3Qgc3RhdGUgdGhhdCB3ZSdyZQ0KPiAgICBzZW5k aW5nIGEgcHJvYmUNCkFjdHVhbGx5LCBpdCBpcyBvbmx5IGNsZWFyIGlmIHlvdSBrbm93IHRoZSBj b2RlIG9mIHRoZSAobGludXgpIHBlZXIuDQpJIHJlYWxpemVkIHRoaXMgd2FzIG1heWJlIGEgdG9v IHN0cm9uZyBzdGF0ZW1lbnQsIGJ1dCB0aGlzIGlzIHJlYWxseQ0Kd2hhdCBoYXBwZW5zLg0KDQo+ DQo+IC0gd2hhdCBndWFyYW50ZWVzIGl0IG9ubHkgaGFwcGVucyBvbmNlPyBJZiB3ZSBnZXQgbW9y ZSBkYXRhIGZyb20gdGhlDQo+ICAgIHNvY2tldCwgd2UnbGwgZ2V0IGFnYWluIFNFUV9HVChjb25u LT5zZXFfdG9fdGFwLCBtYXhfYWNrX3NlcSkgaW4gYQ0KPiAgICBiaXQsIGFuZCBzZW5kIGFub3Ro ZXIgQUNLIChkdXBsaWNhdGUpIHRvIHRoZSBwZWVyLCB3aXRob3V0IHRoZSBwZWVyDQo+ICAgIG5l Y2Vzc2FyaWx5IGV2ZXIgYWR2ZXJ0aXNpbmcgYSBub24temVybyB3aW5kb3cgbWVhbndoaWxlDQpS aWdodC4gSSBuZWVkIHRvIGdpdmUgdGhpc8KgIGEgbmV3IHNwaW4sIGJ1dCBJIHRoaW5rIEkgYW0g b24gdGhlIHJpZ2h0IA0KdHJhY2suDQpJICpyZWFsbHkqIHdhbnQgdGhpcyB0byBiZSBzb2x2ZWQg aGVyZSwgYW5kIG5vdCBuZWVkIHRvIGZhbGwgYmFjayB0bw0KIMKgdGhlIHRpbWVvdXQgZXhjZXB0 IHVuZGVyIGV4Y2VwdGlvbmFsIGNvbmRpdGlvbnMuDQpUaGlzIGhhcHBlbnMgcmVhbGx5IG9mdGVu IGluIG15IHRlc3RzLCBhbmQgd2l0aCB0aGlzIGZpeCBpdCBhY3R1YWxseQ0Kd29ya3MgbGlrZSBh IGNoYXJtLg0KDQo+DQo+ICAgIEknbSBzdHJ1Z2dsaW5nIGEgYml0IHRvIHVuZGVyc3RhbmQgaG93 IHRoaXMgY2FuIHdvcmsgImNsZWFubHkiLCBhDQo+ICAgIHBhY2tldCBjYXB0dXJlIG9mIHRoaXMg bWVjaGFuaXNtIGluIGFjdGlvbiB3b3VsZCBjZXJ0YWlubHkgaGVscC4NCk9rLiBJbiB2NS4NCj4N Cj4+ICsJCWZsb3dfdHJhY2UoY29ubiwgImZhc3QgcHJvYmUsIEFDSzogJXUsIHByZXZpb3VzIHNl cXVlbmNlOiAldSIsDQo+PiArCQkJICAgbWF4X2Fja19zZXEsIGNvbm4tPnNlcV90b190YXApOw0K Pj4gKwkJdGNwX3NlbmRfZmxhZyhjLCBjb25uLCBBQ0spOw0KPj4gKwkJY29ubi0+c2VxX3RvX3Rh cCA9IG1heF9hY2tfc2VxOw0KPj4gKwkJdGNwX3NldF9wZWVrX29mZnNldChjb25uLT5zb2NrLCAw KTsNCj4+ICAgCX0NCj4+ICAgDQo+PiAgIAlpZiAoIWlvdl9pKQ0KPj4gQEAgLTI5MTEsNiArMjky OSwxMCBAQCB2b2lkIHRjcF90aW1lcl9oYW5kbGVyKHN0cnVjdCBjdHggKmMsIHVuaW9uIGVwb2xs X3JlZiByZWYpDQo+PiAgIAkJCWZsb3dfZGJnKGNvbm4sICJhY3Rpdml0eSB0aW1lb3V0Iik7DQo+ PiAgIAkJCXRjcF9yc3QoYywgY29ubik7DQo+PiAgIAkJfQ0KPj4gKwkJLyogTm8gZGF0YSBleGNo YW5nZWQgcmVjZW50bHk/IEtlZXAgY29ubmVjdGlvbiBhbGl2ZS4gKi8NCj4gLi4uSSBqdXN0IHNw b3R0ZWQgdGhpcyBmcm9tIHYzOiB0aGlzIGlzIG5vdCB0aGUgcmVhc29uIHdoeSB3ZSdyZQ0KPiBz ZW5kaW5nIGEga2VlcC1hbGl2ZS4gV2UncmUgc2VuZGluZyBhIGtlZXAtYWxpdmUgc2VnbWVudCBi ZWNhdXNlIHRoZQ0KPiBwZWVyIGFkdmVydGlzZWQgaXRzIHdpbmRvdyBhcyB6ZXJvLg0KPg0KPiBJ IGFsc28gcmVhbGlzZWQgdGhhdCB0aGlzIGlzIG5vdCBzY2hlZHVsZWQgYWRkaXRpb25hbGx5LCBz byBpdCB3aWxsDQo+IGp1c3QgdHJpZ2dlciBvbiBhbiBhY3Rpdml0eSB0aW1lb3V0LCBJIHN1cHBv c2UuIFdlIHNob3VsZCByZXNjaGVkdWxlDQo+IHRoaXMgYWZ0ZXIgQUNLX1RJTUVPVVQsIGluc3Rl YWQgKHRoYXQgd2FzIG15IGVhcmxpZXIgc3VnZ2VzdGlvbiwgSQ0KPiBkaWRuJ3QgY2hlY2sgYW55 bW9yZSkgd2hlbiB0aGUgcGVlciBhZHZlcnRpc2VzIGEgemVybyB3aW5kb3cuDQo+DQo+PiArCQlp ZiAoY29ubi0+c2VxX3RvX3RhcCA9PSBjb25uLT5zZXFfYWNrX2Zyb21fdGFwICYmDQo+IC4uLnRo aXMgcGFydCB3aWxsIG9ubHkgd29yayBpZiB3ZSByZXNldCBzZXFfdG9fdGFwIHRvIHNlcV9hY2tf ZnJvbV90YXANCj4gZWFybGllciwgYW5kIHdlIGhhdmUgbm8gcGVuZGluZyBkYXRhIHRvIHNlbmQs IHdoaWNoIGlzIG5vdCBuZWNlc3NhcmlseQ0KPiB0aGUgY2FzZSBpZiB3ZSB3YW50IHRvIHNlbmQg YSB6ZXJvLXdpbmRvdyBwcm9iZS4NCj4NCj4+ICsJCSAgICBjb25uLT5zZXFfZnJvbV90YXAgPT0g Y29ubi0+c2VxX2Fja190b190YXApDQo+PiArCQkJdGNwX3NlbmRfZmxhZyhjLCBjb25uLCBBQ0sp Ow0KPiBJIHRoaW5rIHRoZSBjb25kaXRpb25zIHNob3VsZCBzaW1wbHkgYmU6DQo+DQo+IC0gdGhl IHdpbmRvdyBjdXJyZW50bHkgYWR2ZXJ0aXNlZCBieSB0aGUgcGVlciBpcyB6ZXJvDQo+DQo+IC0g d2UgZG9uJ3QgaGF2ZSBwZW5kaW5nIGRhdGEgdG8gYWNrbm93bGVkZ2UgKG90aGVyd2lzZSB0aGUg cGVlciBjYW4NCj4gICAgaW50ZXJwcmV0IG91ciBrZWVwLWFsaXZlIGFzIGEgZHVwbGljYXRlIEFD SykNClRoYXQgaXMgb2suDQpUaGUgZGVhZGxvY2sgc2l0dWF0aW9uIHdlIGhhdmUgZW5kZWQgdXAg aW4gd2lsbCBhbnl3YXkgYmUgcmVzb2x2ZWQgYnkgdGhlDQpyZWFsIHJldHJhbnNtaXQgdGhhdCB3 aWxsIGhhcHBlbiBiZWZvcmUgd2UgZ2V0IGhlcmUuDQpJIGFtIG5vdyB3b25kZXJpbmcgaWYgdGhp cyBwcm9iZSBpdCBzZXJ2ZXMgYW55IHB1cnBvc2UgYXQgYWxsPw0KPg0KPj4gICAJfQ0KPj4gICB9 DQo+PiAgIA0KPj4gZGlmZiAtLWdpdCBhL3RjcF9jb25uLmggYi90Y3BfY29ubi5oDQo+PiBpbmRl eCBkMjgwYjIyLi41Y2JhZDJhIDEwMDY0NA0KPj4gLS0tIGEvdGNwX2Nvbm4uaA0KPj4gKysrIGIv dGNwX2Nvbm4uaA0KPj4gQEAgLTMwLDYgKzMwLDcgQEANCj4+ICAgICogQHduZF90b190YXA6CQlT ZW5kaW5nIHdpbmRvdyBhZHZlcnRpc2VkIHRvIHRhcCwgdW5zY2FsZWQgKGFzIHNlbnQpDQo+PiAg ICAqIEBzZXFfdG9fdGFwOgkJTmV4dCBzZXF1ZW5jZSBmb3IgcGFja2V0cyB0byB0YXANCj4+ICAg ICogQHNlcV9hY2tfZnJvbV90YXA6CUxhc3QgQUNLIG51bWJlciByZWNlaXZlZCBmcm9tIHRhcA0K Pj4gKyAqIEBzZXFfd25kX2VkZ2VfZnJvbV90YXA6IFJpZ2h0IGVkZ2Ugb2YgbGFzdCBub24temVy byB3aW5kb3cgZnJvbSB0YXANCj4+ICAgICogQHNlcV9mcm9tX3RhcDoJTmV4dCBzZXF1ZW5jZSBm b3IgcGFja2V0cyBmcm9tIHRhcCAobm90IGFjdHVhbGx5IHNlbnQpDQo+PiAgICAqIEBzZXFfYWNr X3RvX3RhcDoJTGFzdCBBQ0sgbnVtYmVyIHNlbnQgdG8gdGFwDQo+PiAgICAqIEBzZXFfaW5pdF9m cm9tX3RhcDoJSW5pdGlhbCBzZXF1ZW5jZSBudW1iZXIgZnJvbSB0YXANCj4+IEBAIC0xMDEsNiAr MTAyLDcgQEAgc3RydWN0IHRjcF90YXBfY29ubiB7DQo+PiAgIA0KPj4gICAJdWludDMyX3QJc2Vx X3RvX3RhcDsNCj4+ICAgCXVpbnQzMl90CXNlcV9hY2tfZnJvbV90YXA7DQo+PiArCXVpbnQzMl90 CXNlcV93bmRfZWRnZV9mcm9tX3RhcDsNCj4+ICAgCXVpbnQzMl90CXNlcV9mcm9tX3RhcDsNCj4+ ICAgCXVpbnQzMl90CXNlcV9hY2tfdG9fdGFwOw0KPj4gICAJdWludDMyX3QJc2VxX2luaXRfZnJv bV90YXA7DQoNCkknbGwgcmUtc3BpbiB0aGUgdHdvIGZpcnN0IG9uZXMgYXNhcCwgc28geW91IGNh biBhcHBseSB0aGVtLCBhbmQgdGhlbiBJIA0Kd2lsbCB0cnkgdG8gaW1wcm92ZQ0KdGhpcyBvbmUg ZnVydGhlci4NCg0KLy8vam9uDQoNCg==