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--