RE: Updated daemon.cpp, daemon.h, and searchd.conf.5.ep.in files
"John Hansen" <[email protected]> Wed, 14 Apr 2004 23:00:02 +1000
| Newsgroups | gmane.comp.web.aspseek.devel |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. ------_=_NextPart_001_01C42220.665EC040 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Attached, patch in unified diff format. This patch includes changes to searchd.conf ... John -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of John Hansen Sent: Tuesday, April 13, 2004 1:35 AM To: [email protected] Subject: [aseek-devel] Updated daemon.cpp, daemon.h, and searchd.conf.5.ep.in files Attached, a patch for ASPseek CVS HEAD that implements a new searchd.conf parameter 'MaxIdleTime' to allow started threads to die off after the configured amount of seconds. It has a bug however, that I've been unable to fix, mainly due to my lack of understanding of the thread logic that was originally implemented which will be aparent when you read the patch. :) Under certain circumstances, specifically, after a few bursts of threads starting, and subsequently dying off, repeating this a few times, searchd will segfault. If someone can come up with a better solution for letting threads die off, it would be much appreciated. Regards, John Hansen ------_=_NextPart_001_01C42220.665EC040 Content-Type: application/octet-stream; name="unified.diff" Content-Transfer-Encoding: base64 Content-Description: unified.diff Content-Disposition: attachment; filename="unified.diff" ZGlmZiAtcnVOIC0tZXhjbHVkZT1DVlMgYXNwc2Vlay5vbGQvZXRjL3NlYXJjaGQuY29uZi1kaXN0 LmluIGFzcHNlZWsvZXRjL3NlYXJjaGQuY29uZi1kaXN0LmluCi0tLSBhc3BzZWVrLm9sZC9ldGMv c2VhcmNoZC5jb25mLWRpc3QuaW4JV2VkIEp1bCAyNCAyMjozMzo0NyAyMDAyCisrKyBhc3BzZWVr L2V0Yy9zZWFyY2hkLmNvbmYtZGlzdC5pbglXZWQgQXByIDE0IDIyOjQ4OjQxIDIwMDQKQEAgLTEw NSw2ICsxMDUsMTEgQEAKICMgRGVmYXVsdCB2YWx1ZSBpcyAxMAogI01heFRocmVhZHMgMjAKIAor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworIyBNYXhJZGxlVGltZSA8Tj4KKyMgTWF4aW11bSBudW1iZXIg b2Ygc2Vjb25kcyB0aHJlYWRzIHdpbGwgaWRsZSBiZWZvcmUgZHlpbmcgb2ZmLgorIyBEZWZhdWx0 IHZhbHVlIGlzIDYwCisjTWF4SWRsZVRpbWUgNjAwCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMg SW5jbHVkZSA8ZmlsZW5hbWU+CmRpZmYgLXJ1TiAtLWV4Y2x1ZGU9Q1ZTIGFzcHNlZWsub2xkL2lu Y2x1ZGUvZGFlbW9uLmggYXNwc2Vlay9pbmNsdWRlL2RhZW1vbi5oCi0tLSBhc3BzZWVrLm9sZC9p bmNsdWRlL2RhZW1vbi5oCVR1ZSBNYXkgMTQgMjE6NDc6MTUgMjAwMgorKysgYXNwc2Vlay9pbmNs dWRlL2RhZW1vbi5oCVdlZCBBcHIgMTQgMjI6NDY6NDkgMjAwNApAQCAtNzAsOSArNTUsMTAgQEAK IAlDRXZlbnQgbV9yZXE7CQkJLy8vPCBDRXZlbnQgb2JqZWN0LCBwb3N0ZWQgb24gcmVxdWVzdAog CXB0aHJlYWRfdCBtX3RocmVhZDsJCS8vLzwgVGhyZWFkIElECiAJaW50IG1fc29ja2V0OwkJCS8v LzwgU29ja2V0IHJldHVybmVkIGJ5IGFjY2VwdAorCWludCBtX3JlbW92ZWQ7CQkJLy8vPCBvYmpl Y3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBsaW5rZWQgbGlzdAogCUNTUUxEYXRhYmFzZSog bV9kYXRhYmFzZTsJLy8vPCBEYXRhYmFzZSBhc3NvY2lhdGVkIHdpdGggdGhyZWFkCiAJQ1dvcmtl clRocmVhZCogbV9uZXh0OwkJLy8vPCBOZXh0IENXb3JrZXJUaHJlYWQgaW4gdGhlIGxpbmtlZCBs aXN0IG9mIHRocmVhZHMKLQlDV29ya2VyVGhyZWFkKiogbV9wcmV2OwkJLy8vPCBQb2ludGVyIHRv IHRoZSBsb2NhdGlvbiBvZiBwb2ludGVyIHRvIHRoaXMgQ1dvcmtlclRocmVhZCBpbiB0aGUgcHJl aXZpb3VzIG9iamVjdCBsaW5rZWQgbGlzdCBvZiB0aHJlYWRzCisJQ1dvcmtlclRocmVhZCogbV9w cmV2OwkJLy8vPCBQcmV2aW91cyBDV29ya2VyVGhyZWFkIGluIHRoZSBsaW5rZWQgbGlzdCBvZiB0 aHJlYWRzCiAJQ1dvcmtlclRocmVhZExpc3QqIG1fcGFyZW50OwkvLy88IFBvaW50ZXIgdG8gdGhl IGxpbmtlZCBsaXN0IG9iamVjdCBob2xkaW5nIHdvcmtlciB0aHJlYWRzCiAKIHB1YmxpYzoKQEAg LTgxLDI1ICs2NywyMyBAQAogCQltX25leHQgPSBOVUxMOwogCQltX3ByZXYgPSBOVUxMOwogCQlt X3BhcmVudCA9IE5VTEw7CisJCW1fZGF0YWJhc2UgPSBOVUxMOwogCQltX3RocmVhZCA9IDA7CiAJ CW1fc29ja2V0ID0gMDsKKwkJbV9yZW1vdmVkID0gMDsKIAl9Ci0JLy8vIFRoaXMgbWV0aG9kIHJl bW92ZXMgY3VycmVudCBvYmplY3QgZnJvbSBsaW5rZWQgbGlzdAotCUNXb3JrZXJUaHJlYWQqIFJl bW92ZSgpCi0JewotCQlpZiAobV9wcmV2KQotCQl7Ci0JCQkqbV9wcmV2ID0gbV9uZXh0OwotCQl9 Ci0JCXJldHVybiB0aGlzOwotCX0KLQkvLy8gVGhpcyBtZXRob2QgaW5zZXJ0cyBjdXJyZW50IG9i amVjdCBhZnRlciBzcGVjaWZpZWQgaW4gdGhlIGxpbmtlZCBsaXN0Ci0Jdm9pZCBJbnNlcnQoQ1dv cmtlclRocmVhZCoqIHByZXYpCisJfkNXb3JrZXJUaHJlYWQoKQogCXsKLQkJbV9uZXh0ID0gKnBy ZXY7Ci0JCW1fcHJldiA9IHByZXY7Ci0JCSptX3ByZXYgPSB0aGlzOworCQltX3ByZXYgPSBOVUxM OworCQltX25leHQgPSBOVUxMOworCQltX3BhcmVudCA9IE5VTEw7CisJCW1fZGF0YWJhc2UgPSBO VUxMOworCQltX3RocmVhZCA9IDA7CisJCW1fc29ja2V0ID0gMDsKKwkJbV9yZW1vdmVkID0gMTsK IAl9CisJQ1dvcmtlclRocmVhZCogUmVtb3ZlKCk7CisJdm9pZCBJbnNlcnQoQ1dvcmtlclRocmVh ZCogcHJldik7CiB9OwogCiAjZGVmaW5lIE1BWF9XQUlUSU5HX1NPQ0tFVFMgMTAyNApAQCAtMTUz LDYgKzEzNyw0MCBAQAogCS8vLyBQcm9jZXNzIGluY29taW5nIHJlcXVlc3QsIHNvdXJjZSBvZiBy ZXF1ZXN0IGlzIHNvY2tldCAiY3NvY2siCiAJdm9pZCBwcm9jZXNzUmVxKENTUUxEYXRhYmFzZSog ZGF0YWJhc2UsIGludCBjc29jayk7CiB9OworCisJLy8vIFRoaXMgbWV0aG9kIGluc2VydHMgY3Vy cmVudCBvYmplY3QgYWZ0ZXIgc3BlY2lmaWVkIGluIHRoZSBsaW5rZWQgbGlzdAorCWlubGluZSB2 b2lkIENXb3JrZXJUaHJlYWQ6Okluc2VydChDV29ya2VyVGhyZWFkKiBwcmV2KQorCXsKKwkJbV9u ZXh0ID0gcHJldi0+bV9uZXh0OworCQlpZihwcmV2LT5tX25leHQpCisJCQlwcmV2LT5tX25leHQt Pm1fcHJldiA9IHRoaXM7CisJCXByZXYtPm1fbmV4dCA9IHRoaXM7CisJCW1fcHJldiA9IHByZXY7 CisJCW1fcmVtb3ZlZCA9IDA7CisJfQorCS8vLyBUaGlzIG1ldGhvZCByZW1vdmVzIGN1cnJlbnQg b2JqZWN0IGZyb20gbGlua2VkIGxpc3QKKwlpbmxpbmUgQ1dvcmtlclRocmVhZCogQ1dvcmtlclRo cmVhZDo6UmVtb3ZlKCkKKwl7CisJCQorCQlpZihtX25leHQpCisJCXsKKwkJCWlmKG1fcGFyZW50 LT5tX2ZpcnN0ID09IHRoaXMpCisJCQkJbV9wYXJlbnQtPm1fZmlyc3QgPSBtX25leHQ7CisJCQlt X25leHQtPm1fcHJldiA9IG1fcHJldjsKKwkJfQorCQlpZihtX3ByZXYpCisJCXsKKwkJCWlmKG1f cGFyZW50LT5tX2ZpcnN0ID09IHRoaXMpCisJCQkJbV9wYXJlbnQtPm1fZmlyc3QgPSBtX3ByZXY7 CisJCQltX3ByZXYtPm1fbmV4dCA9IG1fbmV4dDsKKwkJfQorCQllbHNlIGlmKCFtX25leHQpCisJ CQltX3BhcmVudC0+bV9maXJzdCA9IE5VTEw7CisJCW1fcHJldiA9IE5VTEw7CisJCW1fbmV4dCA9 IE5VTEw7CisJCW1fcmVtb3ZlZCA9IDE7CisJCXJldHVybiB0aGlzOworCX0KIAogLyoqIEF1eGls aWFyeSBjbGFzcyBmb3Igc2ltcGxlIG11dGV4IGxvY2tpbmcuCiAgKiBMb2NrcyBtdXRleCwgc3Bl Y2lmaWVkIGJ5IHBhcmFtZXRlciBvZiBjb25zdHJ1Y3RvciwgYW5kIHVubG9ja3MgaXQKZGlmZiAt cnVOIC0tZXhjbHVkZT1DVlMgYXNwc2Vlay5vbGQvbWFuL3NlYXJjaGQuY29uZi41LmVwLmluIGFz cHNlZWsvbWFuL3NlYXJjaGQuY29uZi41LmVwLmluCi0tLSBhc3BzZWVrLm9sZC9tYW4vc2VhcmNo ZC5jb25mLjUuZXAuaW4JTW9uIEphbiAxMyAyMToxNToxNiAyMDAzCisrKyBhc3BzZWVrL21hbi9z ZWFyY2hkLmNvbmYuNS5lcC5pbglXZWQgQXByIDE0IDIyOjQ2OjU4IDIwMDQKQEAgLTEzLDcgKzEz LDcgQEAKIFxmQkRCQWRkclxmUiBcZkJEQlR5cGVcZlI6Wy8vW1xmQlVzZXJcZlJbOlxmQlBhc3Nc ZlJdQF1cZkJIb3N0XGZSWzpcZkJQb3J0XGZSXV0vXGZCREJOYW1lXGZSLwogRGVmaW5lcyBTUUwg c2VydmVyIGNvbm5lY3Rpb24gcGFyYW1ldGVycy4KIC5icgotXGZCREJUeXBlXGZSIGlzIFNRTCBz ZXJ2ZXIgdHlwZSwgaXQgY2FuIGJlIFxmSW15c3FsXGZSIG9yIFxmSW9yYWNsZThcZlIKK1xmQkRC VHlwZVxmUiBpcyBTUUwgc2VydmVyIHR5cGUsIGl0IGNhbiBiZSBcZklteXNxbFxmUiBvciBcZklQ b3N0Z3JlU1FMXGZSCiBmb3Igbm93LgogLmJyCiBcZkJVc2VyXGZSIGlzIGEgU1FMIHNlcnZlcidz IHVzZXIgdG8gY29ubmVjdCBhcy4KQEAgLTY4LDYgKzY4LDEwIEBACiB0byBwcm9jZXNzIHF1ZXJp ZXMuIFNldHRpbmcgaGlnaCB2YWx1ZSBjYW4gcmVzdWx0IGluIGJpZyBtZW1vcnkgY29uc3VtcHRp b24uCiBTZXR0aW5nIGxvdyB2YWx1ZSBjYW4gcmVzdWx0IGluIGJpZyByZXNwb25zZSB0aW1lIGZv ciBxdWVyaWVzIGluIGhpZ2ggbG9hZAogY29uZGl0aW9ucyAoYXMgImV4dHJhIiBxdWVyaWVzIGFy ZSBxdWV1ZWQpLiBEZWZhdWx0IHZhbHVlIGlzIFxmSTEwXGZSLgorLlRQCitcZkJNYXhJZGxlVGlt ZVxmUiBcZkludW1cZlIKK1NldHMgdGhlIHRpbWUgaW4gc2Vjb25kcyB0aGF0IGVhY2ggdGhyZWFk IHdpbGwgaWRsZSBiZWZvcmUgZHlpbmcgb2ZmLgorRGVmYXVsdCB2YWx1ZSBpcyBcZkk2MFxmUiBz ZWNvbmRzLgogLlRQCiBcZkJNdWx0aXBsZURCQ29ubmVjdGlvbnNcZlIgXGZJeWVzXGZSIHwgXGZJ bm9cZlIKIFNldHMgd2hldGhlciB0byB1c2Ugc2VwYXJhdGUgY29ubmVjdGlvbiB0byB0aGUgZGF0 YWJhc2UgZm9yIGVhY2ggdGhyZWFkLgpkaWZmIC1ydU4gLS1leGNsdWRlPUNWUyBhc3BzZWVrLm9s ZC9zcmMvZGFlbW9uLmNwcCBhc3BzZWVrL3NyYy9kYWVtb24uY3BwCi0tLSBhc3BzZWVrLm9sZC9z cmMvZGFlbW9uLmNwcAlUdWUgTWFyIDIzIDA0OjM2OjIwIDIwMDQKKysrIGFzcHNlZWsvc3JjL2Rh ZW1vbi5jcHAJV2VkIEFwciAxNCAyMjo0Njo0MSAyMDA0CkBAIC0zMSw2ICszMSw3IEBACiAjaW5j bHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8ZGxmY24uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4K KyNpbmNsdWRlIDx0aW1lLmg+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4K ICNpbmNsdWRlICJzcWxkYi5oIgpAQCAtNzYsNiArNzcsNyBAQAogI2luY2x1ZGUgImNhY2hlLmgi CiAKIGludCBNYXhUaHJlYWRzID0gMTA7CitpbnQgbWF4X2lkbGVfdGltZSA9IDYwOwogc3RyaW5n IENvbmZEaXIgPSBDT05GX0RJUjsKIHN0cmluZyBEYXRhRGlyID0gREFUQV9ESVI7CiAKQEAgLTQ0 NSw2ICs0NDcsMTAgQEAKIAkJCXsKIAkJCQlNYXhUaHJlYWRzID0gYXRvaShUcmltKHN0ciArIDEw LCAiPSBcdFxyXG4iKSk7CiAJCQl9CisJCQllbHNlIGlmICghU1RSTkNBU0VDTVAoc3RyLCAiTWF4 SWRsZVRpbWUiKSkKKwkJCXsKKwkJCQkJbWF4X2lkbGVfdGltZSA9IGF0b2koVHJpbShzdHIgKyAx MSwgIj0gXHRcclxuIikpOworCQkJfQogCQkJZWxzZSBpZiAoIVNUUk5DQVNFQ01QKHN0ciwgIkRl YnVnTGV2ZWwiKSkKIAkJCXsKIAkJCQlsb2dnZXIuc2V0bG9nbGV2ZWwoVHJpbShzdHIgKyAxMCwg Ij0gXHRcclxuIikpOwpAQCAtMTA2OCwzMyArMTA3NCw1OSBAQAogdm9pZCogcHJvY2Vzc1JlcXMo dm9pZCogcCkKIHsKIAlDV29ya2VyVGhyZWFkKiB0aHJlYWQgPSAoQ1dvcmtlclRocmVhZCopcDsK Kwl0aW1lX3QgbGFzdF9xdWVyeSA9IHRpbWUoTlVMTCk7CisJaW50IHRpbWVvdXQgPSAwOworCXRo cmVhZC0+bV9wYXJlbnQtPm1fdGhyZWFkcysrOwogCXdoaWxlIChkb2l0X2ZvcmV2ZXIpCiAJewog CQkvLyBXYWl0IGZvciBldmVudCwgcG9zdGVkIGluIENXb3JrZXJUaHJlYWRMaXN0Ojpwcm9jZXNz UmVxCi0JCXRocmVhZC0+bV9yZXEuV2FpdCgpOwotCQkvLyBDcmVhdGUgc2VhcmNoIGNvbnRleHQK LQkJQ1NlYXJjaENvbnRleHQgY3R4KHRocmVhZC0+bV9kYXRhYmFzZSwgdGhyZWFkLT5tX3NvY2tl dCk7Ci0JCXdoaWxlIChkb2l0X2ZvcmV2ZXIpCi0JCXsKLQkJCS8vIFByb2Nlc3Mgb25lIHF1ZXJ5 Ci0JCQlwcm9jZXNzUmVxMSgmY3R4KTsKLQkJCWN0eC5tX3NvY2tldC5DbG9zZSgpOwotCQkJewot CQkJCUNMb2NrZXIgbG9jaygmdGhyZWFkLT5tX3BhcmVudC0+bV9tdXRleCk7Ci0JCQkJaWYgKHRo cmVhZC0+bV9wYXJlbnQtPklzV2FpdGluZygpKQotCQkJCXsKLQkJCQkJLy8gUHJvY2VzcyBvdGhl ciBxdWVyaWVzIGluIHRoZSBsb29wIGJ1ZmZlcgotCQkJCQljdHgubV9zb2NrZXQgPSB0aHJlYWQt Pm1fcGFyZW50LT5Qb3BGaXJzdFdhaXRpbmcoKTsKLQkJCQl9Ci0JCQkJZWxzZQorCQl0aW1lb3V0 ID0gdGhyZWFkLT5tX3JlcS5XYWl0KDEwMDApOworCQlpZighdGltZW91dCkKKwkJeworCQkJdGlt ZSgmbGFzdF9xdWVyeSk7CisJCQkvLyBDcmVhdGUgc2VhcmNoIGNvbnRleHQKKwkJCUNTZWFyY2hD b250ZXh0IGN0eCh0aHJlYWQtPm1fZGF0YWJhc2UsIHRocmVhZC0+bV9zb2NrZXQpOworCQkJd2hp bGUgKGRvaXRfZm9yZXZlcikKKwkJCXsKKwkJCQkvLyBQcm9jZXNzIG9uZSBxdWVyeQorCQkJCXBy b2Nlc3NSZXExKCZjdHgpOworCQkJCWN0eC5tX3NvY2tldC5DbG9zZSgpOwogCQkJCXsKLQkJCQkJ Ly8gTWFrZSB0aHJlYWQgYXZhaWxhYmxlIGZvciBvdGhlciByZXF1ZXN0cwotCQkJCQl0aHJlYWQt Pkluc2VydCgmdGhyZWFkLT5tX3BhcmVudC0+bV9maXJzdCk7Ci0JCQkJCWJyZWFrOworCQkJCQlD TG9ja2VyIGxvY2soJnRocmVhZC0+bV9wYXJlbnQtPm1fbXV0ZXgpOworCQkJCQlpZiAodGhyZWFk LT5tX3BhcmVudC0+SXNXYWl0aW5nKCkpCisJCQkJCXsKKwkJCQkJCS8vIFByb2Nlc3Mgb3RoZXIg cXVlcmllcyBpbiB0aGUgbG9vcCBidWZmZXIKKwkJCQkJCWN0eC5tX3NvY2tldCA9IHRocmVhZC0+ bV9wYXJlbnQtPlBvcEZpcnN0V2FpdGluZygpOworCQkJCQl9CisJCQkJCWVsc2UKKwkJCQkJewor CQkJCQkJLy8gTWFrZSB0aHJlYWQgYXZhaWxhYmxlIGZvciBvdGhlciByZXF1ZXN0cworCQkJCQkJ aWYoIXRocmVhZC0+bV9wYXJlbnQtPm1fZmlyc3QpCisJCQkJCQkJdGhyZWFkLT5tX3BhcmVudC0+ bV9maXJzdCA9IHRocmVhZDsKKwkJCQkJCQkvL3RocmVhZC0+SW5zZXJ0KHRocmVhZCk7CisJCQkJ CQllbHNlCisJCQkJCQkJdGhyZWFkLT5JbnNlcnQodGhyZWFkLT5tX3BhcmVudC0+bV9maXJzdCk7 CisJCQkJCQlicmVhazsKKwkJCQkJfQogCQkJCX0KIAkJCX0KIAkJfQorCQllbHNlCisJCXsKKwkJ CWlmKCh0aW1lKE5VTEwpIC0gbGFzdF9xdWVyeSkgPiBtYXhfaWRsZV90aW1lKQorCQkJCWJyZWFr OworCQl9CiAJfQorCS8vIGNyZWF0ZSBzY29wZSBmb3IgQ0xvY2tlcgorCXsKKwkJQ0xvY2tlciBs b2NrKCZ0aHJlYWQtPm1fcGFyZW50LT5tX211dGV4KTsKKwkJaWYoIXRocmVhZC0+bV9yZW1vdmVk KQorCQkJdGhyZWFkLT5SZW1vdmUoKTsKKwl9CisJLy8gdW5sb2NrZWQgYW5kIHJlbW92ZWQuLi4K KwlpZihNdWx0aURCQ29ubmVjdGlvbnMpCisJCXRocmVhZC0+bV9kYXRhYmFzZS0+Q2xvc2VEYigp OworCXRocmVhZC0+bV9wYXJlbnQtPm1fdGhyZWFkcy0tOwogCWRlbGV0ZSB0aHJlYWQ7CiAJcmV0 dXJuIE5VTEw7IC8vIHRvIG1ha2UgZysrIGhhcHB5CiB9CkBAIC0xMTMwLDcgKzExNjIsNiBAQAog CQkJaWYgKHRocmVhZF9zdGFja19zaXplKQogCQkJCXB0aHJlYWRfYXR0cl9zZXRzdGFja3NpemUo JmF0dHIsIHRocmVhZF9zdGFja19zaXplKTsKIAkJCXB0aHJlYWRfY3JlYXRlKCZ0aHJlYWQtPm1f dGhyZWFkLCAmYXR0ciwgcHJvY2Vzc1JlcXMsIHRocmVhZCk7Ci0JCQltX3RocmVhZHMrKzsKIAkJ fQogCQllbHNlCiAJCXsKQEAgLTExNDEsNyArMTE3Miw2IEBACiAJfQogCWVsc2UKIAl7Ci0JCS8v IFJlbW92ZSBmaXJzdCB3b3JrZXIgdGhyZWFkIGZyb20gdGhlIGxpbmtlZCBsaXN0CiAJCXRocmVh ZCA9IG1fZmlyc3QtPlJlbW92ZSgpOwogCX0KIAl0aHJlYWQtPm1fc29ja2V0ID0gY3NvY2s7CkBA IC0xMTc1LDExICsxMjA1LDI2IEBACiAJCWxvZ2dlci5sb2coQ0FUX05FVCwgTF9FUlIsICJFcnJv ciAlZCBpbiBzb2NrZXQoKTogJXNcbiIsIGVycm5vLCBzdHJlcnJvcihlcnJubykpOwogCQlyZXR1 cm4gNDsKIAl9Ci0JaW50IHJjID0gYmluZChzb2NrLCAoc3RydWN0IHNvY2thZGRyKikmYWRkciwg c2l6ZW9mKGFkZHIpKTsKLQlpZiAocmMgPCAwKQorCWludCB4ID0gMTsKKwlzZXRzb2Nrb3B0KHNv Y2ssIFNPTF9TT0NLRVQsIFNPX1JFVVNFQUREUiwgKGNoYXIgKikgJngsIHNpemVvZih4KSk7CisJ aW50IHJldHJ5Y291bnQgPSAwOworCWludCByYzsKKwl3aGlsZShyZXRyeWNvdW50IDwgNSkKIAl7 Ci0JCWxvZ2dlci5sb2coQ0FUX05FVCwgTF9FUlIsICJFcnJvciAlZCBpbiBiaW5kKCk6ICVzXG4i LCBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsKLQkJcmV0dXJuIDU7CisJCXJjID0gYmluZChzb2Nr LCAoc3RydWN0IHNvY2thZGRyKikmYWRkciwgc2l6ZW9mKGFkZHIpKTsKKwkJaWYgKHJjIDwgMCAm JiByZXRyeWNvdW50ID49IDUpCisJCXsKKwkJCWxvZ2dlci5sb2coQ0FUX05FVCwgTF9FUlIsICJF cnJvciAlZCBpbiBiaW5kKCk6ICVzXG4iLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsKKwkJCXJl dHVybiA1OworCQl9CisJCWVsc2UKKwkJeworCQkJcmV0cnljb3VudCsrOworCQkJdGltZXNwZWMg dHM7CisJCQl0cy50dl9zZWMgPSAxOworCQkJdHMudHZfbnNlYyA9IDA7CisJCQluYW5vc2xlZXAo JnRzLE5VTEwpOworCQl9CiAJfQogCXJjID0gbGlzdGVuKHNvY2ssIDEwKTsKIAlpZiAocmMgPCAw KQo= ------_=_NextPart_001_01C42220.665EC040--