Return-Path: X-Original-To: apmail-httpd-modules-dev-archive@minotaur.apache.org Delivered-To: apmail-httpd-modules-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id E678710125 for ; Thu, 4 Dec 2014 21:55:28 +0000 (UTC) Received: (qmail 50683 invoked by uid 500); 4 Dec 2014 21:55:28 -0000 Delivered-To: apmail-httpd-modules-dev-archive@httpd.apache.org Received: (qmail 50639 invoked by uid 500); 4 Dec 2014 21:55:28 -0000 Mailing-List: contact modules-dev-help@httpd.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: modules-dev@httpd.apache.org Delivered-To: mailing list modules-dev@httpd.apache.org Received: (qmail 50555 invoked by uid 99); 4 Dec 2014 21:55:27 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 04 Dec 2014 21:55:27 +0000 X-ASF-Spam-Status: No, hits=0.3 required=5.0 tests=FREEMAIL_REPLY,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of ylavic.dev@gmail.com designates 209.85.223.179 as permitted sender) Received: from [209.85.223.179] (HELO mail-ie0-f179.google.com) (209.85.223.179) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 04 Dec 2014 21:55:23 +0000 Received: by mail-ie0-f179.google.com with SMTP id rp18so16736644iec.38 for ; Thu, 04 Dec 2014 13:52:47 -0800 (PST) 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; bh=QtdyBBTJG1YH4XJ/u1jx2Q42smF9lRrzRG5ELccsNhk=; b=zj6u9MrbBg9CU/8uktZjA++LhNM7D3mS2jL2RT2k0vmv4MQvip5ittegmFEeRHdwgK 7/fbPjotheKGc/ffaDYmvArKo47psZGFJ0IUtq3ms3jKchBcxeMWsYgApPAg+WBpKxmh RIGkunT0btdl2HY+cusGEi+Od8xzsVHjABYAN5SNPBkivjCxJ+CB2wWDu35fBzsr2yxw r4NGLG3sR6ss1s4F6nq20ekBVvDKENaQFc8u3KrGtihIvQdx8IPxGCHxD9V4Xb4JjYdt 0BqlI3dErLQcVZ4JVsK9SEaZ+tySvjDY2bF69GSOvFYSgaLxxIsTrD92gVY+VIKl1paK U/lg== MIME-Version: 1.0 X-Received: by 10.42.179.1 with SMTP id bo1mr13081823icb.35.1417729967606; Thu, 04 Dec 2014 13:52:47 -0800 (PST) Received: by 10.42.255.7 with HTTP; Thu, 4 Dec 2014 13:52:47 -0800 (PST) In-Reply-To: References: <03e3431f1ab84df0be6b7b515f1eec79@mx.valmarc.com> <0a049476972343dbbf4fe3c749c218ff@mx.valmarc.com> Date: Thu, 4 Dec 2014 22:52:47 +0100 Message-ID: Subject: Re: problem with shared memory and directives for httpd From: Yann Ylavic To: modules-dev@httpd.apache.org Content-Type: multipart/mixed; boundary=90e6ba6e82861b78cb05096afbac X-Virus-Checked: Checked by ClamAV on apache.org --90e6ba6e82861b78cb05096afbac Content-Type: text/plain; charset=UTF-8 Hi, to not depend on where you declare : KcacheEnabled On you need to iterate over the server_rec list in post_config and child_init hooks. Please see attached modifications (where only a server_config is used). Regards, Yann. On Thu, Dec 4, 2014 at 5:46 PM, nik600 wrote: > because i've tried with both or with only one. > > IE, if i use: > > module AP_MODULE_DECLARE_DATA kcache_module = { > STANDARD20_MODULE_STUFF,NULL , NULL, create_server_conf, merge_conf, > kcache_directives, register_hooks }; > > i have the same behaviour > > > 2014-12-04 17:32 GMT+01:00 Eric Johanson : > >> Okay but why are you managing the kcache_config structure with both the >> per-directory AND the server-level functions? You should decide if your >> kcache_config is server-wide or if it is per-directory, and use only the >> appropriate functions. >> -Eric >> >> >> From: nik600 [mailto:nik600@gmail.com] >> Sent: Thursday, December 04, 2014 11:15 AM >> To: modules-dev@httpd.apache.org >> Subject: Re: problem with shared memory and directives for httpd >> >> Hi >> >> thanks for your reply. >> >> i've tried also with a merging function but i have the same behaviour. >> >> Attached the same example with also merge function. >> >> Maybe i'm doing something wrong in my merge function? >> >> >> 2014-12-04 16:33 GMT+01:00 Eric Johanson > ericj@valmarc.com>>: >> You have no merge function defined for your server-level config structure >> (kcache_config). I would definitely try implementing that function. >> Otherwise, when apache goes to combine two levels of the config hierarchy >> together, the resulting combination is likely to just be an empty version >> of kcache_config, which sounds like it could be causing your problem. >> >> -Eric >> >> >> From: nik600 [mailto:nik600@gmail.com] >> Sent: Thursday, December 04, 2014 10:05 AM >> To: modules-dev@httpd.apache.org >> Subject: problem with shared memory and directives for httpd >> >> Dear all >> >> i'm experiencing a problem with shared memory and i'm not able to figure >> it out. >> >> i've got a segment of shared memory in my module config and seen that if >> set some settings for the module in my configuration this memory isn't >> available in the request process. >> >> i've also attached an example (very simplified and without any mutex, just >> to show the case). >> >> i've noticed that if i have in my server configuration: >> >> >> KcacheEnabled On >> >> >> The memory segment is not availabe: >> >> >>[Thu Dec 04 15:26:15 2014] [crit] [client 127.0.0.1] >> kcache_return_result invalid config->s >> >> But if i comment this directive: >> >> >> # KcacheEnabled On >> >> >> The memory segment is available and gets updated: >> >> >>[Thu Dec 04 15:24:47 2014] [debug] src/mod_kcache.c(96): [client >> 127.0.0.1] config->s->counter=68 >> >>[Thu Dec 04 15:24:48 2014] [debug] src/mod_kcache.c(96): [client >> 127.0.0.1] config->s->counter=69 >> >>[Thu Dec 04 15:24:48 2014] [debug] src/mod_kcache.c(96): [client >> 127.0.0.1] config->s->counter=70 >> ... >> >> i've attached the full example (100 lines of code) >> >> I'll appreciate any help, thank all in advance >> >> -- >> /*************/ >> nik600 >> http://www.kumbe.it >> >> >> >> -- >> /*************/ >> nik600 >> http://www.kumbe.it >> > > > > -- > /*************/ > nik600 > http://www.kumbe.it --90e6ba6e82861b78cb05096afbac Content-Type: text/plain; charset=US-ASCII; name="mod_kcache.diff" Content-Disposition: attachment; filename="mod_kcache.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i3anscol0 LS0tIG1vZF9rY2FjaGUuYwkyMDE0LTEyLTA0IDIyOjM5OjE4LjM1Njg4MTMyMyArMDEwMAorKysg bW9kX2tjYWNoZS5uZXcuYwkyMDE0LTEyLTA0IDIyOjQ5OjE2LjgwNDY0MDk4OCArMDEwMApAQCAt MTAsNyArMTAsNyBAQCB0eXBlZGVmIHN0cnVjdCB7CiB9IGtjYWNoZV9jb25maWdfc3RhdDsKIAog dHlwZWRlZiBzdHJ1Y3QgewotCWludCBlbmFibGVkOworCWludCBlbmFibGVkLCBlbmFibGVkX3Nl dDsKIAlhcHJfc2htX3QgKmNvdW50ZXJzX3NobTsgLyogdGhlIEFQUiBzaGFyZWQgc2VnbWVudCBv YmplY3QqLwogCWtjYWNoZV9jb25maWdfc3RhdCAqczsvKm15IHN0YXRzKi8KIH0ga2NhY2hlX2Nv bmZpZzsKQEAgLTI3LDggKzI3LDE1IEBAIHN0YXRpYyBjb25zdCBjb21tYW5kX3JlYyBrY2FjaGVf ZGlyZWN0aXYKIAkJa2NhY2hlX3NldF9lbmFibGVkLCBOVUxMLCBSU1JDX0NPTkYsCiAJCSJLY2Fj aGVFbmFibGVkIG11c3QgaGF2ZSBPZmYgb3IgT24gdmFsdWUiKSwgeyBOVUxMIH0gfTsKIAotbW9k dWxlIEFQX01PRFVMRV9ERUNMQVJFX0RBVEEga2NhY2hlX21vZHVsZSA9IHsgU1RBTkRBUkQyMF9N T0RVTEVfU1RVRkYsIGNyZWF0ZV9kaXJfY29uZiwKLQkJbWVyZ2VfY29uZiwgY3JlYXRlX3NlcnZl cl9jb25mLCBtZXJnZV9jb25mLCBrY2FjaGVfZGlyZWN0aXZlcywgcmVnaXN0ZXJfaG9va3MgfTsK K21vZHVsZSBBUF9NT0RVTEVfREVDTEFSRV9EQVRBIGtjYWNoZV9tb2R1bGUgPSB7CisgICAgU1RB TkRBUkQyMF9NT0RVTEVfU1RVRkYsCisgICAgTlVMTCwgLyogbm8gY3JlYXRlX2Rpcl9jb25mICov CisgICAgTlVMTCwgLyogbm8gbWVyZ2VfZGlyX2NvbmYgKi8KKyAgICBjcmVhdGVfc2VydmVyX2Nv bmYsCisgICAgbWVyZ2VfY29uZiwKKyAgICBrY2FjaGVfZGlyZWN0aXZlcywKKyAgICByZWdpc3Rl cl9ob29rcworfTsKIAogdm9pZCogbWVyZ2VfY29uZihhcHJfcG9vbF90KiBwb29sLCB2b2lkKiBC QVNFLCB2b2lkKiBBREQpIHsKIAlrY2FjaGVfY29uZmlnKiBiYXNlID0gKGtjYWNoZV9jb25maWcg KikgQkFTRSA7IC8qIFRoaXMgaXMgd2hhdCB3YXMgc2V0IGluIHRoZSBwYXJlbnQgY29udGV4dCAq LwpAQCAtMzYsMjYgKzQzLDE4IEBAIHZvaWQqIG1lcmdlX2NvbmYoYXByX3Bvb2xfdCogcG9vbCwg dm9pZCoKIAlrY2FjaGVfY29uZmlnKiBjb25mID0gKGtjYWNoZV9jb25maWcgKikgY3JlYXRlX3Nl cnZlcl9jb25mKHBvb2wsIE5VTEwpOyAvKiBUaGlzIHdpbGwgYmUgdGhlIG1lcmdlZCBjb25maWd1 cmF0aW9uICovCiAKICAgICAvKiBNZXJnZSBjb25maWd1cmF0aW9ucyAqLwotICAgIGNvbmYtPmVu YWJsZWQgPSAoIGFkZC0+ZW5hYmxlZCA9PSAwICkgPyBiYXNlLT5lbmFibGVkIDogYWRkLT5lbmFi bGVkIDsKLSAgICBjb25mLT5zPWJhc2UtPnM7Ci0gICAgY29uZi0+Y291bnRlcnNfc2htPWJhc2Ut PmNvdW50ZXJzX3NobTsKKyAgICBjb25mLT5lbmFibGVkID0gKCBhZGQtPmVuYWJsZWRfc2V0ICkg PyBhZGQtPmVuYWJsZWQgOiBiYXNlLT5lbmFibGVkOwogCiAgICAgcmV0dXJuIGNvbmYgOwogfQot dm9pZCAqY3JlYXRlX2Rpcl9jb25mKGFwcl9wb29sX3QgKnBvb2wsIGNoYXIgKmNvbnRleHQpIHsK LQlrY2FjaGVfY29uZmlnICpjZmcgPSBhcHJfcGNhbGxvYyhwb29sLCBzaXplb2Yoa2NhY2hlX2Nv bmZpZykpOwogCi0JcmV0dXJuIGNmZzsKLX0KIC8qCiAgKiBjcmVhdGluZyB0aGUgc2VydmVyIGNm ZwogICovCiB2b2lkICpjcmVhdGVfc2VydmVyX2NvbmYoYXByX3Bvb2xfdCAqcG9vbCwgc2VydmVy X3JlYyAqcykgewogCWtjYWNoZV9jb25maWcgKmNmZyA9IGFwcl9wY2FsbG9jKHBvb2wsIHNpemVv ZihrY2FjaGVfY29uZmlnKSk7CiAKLQlpZihzIT1OVUxMKXsKLQkJYXBfbG9nX2Vycm9yKEFQTE9H X01BUkssIEFQTE9HX0RFQlVHLCAwLCBzLCJrY2FjaGU6Y3JlYXRlX3NlcnZlcl9jb25mIGNyZW8g bGEgY29uZmlndXJhemlvbmUiKTsKLQl9CisJYXBfbG9nX2Vycm9yKEFQTE9HX01BUkssIEFQTE9H X0RFQlVHLCAwLCBzLCJrY2FjaGU6Y3JlYXRlX3NlcnZlcl9jb25mIGNyZW8gbGEgY29uZmlndXJh emlvbmUiKTsKIAogCXJldHVybiBjZmc7CiB9CkBAIC02NiwxMyArNjUsMTIgQEAgY29uc3QgY2hh ciAqa2NhY2hlX3NldF9lbmFibGVkKGNtZF9wYXJtcwogCQkJY21kLT5zZXJ2ZXItPm1vZHVsZV9j b25maWcsICZrY2FjaGVfbW9kdWxlKTsKIAkvKn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn4qLwogCi0JaWYgKGNvbmYpIHsKLQkJaWYgKCFzdHJjYXNlY21wKGFyZywg Im9uIikpCi0JCQljb25mLT5lbmFibGVkID0gMTsKLQkJZWxzZQotCQkJY29uZi0+ZW5hYmxlZCA9 IDA7CisgICAgY29uZi0+ZW5hYmxlZF9zZXQgPSAxOworICAgIGlmICghc3RyY2FzZWNtcChhcmcs ICJvbiIpKQorICAgICAgICBjb25mLT5lbmFibGVkID0gMTsKKyAgICBlbHNlCisgICAgICAgIGNv bmYtPmVuYWJsZWQgPSAwOwogCi0JfQogCXJldHVybiBOVUxMOwogfQogCkBAIC04MywxMSArODEs MTIgQEAgc3RhdGljIHZvaWQga2NhY2hlX2NoaWxkX2luaXQoYXByX3Bvb2xfdAogCiAJYXBfbG9n X2Vycm9yKEFQTE9HX01BUkssIEFQTE9HX0RFQlVHLCAwLCBzLCJrY2FjaGU6a2NhY2hlX2NoaWxk X2luaXQgaW1wb3N0byBsJ2luZGlyaXp6byBkZWxsYSBzaGFyZWQgbWVtb3J5Iik7CiAKLQlrY2Fj aGVfY29uZmlnICpzY2ZnID0KLQkJCWFwX2dldF9tb2R1bGVfY29uZmlnKHMtPm1vZHVsZV9jb25m aWcsICZrY2FjaGVfbW9kdWxlKTsKLQotCXNjZmctPnMgPSBhcHJfc2htX2Jhc2VhZGRyX2dldChz Y2ZnLT5jb3VudGVyc19zaG0pOworICAgIGZvciAoOyBzOyBzID0gcy0+bmV4dCkgeworICAgICAg ICBrY2FjaGVfY29uZmlnICpzY2ZnID0KKyAgICAgICAgICAgICAgICBhcF9nZXRfbW9kdWxlX2Nv bmZpZyhzLT5tb2R1bGVfY29uZmlnLCAma2NhY2hlX21vZHVsZSk7CiAKKyAgICAgICAgc2NmZy0+ cyA9IGFwcl9zaG1fYmFzZWFkZHJfZ2V0KHNjZmctPmNvdW50ZXJzX3NobSk7CisgICAgfQogfQog LyoKICAqIGNyZWF0ZSB0aGUgc2htCkBAIC05NiwxNCArOTUsMzAgQEAgc3RhdGljIGludCBrY2Fj aGVfcG9zdF9jb25maWcoYXByX3Bvb2xfdAogCQlhcHJfcG9vbF90ICpwdGVtcCwgc2VydmVyX3Jl YyAqcykgewogCWFwX2xvZ19lcnJvcihBUExPR19NQVJLLCBBUExPR19ERUJVRywgMCwgcywia2Nh Y2hlOmtjYWNoZV9wb3N0X2NvbmZpZyBjcmVvIGxhIHNoYXJlZCBtZW1vcnkiKTsKIAotCWtjYWNo ZV9jb25maWcgKnNjZmcgPSBhcF9nZXRfbW9kdWxlX2NvbmZpZyhzLT5tb2R1bGVfY29uZmlnLCAm a2NhY2hlX21vZHVsZSk7Ci0KLQlhcHJfc2htX2NyZWF0ZSgmc2NmZy0+Y291bnRlcnNfc2htLCBz aXplb2YoKnNjZmctPnMpLCBOVUxMLCBwY29uZik7Ci0KLQlzY2ZnLT5zID0gYXByX3NobV9iYXNl YWRkcl9nZXQoc2NmZy0+Y291bnRlcnNfc2htKTsKLQlzY2ZnLT5zLT5jb3VudGVyID0gMDsKKyAg ICBrY2FjaGVfY29uZmlnICptYWluX3NjZmcgPSBhcF9nZXRfbW9kdWxlX2NvbmZpZyhzLT5tb2R1 bGVfY29uZmlnLCAma2NhY2hlX21vZHVsZSk7CisgICAgZm9yICg7IHM7IHMgPSBzLT5uZXh0KSB7 CisgICAgICAgIGtjYWNoZV9jb25maWcgKnNjZmcgPQorICAgICAgICAgICAgICAgIGFwX2dldF9t b2R1bGVfY29uZmlnKHMtPm1vZHVsZV9jb25maWcsICZrY2FjaGVfbW9kdWxlKTsKKworICAgICAg ICBpZiAoc2NmZy0+ZW5hYmxlZCkgeworICAgICAgICAgICAgaWYgKG1haW5fc2NmZy0+cyA9PSBO VUxMKSB7CisgICAgICAgICAgICAgICAgYXBfbG9nX2Vycm9yKEFQTE9HX01BUkssIEFQTE9HX0RF QlVHLCAwLCBzLAorICAgICAgICAgICAgICAgICAgICAgICAgImtjYWNoZTprY2FjaGVfcG9zdF9j b25maWcgY3JlbyBsYSBzaGFyZWQgbWVtb3J5Iik7CisgICAgICAgICAgICAgICAgYXByX3NobV9j cmVhdGUoJm1haW5fc2NmZy0+Y291bnRlcnNfc2htLCBzaXplb2YoKm1haW5fc2NmZy0+cyksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgcGNvbmYpOworICAgICAgICAgICAg ICAgIG1haW5fc2NmZy0+cyA9IGFwcl9zaG1fYmFzZWFkZHJfZ2V0KG1haW5fc2NmZy0+Y291bnRl cnNfc2htKTsKKyAgICAgICAgICAgICAgICBtYWluX3NjZmctPnMtPmNvdW50ZXIgPSAwOworICAg ICAgICAgICAgICAgIGlmIChzY2ZnID09IG1haW5fc2NmZykgeworICAgICAgICAgICAgICAgICAg ICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAg ICAgIHNjZmctPmNvdW50ZXJzX3NobSA9IG1haW5fc2NmZy0+Y291bnRlcnNfc2htOworICAgICAg ICAgICAgc2NmZy0+cyA9IG1haW5fc2NmZy0+czsKKyAgICAgICAgfQorICAgIH0KIAotCXJldHVy biBERUNMSU5FRDsKKyAgICByZXR1cm4gT0s7CiB9CiAKIHN0YXRpYyBpbnQga2NhY2hlX2hhbmRs ZXJfdHJhbnNsYXRlX2ZpbGVzKHJlcXVlc3RfcmVjKiByKSB7Cg== --90e6ba6e82861b78cb05096afbac Content-Type: text/x-csrc; charset=US-ASCII; name="mod_kcache.new.c" Content-Disposition: attachment; filename="mod_kcache.new.c" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i3anscpv1 I2luY2x1ZGUgPGh0dHBkLmg+CiNpbmNsdWRlIDxodHRwX3Byb3RvY29sLmg+CiNpbmNsdWRlIDxo dHRwX2NvbmZpZy5oPgojaW5jbHVkZSA8aHR0cF9sb2cuaD4KI2luY2x1ZGUgPHN5cy9zdGF0Lmg+ CiNpbmNsdWRlIDxhcHJfc2htLmg+Cgp0eXBlZGVmIHN0cnVjdCB7CglhcHJfc2l6ZV90IGNvdW50 ZXI7IC8qIG15IGNvdW50ZXIgKi8KfSBrY2FjaGVfY29uZmlnX3N0YXQ7Cgp0eXBlZGVmIHN0cnVj dCB7CglpbnQgZW5hYmxlZCwgZW5hYmxlZF9zZXQ7CglhcHJfc2htX3QgKmNvdW50ZXJzX3NobTsg LyogdGhlIEFQUiBzaGFyZWQgc2VnbWVudCBvYmplY3QqLwoJa2NhY2hlX2NvbmZpZ19zdGF0ICpz Oy8qbXkgc3RhdHMqLwp9IGtjYWNoZV9jb25maWc7Cgp2b2lkKiBtZXJnZV9jb25mKGFwcl9wb29s X3QqIHBvb2wsIHZvaWQqIEJBU0UsIHZvaWQqIEFERCk7CnZvaWQgKmNyZWF0ZV9kaXJfY29uZihh cHJfcG9vbF90ICpwb29sLCBjaGFyICpjb250ZXh0KTsKdm9pZCAqY3JlYXRlX3NlcnZlcl9jb25m KGFwcl9wb29sX3QgKnAsIHNlcnZlcl9yZWMgKnMpOwpzdGF0aWMgdm9pZCByZWdpc3Rlcl9ob29r cyhhcHJfcG9vbF90ICpwb29sKTsKCmNvbnN0IGNoYXIgKmtjYWNoZV9zZXRfZW5hYmxlZChjbWRf cGFybXMgKmNtZCwgdm9pZCAqY2ZnLCBjb25zdCBjaGFyICphcmcpOwoKc3RhdGljIGNvbnN0IGNv bW1hbmRfcmVjIGtjYWNoZV9kaXJlY3RpdmVzW10gPSB7CgkJQVBfSU5JVF9UQUtFMSgiS2NhY2hl RW5hYmxlZCIsCgkJa2NhY2hlX3NldF9lbmFibGVkLCBOVUxMLCBSU1JDX0NPTkYsCgkJIktjYWNo ZUVuYWJsZWQgbXVzdCBoYXZlIE9mZiBvciBPbiB2YWx1ZSIpLCB7IE5VTEwgfSB9OwoKbW9kdWxl IEFQX01PRFVMRV9ERUNMQVJFX0RBVEEga2NhY2hlX21vZHVsZSA9IHsKICAgIFNUQU5EQVJEMjBf TU9EVUxFX1NUVUZGLAogICAgTlVMTCwgLyogbm8gY3JlYXRlX2Rpcl9jb25mICovCiAgICBOVUxM LCAvKiBubyBtZXJnZV9kaXJfY29uZiAqLwogICAgY3JlYXRlX3NlcnZlcl9jb25mLAogICAgbWVy Z2VfY29uZiwKICAgIGtjYWNoZV9kaXJlY3RpdmVzLAogICAgcmVnaXN0ZXJfaG9va3MKfTsKCnZv aWQqIG1lcmdlX2NvbmYoYXByX3Bvb2xfdCogcG9vbCwgdm9pZCogQkFTRSwgdm9pZCogQUREKSB7 CglrY2FjaGVfY29uZmlnKiBiYXNlID0gKGtjYWNoZV9jb25maWcgKikgQkFTRSA7IC8qIFRoaXMg aXMgd2hhdCB3YXMgc2V0IGluIHRoZSBwYXJlbnQgY29udGV4dCAqLwoJa2NhY2hlX2NvbmZpZyog YWRkID0gKGtjYWNoZV9jb25maWcgKikgQUREIDsgICAvKiBUaGlzIGlzIHdoYXQgaXMgc2V0IGlu IHRoZSBuZXcgY29udGV4dCAqLwoJa2NhY2hlX2NvbmZpZyogY29uZiA9IChrY2FjaGVfY29uZmln ICopIGNyZWF0ZV9zZXJ2ZXJfY29uZihwb29sLCBOVUxMKTsgLyogVGhpcyB3aWxsIGJlIHRoZSBt ZXJnZWQgY29uZmlndXJhdGlvbiAqLwoKICAgIC8qIE1lcmdlIGNvbmZpZ3VyYXRpb25zICovCiAg ICBjb25mLT5lbmFibGVkID0gKCBhZGQtPmVuYWJsZWRfc2V0ICkgPyBhZGQtPmVuYWJsZWQgOiBi YXNlLT5lbmFibGVkOwoKICAgIHJldHVybiBjb25mIDsKfQoKLyoKICogY3JlYXRpbmcgdGhlIHNl cnZlciBjZmcKICovCnZvaWQgKmNyZWF0ZV9zZXJ2ZXJfY29uZihhcHJfcG9vbF90ICpwb29sLCBz ZXJ2ZXJfcmVjICpzKSB7CglrY2FjaGVfY29uZmlnICpjZmcgPSBhcHJfcGNhbGxvYyhwb29sLCBz aXplb2Yoa2NhY2hlX2NvbmZpZykpOwoKCWFwX2xvZ19lcnJvcihBUExPR19NQVJLLCBBUExPR19E RUJVRywgMCwgcywia2NhY2hlOmNyZWF0ZV9zZXJ2ZXJfY29uZiBjcmVvIGxhIGNvbmZpZ3VyYXpp b25lIik7CgoJcmV0dXJuIGNmZzsKfQo7CmNvbnN0IGNoYXIgKmtjYWNoZV9zZXRfZW5hYmxlZChj bWRfcGFybXMgKmNtZCwgdm9pZCAqY2ZnLCBjb25zdCBjaGFyICphcmcpIHsKCS8qfn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fiovCglrY2FjaGVfY29uZmlnICpjb25m ID0gKGtjYWNoZV9jb25maWcgKikgYXBfZ2V0X21vZHVsZV9jb25maWcoCgkJCWNtZC0+c2VydmVy LT5tb2R1bGVfY29uZmlnLCAma2NhY2hlX21vZHVsZSk7CgkvKn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4qLwoKICAgIGNvbmYtPmVuYWJsZWRfc2V0ID0gMTsKICAg IGlmICghc3RyY2FzZWNtcChhcmcsICJvbiIpKQogICAgICAgIGNvbmYtPmVuYWJsZWQgPSAxOwog ICAgZWxzZQogICAgICAgIGNvbmYtPmVuYWJsZWQgPSAwOwoKCXJldHVybiBOVUxMOwp9CgovKgog KiBpbml0IGNoaWxkCiAqLwpzdGF0aWMgdm9pZCBrY2FjaGVfY2hpbGRfaW5pdChhcHJfcG9vbF90 ICpwLCBzZXJ2ZXJfcmVjICpzKSB7CgoJYXBfbG9nX2Vycm9yKEFQTE9HX01BUkssIEFQTE9HX0RF QlVHLCAwLCBzLCJrY2FjaGU6a2NhY2hlX2NoaWxkX2luaXQgaW1wb3N0byBsJ2luZGlyaXp6byBk ZWxsYSBzaGFyZWQgbWVtb3J5Iik7CgogICAgZm9yICg7IHM7IHMgPSBzLT5uZXh0KSB7CiAgICAg ICAga2NhY2hlX2NvbmZpZyAqc2NmZyA9CiAgICAgICAgICAgICAgICBhcF9nZXRfbW9kdWxlX2Nv bmZpZyhzLT5tb2R1bGVfY29uZmlnLCAma2NhY2hlX21vZHVsZSk7CgogICAgICAgIHNjZmctPnMg PSBhcHJfc2htX2Jhc2VhZGRyX2dldChzY2ZnLT5jb3VudGVyc19zaG0pOwogICAgfQp9Ci8qCiAq IGNyZWF0ZSB0aGUgc2htCiAqLwpzdGF0aWMgaW50IGtjYWNoZV9wb3N0X2NvbmZpZyhhcHJfcG9v bF90ICpwY29uZiwgYXByX3Bvb2xfdCAqcGxvZywKCQlhcHJfcG9vbF90ICpwdGVtcCwgc2VydmVy X3JlYyAqcykgewoJYXBfbG9nX2Vycm9yKEFQTE9HX01BUkssIEFQTE9HX0RFQlVHLCAwLCBzLCJr Y2FjaGU6a2NhY2hlX3Bvc3RfY29uZmlnIGNyZW8gbGEgc2hhcmVkIG1lbW9yeSIpOwoKICAgIGtj YWNoZV9jb25maWcgKm1haW5fc2NmZyA9IGFwX2dldF9tb2R1bGVfY29uZmlnKHMtPm1vZHVsZV9j b25maWcsICZrY2FjaGVfbW9kdWxlKTsKICAgIGZvciAoOyBzOyBzID0gcy0+bmV4dCkgewogICAg ICAgIGtjYWNoZV9jb25maWcgKnNjZmcgPQogICAgICAgICAgICAgICAgYXBfZ2V0X21vZHVsZV9j b25maWcocy0+bW9kdWxlX2NvbmZpZywgJmtjYWNoZV9tb2R1bGUpOwoKICAgICAgICBpZiAoc2Nm Zy0+ZW5hYmxlZCkgewogICAgICAgICAgICBpZiAobWFpbl9zY2ZnLT5zID09IE5VTEwpIHsKICAg ICAgICAgICAgICAgIGFwX2xvZ19lcnJvcihBUExPR19NQVJLLCBBUExPR19ERUJVRywgMCwgcywK ICAgICAgICAgICAgICAgICAgICAgICAgImtjYWNoZTprY2FjaGVfcG9zdF9jb25maWcgY3JlbyBs YSBzaGFyZWQgbWVtb3J5Iik7CiAgICAgICAgICAgICAgICBhcHJfc2htX2NyZWF0ZSgmbWFpbl9z Y2ZnLT5jb3VudGVyc19zaG0sIHNpemVvZigqbWFpbl9zY2ZnLT5zKSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE5VTEwsIHBjb25mKTsKICAgICAgICAgICAgICAgIG1haW5fc2NmZy0+ cyA9IGFwcl9zaG1fYmFzZWFkZHJfZ2V0KG1haW5fc2NmZy0+Y291bnRlcnNfc2htKTsKICAgICAg ICAgICAgICAgIG1haW5fc2NmZy0+cy0+Y291bnRlciA9IDA7CiAgICAgICAgICAgICAgICBpZiAo c2NmZyA9PSBtYWluX3NjZmcpIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgc2NmZy0+Y291bnRlcnNfc2ht ID0gbWFpbl9zY2ZnLT5jb3VudGVyc19zaG07CiAgICAgICAgICAgIHNjZmctPnMgPSBtYWluX3Nj ZmctPnM7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBPSzsKfQoKc3RhdGljIGludCBrY2Fj aGVfaGFuZGxlcl90cmFuc2xhdGVfZmlsZXMocmVxdWVzdF9yZWMqIHIpIHsKCgkvKn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ki8KCWtjYWNoZV9jb25maWcgKmNvbmZp ZyA9IChrY2FjaGVfY29uZmlnICopIGFwX2dldF9tb2R1bGVfY29uZmlnKAoJCQlyLT5zZXJ2ZXIt Pm1vZHVsZV9jb25maWcsICZrY2FjaGVfbW9kdWxlKTsKCS8qfn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn4qLwoKCWlmICghY29uZmlnLT5zKSB7CgkJYXBfbG9nX3JlcnJv cihBUExPR19NQVJLLCBBUExPR19DUklULCAwLCByLAoJCQkJImtjYWNoZV9yZXR1cm5fcmVzdWx0 IGludmFsaWQgIGNvbmZpZy0+cyIpOwoJCXJldHVybiBERUNMSU5FRDsKCX0KCgljb25maWctPnMt PmNvdW50ZXIrKzsKCWFwX2xvZ19yZXJyb3IoQVBMT0dfTUFSSywgQVBMT0dfREVCVUcsIDAsIHIs CgkJCQkiY29uZmlnLT5zLT5jb3VudGVyPSUiQVBSX1NJWkVfVF9GTVQsY29uZmlnLT5zLT5jb3Vu dGVyKTsKCglyZXR1cm4gREVDTElORUQ7Cgp9CgpzdGF0aWMgdm9pZCByZWdpc3Rlcl9ob29rcyhh cHJfcG9vbF90KiBwb29sKSB7CgoJc3RhdGljIGNvbnN0IGNoYXIgKnN1Y2NbXSA9IHsgIm1vZF9w cm94eS5jIiwgIm1vZF9hbGlhcy5jIiwKCQkJIm1vZF91c2VyZGlyLmMiLCBOVUxMIH07CglhcF9o b29rX2NoaWxkX2luaXQoa2NhY2hlX2NoaWxkX2luaXQsIE5VTEwsIE5VTEwsIEFQUl9IT09LX1JF QUxMWV9GSVJTVCk7CglhcF9ob29rX3Bvc3RfY29uZmlnKGtjYWNoZV9wb3N0X2NvbmZpZywgTlVM TCwgTlVMTCwgQVBSX0hPT0tfUkVBTExZX0ZJUlNUKTsKCWFwX2hvb2tfdHJhbnNsYXRlX25hbWUo a2NhY2hlX2hhbmRsZXJfdHJhbnNsYXRlX2ZpbGVzLCBOVUxMLCBzdWNjLAoJCQlBUFJfSE9PS19S RUFMTFlfRklSU1QpOwp9Cg== --90e6ba6e82861b78cb05096afbac--