From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39011) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gZbd7-0003iJ-N3 for qemu-devel@nongnu.org; Wed, 19 Dec 2018 08:11:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gZbd0-0000XD-Rx for qemu-devel@nongnu.org; Wed, 19 Dec 2018 08:11:15 -0500 From: Vladimir Sementsov-Ogievskiy Date: Wed, 19 Dec 2018 13:11:00 +0000 Message-ID: References: <20181215135324.152629-1-eblake@redhat.com> <20181215135324.152629-10-eblake@redhat.com> In-Reply-To: <20181215135324.152629-10-eblake@redhat.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: <2EA3A33F107907408B75ABFA98243300@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH v2 09/22] nbd/client: Refactor nbd_receive_list() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Eric Blake , "qemu-devel@nongnu.org" Cc: "nsoffer@redhat.com" , "jsnow@redhat.com" , "rjones@redhat.com" , "qemu-block@nongnu.org" MTUuMTIuMjAxOCAxNjo1MywgRXJpYyBCbGFrZSB3cm90ZToNCj4gUmlnaHQgbm93LCBuYmRfcmVj ZWl2ZV9saXN0KCkgaXMgb25seSBjYWxsZWQgYnkNCj4gbmJkX3JlY2VpdmVfcXVlcnlfZXhwb3J0 cygpLCB3aGljaCBpbiB0dXJuIGlzIG9ubHkgY2FsbGVkIGlmIHRoZQ0KPiBzZXJ2ZXIgbGFja3Mg TkJEX09QVF9HTyBidXQgaGFzIHdvcmtpbmcgb3B0aW9uIG5lZ290aWF0aW9uLCBhbmQgaXMNCj4g bWVyZWx5IHVzZWQgYXMgYSBxdWFsaXR5LW9mLWltcGxlbWVudGF0aW9uIHRyaWNrIHNpbmNlIHNl cnZlcnMNCj4gY2FuJ3QgZ2l2ZSBkZWNlbnQgZXJyb3JzIGZvciBOQkRfT1BUX0VYUE9SVF9OQU1F LiAgSG93ZXZlciwgc2VydmVycw0KPiB0aGF0IGxhY2sgTkJEX09QVF9HTyBhcmUgYmVjb21pbmcg aW5jcmVhc2luZ2x5IHJhcmUgKG5iZGtpdCB3YXMgYQ0KPiBsYXRlY29tZXIsIGluIEF1ZyAyMDE4 LCBidXQgcWVtdSBoYXMgYmVlbiBzdWNoIGEgc2VydmVyIHNpbmNlIGNvbW1pdA0KPiBmMzc3MDhm NiBpbiBKdWx5IDIwMTcgYW5kIHJlbGVhc2VkIGluIDIuMTApLCBzbyBpdCBubyBsb25nZXIgbWFr ZXMNCj4gc2Vuc2UgdG8gbWljcm8tb3B0aW1pemUgdGhhdCBmdW5jdGlvbiBmb3IgcGVyZm9ybWFu Y2UuDQo+IA0KPiBGdXJ0aGVybW9yZSwgd2hlbiBkZWJ1Z2dpbmcgYSBzZXJ2ZXIncyBpbXBsZW1l bnRhdGlvbiwgdHJhY2luZyB0aGUNCj4gZnVsbCByZXBseSAoYm90aCBuYW1lcyBhbmQgZGVzY3Jp cHRpb25zKSBpcyB1c2VmdWwsIG5vdCB0byBtZW50aW9uDQo+IHRoYXQgdXBjb21pbmcgcGF0Y2hl cyBhZGRpbmcgJ3FlbXUtbmJkIC0tbGlzdCcgd2lsbCB3YW50IHRvIGNvbGxlY3QNCj4gdGhhdCBk YXRhLiAgQW5kIHdoZW4geW91IGNvbnNpZGVyIHRoYXQgYSBzZXJ2ZXIgY2FuIHNlbmQgYW4gZXhw b3J0DQo+IG5hbWUgdXAgdG8gdGhlIE5CRCBwcm90b2NvbCBsZW5ndGggbGltaXQgb2YgNGs7IGJ1 dCBvdXIgY3VycmVudA0KPiBOQkRfTUFYX05BTUVfU0laRSBpcyBvbmx5IDI1Niwgd2UgY2FuJ3Qg dHJhY2UgYWxsIHZhbGlkIHNlcnZlcg0KPiBuYW1lcyB3aXRob3V0IG1vcmUgc3RvcmFnZSwgYnV0 IDRrIGlzIGxhcmdlIGVub3VnaCB0aGF0IHRoZSBoZWFwDQo+IGlzIGJldHRlciB0aGFuIHRoZSBz dGFjayBmb3IgbG9uZyBuYW1lcy4NCj4gDQo+IFRodXMsIEknbSBjaGFuZ2luZyB0aGUgZGl2aXNp b24gb2YgbGFib3IsIHdpdGggbmJkX3JlY2VpdmVfbGlzdCgpDQo+IG5vdyBhbHdheXMgbWFsbG9j J2luZyBhIHJlc3VsdCBvbiBzdWNjZXNzICh0aGUgbWFsbG9jIGlzIGJvdW5kZWQNCj4gYnkgdGhl IGZhY3QgdGhhdCB3ZSByZWplY3Qgc2VydmVycyB3aXRoIGEgcmVwbHkgbGVuZ3RoIGxhcmdlcg0K PiB0aGFuIDMyTSksIGFuZCBtb3ZpbmcgdGhlIGNvbXBhcmlzb24gdG8gJ3dhbnRuYW1lJyB0byB0 aGUgY2FsbGVyLg0KPiANCj4gVGhlcmUgaXMgYSBtaW5vciBjaGFuZ2UgaW4gYmVoYXZpb3Igd2hl cmUgYSBzZXJ2ZXIgd2l0aCAwIGV4cG9ydHMNCj4gKGFuIGltbWVkaWF0ZSBOQkRfUkVQX0FDSyBy ZXBseSkgaXMgbm93IG5vIGxvbmdlciBkaXN0aW5ndWlzaGVkDQo+IGZyb20gYSBzZXJ2ZXIgd2l0 aG91dCBMSVNUIHN1cHBvcnQgKE5CRF9SRVBfRVJSX1VOU1VQKTsgdGhpcw0KPiBpbmZvcm1hdGlv biBjb3VsZCBiZSBwcmVzZXJ2ZWQgd2l0aCBhIGNvbXBsaWNhdGlvbiB0byB0aGUgY2FsbGluZw0K PiBjb250cmFjdCB0byBwcm92aWRlIGEgYml0IG1vcmUgaW5mb3JtYXRpb24sIGJ1dCBJIGRpZG4n dCBzZWUgdGhlDQo+IHBvaW50LiAgQWZ0ZXIgYWxsLCB0aGUgd29yc3QgdGhhdCBjYW4gaGFwcGVu IGlmIG91ciBndWVzcyBhdCBhDQo+IG1hdGNoIGlzIHdyb25nIGlzIHRoYXQgdGhlIGNhbGxlciB3 aWxsIGdldCBhIGNyeXB0aWMgZGlzY29ubmVjdA0KPiB3aGVuIE5CRF9PUFRfRVhQT1JUX05BTUUg ZmFpbHMgKHdoaWNoIGlzIG5vIGRpZmZlcmVudCBmcm9tIHdoYXQNCj4gd291bGQgaGFwcGVuIGlm IHdlIGhhZCBub3QgdHJpZWQgTElTVCksIHdoaWxlIHRyZWF0aW5nIGFuIGVtcHR5DQo+IGxpc3Qg YXMgaW1tZWRpYXRlIGZhaWx1cmUgd291bGQgcHJldmVudCBjb25uZWN0aW5nIHRvIHJlYWxseSBv bGQNCj4gc2VydmVycyB0aGF0IHJlYWxseSBkaWQgbGFjayBMSVNULiAgQmVzaWRlcywgTkJEIHNl cnZlcnMgd2l0aCAwDQo+IGV4cG9ydHMgYXJlIHJhcmUgKHFlbXUgY2FuIGRvIGl0IHdoZW4gdXNp bmcgUU1QIG5iZC1zZXJ2ZXItc3RhcnQNCj4gd2l0aG91dCBuYmQtc2VydmVyLWFkZCAtIGJ1dCBx ZW11IHVuZGVyc3RhbmRzIE5CRF9PUFRfR08gYW5kDQo+IHRodXMgd29uJ3QgdGlja2xlIHRoaXMg Y2hhbmdlIGluIGJlaGF2aW9yKS4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEVyaWMgQmxha2UgPGVi bGFrZUByZWRoYXQuY29tPg0KPiANCj4gLS0tDQo+IHYyOiBSZXdyaXRlIGluIGEgZGlmZmVyZW50 IG1hbm5lciAobW92ZSB0aGUgY29tcGFyaXNvbiB0byB0aGUNCj4gY2FsbGVyKQ0KPiBGaXggZnJl ZSB0byBnX2ZyZWUgW1ZsYWRpbWlyXQ0KPiAtLS0NCj4gICBuYmQvY2xpZW50LmMgICAgIHwgODkg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tDQo+ICAgbmJk L3RyYWNlLWV2ZW50cyB8ICAxICsNCj4gICAyIGZpbGVzIGNoYW5nZWQsIDU4IGluc2VydGlvbnMo KyksIDMyIGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL25iZC9jbGllbnQuYyBiL25i ZC9jbGllbnQuYw0KPiBpbmRleCAxYTNhNjIwZmI2ZC4uMjhmNWEyODZjYmEgMTAwNjQ0DQo+IC0t LSBhL25iZC9jbGllbnQuYw0KPiArKysgYi9uYmQvY2xpZW50LmMNCj4gQEAgLTIzMiwxOCArMjMy LDI0IEBAIHN0YXRpYyBpbnQgbmJkX2hhbmRsZV9yZXBseV9lcnIoUUlPQ2hhbm5lbCAqaW9jLCBO QkRPcHRpb25SZXBseSAqcmVwbHksDQo+ICAgICAgIHJldHVybiByZXN1bHQ7DQo+ICAgfQ0KPiAN Cj4gLS8qIFByb2Nlc3MgYW5vdGhlciBwb3J0aW9uIG9mIHRoZSBOQkRfT1BUX0xJU1QgcmVwbHku ICBTZXQgKkBtYXRjaCBpZg0KPiAtICogdGhlIGN1cnJlbnQgcmVwbHkgbWF0Y2hlcyBAd2FudCBv ciBpZiB0aGUgc2VydmVyIGRvZXMgbm90IHN1cHBvcnQNCj4gLSAqIE5CRF9PUFRfTElTVCwgb3Ro ZXJ3aXNlIGxlYXZlIEBtYXRjaCBhbG9uZS4gIFJldHVybiAwIGlmIGl0ZXJhdGlvbg0KPiAtICog aXMgY29tcGxldGUsIHBvc2l0aXZlIGlmIG1vcmUgcmVwbGllcyBhcmUgZXhwZWN0ZWQsIG9yIG5l Z2F0aXZlDQo+IC0gKiB3aXRoIEBlcnJwIHNldCBpZiBhbiB1bnJlY292ZXJhYmxlIGVycm9yIG9j Y3VycmVkLiAqLw0KPiAtc3RhdGljIGludCBuYmRfcmVjZWl2ZV9saXN0KFFJT0NoYW5uZWwgKmlv YywgY29uc3QgY2hhciAqd2FudCwgYm9vbCAqbWF0Y2gsDQo+ICsvKiBuYmRfcmVjZWl2ZV9saXN0 Og0KPiArICogUHJvY2VzcyBhbm90aGVyIHBvcnRpb24gb2YgdGhlIE5CRF9PUFRfTElTVCByZXBs eSwgcG9wdWxhdGluZyBhbnkNCj4gKyAqIG5hbWUgcmVjZWl2ZWQgaW50byAqQG5hbWUuIElmIEBk ZXNjcmlwdGlvbiBpcyBub24tTlVMTCwgYW5kIHRoZQ0KPiArICogc2VydmVyIHByb3ZpZGVkIGEg ZGVzY3JpcHRpb24sIHRoYXQgaXMgYWxzbyBwb3B1bGF0ZWQuIFRoZSBjYWxsZXINCj4gKyAqIG11 c3QgZXZlbnR1YWxseSBjYWxsIGdfZnJlZSgpIG9uIHN1Y2Nlc3MuDQo+ICsgKiBSZXR1cm5zIDEg aWYgYSBuYW1lIHdhcyByZWNlaXZlZCBhbmQgaXRlcmF0aW9uIG11c3QgY29udGludWUsDQo+ICsg KiAgICAgICAgIDAgaWYgaXRlcmF0aW9uIGlzIGNvbXBsZXRlLA0KDQptYXliZSwgc29tZXRoaW5n IGxpa2U6IGlmIGl0ZXJhdGlvbiBpcyBjb21wbGV0ZSwgb3IgTkJEX09QVF9MSVNUIGlzIHVuc3Vw cG9ydGVkLiBAbmFtZSBhbmQNCiAgQGRlc2NyaXB0aW9uIGFyZSBub3Qgc2V0Lg0KDQooaXQncyBu b3Qgb2J2aW91cyB0aGluZywgdGhhdCBpdGVyYXRpb24gY29tcGxldGUgYXNzdW1lcyBubyBuZXcg bmFtZSByZWNlaXZlZCwgYW5kIHRoYXQgMA0Kc2VydmVzIHVuc3VwcG9ydGVkIHRvbykNCg0KPiAr ICogICAgICAgICAtMSB3aXRoIEBlcnJwIHNldCBpZiBhbiB1bnJlY292ZXJhYmxlIGVycm9yIG9j Y3VycmVkLg0KPiArICovDQo+ICtzdGF0aWMgaW50IG5iZF9yZWNlaXZlX2xpc3QoUUlPQ2hhbm5l bCAqaW9jLCBjaGFyICoqbmFtZSwgY2hhciAqKmRlc2NyaXB0aW9uLA0KPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBFcnJvciAqKmVycnApDQo+ICAgew0KPiArICAgIGludCByZXQgPSAt MTsNCj4gICAgICAgTkJET3B0aW9uUmVwbHkgcmVwbHk7DQo+ICAgICAgIHVpbnQzMl90IGxlbjsN Cj4gICAgICAgdWludDMyX3QgbmFtZWxlbjsNCj4gLSAgICBjaGFyIG5hbWVbTkJEX01BWF9OQU1F X1NJWkUgKyAxXTsNCj4gKyAgICBjaGFyICpsb2NhbF9uYW1lID0gTlVMTDsNCj4gKyAgICBjaGFy ICpsb2NhbF9kZXNjID0gTlVMTDsNCj4gICAgICAgaW50IGVycm9yOw0KPiANCj4gICAgICAgaWYg KG5iZF9yZWNlaXZlX29wdGlvbl9yZXBseShpb2MsIE5CRF9PUFRfTElTVCwgJnJlcGx5LCBlcnJw KSA8IDApIHsNCj4gQEAgLTI1MSw5ICsyNTcsNiBAQCBzdGF0aWMgaW50IG5iZF9yZWNlaXZlX2xp c3QoUUlPQ2hhbm5lbCAqaW9jLCBjb25zdCBjaGFyICp3YW50LCBib29sICptYXRjaCwNCj4gICAg ICAgfQ0KPiAgICAgICBlcnJvciA9IG5iZF9oYW5kbGVfcmVwbHlfZXJyKGlvYywgJnJlcGx5LCBl cnJwKTsNCj4gICAgICAgaWYgKGVycm9yIDw9IDApIHsNCj4gLSAgICAgICAgLyogVGhlIHNlcnZl ciBkaWQgbm90IHN1cHBvcnQgTkJEX09QVF9MSVNULCBzbyBzZXQgKm1hdGNoIG9uDQo+IC0gICAg ICAgICAqIHRoZSBhc3N1bXB0aW9uIHRoYXQgYW55IG5hbWUgd2lsbCBiZSBhY2NlcHRlZC4gICov DQo+IC0gICAgICAgICptYXRjaCA9IHRydWU7DQoNCmhtLCBhY3R1YWxseSwgbWF0Y2ggd2FzIHdy b25nbHkgc2V0IHRvIHRydWUgb24gbmVnYXRpdmUgZXJyb3IsIGJ1dCBpdCBkb2Vzbid0IG1hdHRl ci4NCg0KPiAgICAgICAgICAgcmV0dXJuIGVycm9yOw0KPiAgICAgICB9DQo+ICAgICAgIGxlbiA9 IHJlcGx5Lmxlbmd0aDsNCj4gQEAgLTI5MCwzMyArMjkzLDM4IEBAIHN0YXRpYyBpbnQgbmJkX3Jl Y2VpdmVfbGlzdChRSU9DaGFubmVsICppb2MsIGNvbnN0IGNoYXIgKndhbnQsIGJvb2wgKm1hdGNo LA0KPiAgICAgICAgICAgbmJkX3NlbmRfb3B0X2Fib3J0KGlvYyk7DQo+ICAgICAgICAgICByZXR1 cm4gLTE7DQo+ICAgICAgIH0NCj4gLSAgICBpZiAobmFtZWxlbiAhPSBzdHJsZW4od2FudCkpIHsN Cj4gLSAgICAgICAgaWYgKG5iZF9kcm9wKGlvYywgbGVuLCBlcnJwKSA8IDApIHsNCj4gLSAgICAg ICAgICAgIGVycm9yX3ByZXBlbmQoZXJycCwNCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ImZhaWxlZCB0byBza2lwIGV4cG9ydCBuYW1lIHdpdGggd3JvbmcgbGVuZ3RoOiAiKTsNCj4gLSAg ICAgICAgICAgIG5iZF9zZW5kX29wdF9hYm9ydChpb2MpOw0KPiAtICAgICAgICAgICAgcmV0dXJu IC0xOw0KPiAtICAgICAgICB9DQo+IC0gICAgICAgIHJldHVybiAxOw0KPiAtICAgIH0NCj4gDQo+ IC0gICAgYXNzZXJ0KG5hbWVsZW4gPCBzaXplb2YobmFtZSkpOw0KPiAtICAgIGlmIChuYmRfcmVh ZChpb2MsIG5hbWUsIG5hbWVsZW4sIGVycnApIDwgMCkgew0KPiArICAgIGxvY2FsX25hbWUgPSBn X21hbGxvYyhuYW1lbGVuICsgMSk7DQo+ICsgICAgaWYgKG5iZF9yZWFkKGlvYywgbG9jYWxfbmFt ZSwgbmFtZWxlbiwgZXJycCkgPCAwKSB7DQo+ICAgICAgICAgICBlcnJvcl9wcmVwZW5kKGVycnAs ICJmYWlsZWQgdG8gcmVhZCBleHBvcnQgbmFtZTogIik7DQo+ICAgICAgICAgICBuYmRfc2VuZF9v cHRfYWJvcnQoaW9jKTsNCj4gLSAgICAgICAgcmV0dXJuIC0xOw0KPiArICAgICAgICBnb3RvIG91 dDsNCj4gICAgICAgfQ0KPiAtICAgIG5hbWVbbmFtZWxlbl0gPSAnXDAnOw0KPiArICAgIGxvY2Fs X25hbWVbbmFtZWxlbl0gPSAnXDAnOw0KPiAgICAgICBsZW4gLT0gbmFtZWxlbjsNCj4gLSAgICBp ZiAobmJkX2Ryb3AoaW9jLCBsZW4sIGVycnApIDwgMCkgew0KPiAtICAgICAgICBlcnJvcl9wcmVw ZW5kKGVycnAsICJmYWlsZWQgdG8gcmVhZCBleHBvcnQgZGVzY3JpcHRpb246ICIpOw0KPiAtICAg ICAgICBuYmRfc2VuZF9vcHRfYWJvcnQoaW9jKTsNCj4gLSAgICAgICAgcmV0dXJuIC0xOw0KPiAr ICAgIGlmIChsZW4pIHsNCj4gKyAgICAgICAgbG9jYWxfZGVzYyA9IGdfbWFsbG9jKGxlbiArIDEp Ow0KPiArICAgICAgICBpZiAobmJkX3JlYWQoaW9jLCBsb2NhbF9kZXNjLCBsZW4sIGVycnApIDwg MCkgew0KPiArICAgICAgICAgICAgZXJyb3JfcHJlcGVuZChlcnJwLCAiZmFpbGVkIHRvIHJlYWQg ZXhwb3J0IGRlc2NyaXB0aW9uOiAiKTsNCj4gKyAgICAgICAgICAgIG5iZF9zZW5kX29wdF9hYm9y dChpb2MpOw0KPiArICAgICAgICAgICAgZ290byBvdXQ7DQo+ICsgICAgICAgIH0NCj4gKyAgICAg ICAgbG9jYWxfZGVzY1tsZW5dID0gJ1wwJzsNCj4gICAgICAgfQ0KPiAtICAgIGlmICghc3RyY21w KG5hbWUsIHdhbnQpKSB7DQo+IC0gICAgICAgICptYXRjaCA9IHRydWU7DQo+ICsNCj4gKyAgICB0 cmFjZV9uYmRfcmVjZWl2ZV9saXN0KGxvY2FsX25hbWUsIGxvY2FsX2Rlc2MgPzogIiIpOw0KPiAr ICAgICpuYW1lID0gbG9jYWxfbmFtZTsNCj4gKyAgICBsb2NhbF9uYW1lID0gTlVMTDsNCj4gKyAg ICBpZiAoZGVzY3JpcHRpb24pIHsNCj4gKyAgICAgICAgKmRlc2NyaXB0aW9uID0gbG9jYWxfZGVz YzsNCj4gKyAgICAgICAgbG9jYWxfZGVzYyA9IE5VTEw7DQo+ICAgICAgIH0NCj4gLSAgICByZXR1 cm4gMTsNCj4gKyAgICByZXQgPSAxOw0KPiArDQo+ICsgb3V0Og0KPiArICAgIGdfZnJlZShsb2Nh bF9uYW1lKTsNCj4gKyAgICBnX2ZyZWUobG9jYWxfZGVzYyk7DQo+ICsgICAgcmV0dXJuIHJldDsN Cj4gICB9DQo+IA0KPiANCj4gQEAgLTQ5MSw2ICs0OTksNyBAQCBzdGF0aWMgaW50IG5iZF9yZWNl aXZlX3F1ZXJ5X2V4cG9ydHMoUUlPQ2hhbm5lbCAqaW9jLA0KPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp3YW50bmFtZSwNCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IgKiplcnJwKQ0KPiAgIHsNCj4gKyAgICBi b29sIGxpc3RFbXB0eSA9IHRydWU7DQo+ICAgICAgIGJvb2wgZm91bmRFeHBvcnQgPSBmYWxzZTsN Cg0KYmVpbmcgaGVyZSwgYmV0dGVyIGlzIHRvIGZpeCBuYW1pbmcgdG8gUWVtdSBjb2Rpbmcgc3R5 bGUsIGxpc3RfZW1wdHkgYW5kIGZvdW5kX2V4cG9ydA0KDQo+IA0KPiAgICAgICB0cmFjZV9uYmRf cmVjZWl2ZV9xdWVyeV9leHBvcnRzX3N0YXJ0KHdhbnRuYW1lKTsNCj4gQEAgLTQ5OSwxNCArNTA4 LDI1IEBAIHN0YXRpYyBpbnQgbmJkX3JlY2VpdmVfcXVlcnlfZXhwb3J0cyhRSU9DaGFubmVsICpp b2MsDQo+ICAgICAgIH0NCj4gDQo+ICAgICAgIHdoaWxlICgxKSB7DQo+IC0gICAgICAgIGludCBy ZXQgPSBuYmRfcmVjZWl2ZV9saXN0KGlvYywgd2FudG5hbWUsICZmb3VuZEV4cG9ydCwgZXJycCk7 DQo+ICsgICAgICAgIGNoYXIgKm5hbWU7DQo+ICsgICAgICAgIGludCByZXQgPSBuYmRfcmVjZWl2 ZV9saXN0KGlvYywgJm5hbWUsIE5VTEwsIGVycnApOw0KPiANCj4gICAgICAgICAgIGlmIChyZXQg PCAwKSB7DQo+ICAgICAgICAgICAgICAgLyogU2VydmVyIGdhdmUgdW5leHBlY3RlZCByZXBseSAq Lw0KPiAgICAgICAgICAgICAgIHJldHVybiAtMTsNCj4gICAgICAgICAgIH0gZWxzZSBpZiAocmV0 ID09IDApIHsNCj4gICAgICAgICAgICAgICAvKiBEb25lIGl0ZXJhdGluZy4gKi8NCj4gLSAgICAg ICAgICAgIGlmICghZm91bmRFeHBvcnQpIHsNCj4gKyAgICAgICAgICAgIGlmIChsaXN0RW1wdHkp IHsNCj4gKyAgICAgICAgICAgICAgICAvKg0KPiArICAgICAgICAgICAgICAgICAqIFdlIGRvbid0 IGhhdmUgZW5vdWdoIGNvbnRleHQgdG8gdGVsbCBhIHNlcnZlciB0aGF0DQo+ICsgICAgICAgICAg ICAgICAgICogc2VudCBhbiBlbXB0eSBsaXN0IGFwYXJ0IGZyb20gYSBzZXJ2ZXIgdGhhdCBkb2Vz DQo+ICsgICAgICAgICAgICAgICAgICogbm90IHN1cHBvcnQgdGhlIGxpc3QgY29tbWFuZDsgYnV0 IGFzIHRoaXMgZnVuY3Rpb24NCj4gKyAgICAgICAgICAgICAgICAgKiBpcyBqdXN0IHVzZWQgdG8g dHJpZ2dlciBhIG5pY2VyIGVycm9yIG1lc3NhZ2UNCj4gKyAgICAgICAgICAgICAgICAgKiBiZWZv cmUgdHJ5aW5nIE5CRF9PUFRfRVhQT1JUX05BTUUsIGFzc3VtZSB0aGUNCj4gKyAgICAgICAgICAg ICAgICAgKiBleHBvcnQgaXMgYXZhaWxhYmxlLg0KPiArICAgICAgICAgICAgICAgICAqLw0KPiAr ICAgICAgICAgICAgICAgIHJldHVybiAwOw0KPiArICAgICAgICAgICAgfSBlbHNlIGlmICghZm91 bmRFeHBvcnQpIHsNCj4gICAgICAgICAgICAgICAgICAgZXJyb3Jfc2V0ZyhlcnJwLCAiTm8gZXhw b3J0IHdpdGggbmFtZSAnJXMnIGF2YWlsYWJsZSIsDQo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgd2FudG5hbWUpOw0KPiAgICAgICAgICAgICAgICAgICBuYmRfc2VuZF9vcHRfYWJvcnQo aW9jKTsNCj4gQEAgLTUxNSw2ICs1MzUsMTEgQEAgc3RhdGljIGludCBuYmRfcmVjZWl2ZV9xdWVy eV9leHBvcnRzKFFJT0NoYW5uZWwgKmlvYywNCj4gICAgICAgICAgICAgICB0cmFjZV9uYmRfcmVj ZWl2ZV9xdWVyeV9leHBvcnRzX3N1Y2Nlc3Mod2FudG5hbWUpOw0KPiAgICAgICAgICAgICAgIHJl dHVybiAwOw0KPiAgICAgICAgICAgfQ0KPiArICAgICAgICBsaXN0RW1wdHkgPSBmYWxzZTsNCj4g KyAgICAgICAgaWYgKCFzdHJjbXAobmFtZSwgd2FudG5hbWUpKSB7DQo+ICsgICAgICAgICAgICBm b3VuZEV4cG9ydCA9IHRydWU7DQo+ICsgICAgICAgIH0NCj4gKyAgICAgICAgZ19mcmVlKG5hbWUp Ow0KPiAgICAgICB9DQo+ICAgfQ0KPiANCj4gZGlmZiAtLWdpdCBhL25iZC90cmFjZS1ldmVudHMg Yi9uYmQvdHJhY2UtZXZlbnRzDQo+IGluZGV4IDVlMWQ0YWZlOGU2Li44ZTlmYzAyNGMyOCAxMDA2 NDQNCj4gLS0tIGEvbmJkL3RyYWNlLWV2ZW50cw0KPiArKysgYi9uYmQvdHJhY2UtZXZlbnRzDQo+ IEBAIC0yLDYgKzIsNyBAQA0KPiAgIG5iZF9zZW5kX29wdGlvbl9yZXF1ZXN0KHVpbnQzMl90IG9w dCwgY29uc3QgY2hhciAqbmFtZSwgdWludDMyX3QgbGVuKSAiU2VuZGluZyBvcHRpb24gcmVxdWVz dCAlIiBQUkl1MzIiICglcyksIGxlbiAlIiBQUkl1MzINCj4gICBuYmRfcmVjZWl2ZV9vcHRpb25f cmVwbHkodWludDMyX3Qgb3B0aW9uLCBjb25zdCBjaGFyICpvcHRuYW1lLCB1aW50MzJfdCB0eXBl LCBjb25zdCBjaGFyICp0eXBlbmFtZSwgdWludDMyX3QgbGVuZ3RoKSAiUmVjZWl2ZWQgb3B0aW9u IHJlcGx5ICUiIFBSSXUzMiIgKCVzKSwgdHlwZSAlIiBQUkl1MzIiICglcyksIGxlbiAlIiBQUkl1 MzINCj4gICBuYmRfcmVwbHlfZXJyX3Vuc3VwKHVpbnQzMl90IG9wdGlvbiwgY29uc3QgY2hhciAq bmFtZSkgInNlcnZlciBkb2Vzbid0IHVuZGVyc3RhbmQgcmVxdWVzdCAlIiBQUkl1MzIgIiAoJXMp LCBhdHRlbXB0aW5nIGZhbGxiYWNrIg0KPiArbmJkX3JlY2VpdmVfbGlzdChjb25zdCBjaGFyICpu YW1lLCBjb25zdCBjaGFyICpkZXNjKSAiZXhwb3J0IGxpc3QgaW5jbHVkZXMgJyVzJywgZGVzY3Jp cHRpb24gJyVzJyINCj4gICBuYmRfb3B0X2dvX3N0YXJ0KGNvbnN0IGNoYXIgKm5hbWUpICJBdHRl bXB0aW5nIE5CRF9PUFRfR08gZm9yIGV4cG9ydCAnJXMnIg0KPiAgIG5iZF9vcHRfZ29fc3VjY2Vz cyh2b2lkKSAiRXhwb3J0IGlzIGdvb2QgdG8gZ28iDQo+ICAgbmJkX29wdF9nb19pbmZvX3Vua25v d24oaW50IGluZm8sIGNvbnN0IGNoYXIgKm5hbWUpICJJZ25vcmluZyB1bmtub3duIGluZm8gJWQg KCVzKSINCj4gDQoNCg0KTmV3IHNlbWFudGljcyBvZiBuYmRfcmVjZWl2ZV9saXN0IGlzIG11Y2gg bW9yZSBzaW1wbGUsIHRoYW5rIHlvdSEgV2l0aCBvciB3aXRob3V0IG15IHRpbnkgc3VnZ2VzdGlv bnM6DQpSZXZpZXdlZC1ieTogVmxhZGltaXIgU2VtZW50c292LU9naWV2c2tpeSA8dnNlbWVudHNv dkB2aXJ0dW96em8uY29tPg0KDQoNCi0tIA0KQmVzdCByZWdhcmRzLA0KVmxhZGltaXINCg==