Updated daemon.cpp, daemon.h, and searchd.conf.5.ep.in files

"John Hansen" <[email protected]> Tue, 13 Apr 2004 01:35:01 +1000
Newsgroups gmane.comp.web.aspseek.devel
Message-ID <[email protected]>
This is a multi-part message in MIME format.

------_=_NextPart_001_01C420A3.B839F782
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

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_01C420A3.B839F782
Content-Type: application/octet-stream;
	name="searchd.conf.5.ep.in.patch"
Content-Transfer-Encoding: base64
Content-Description: searchd.conf.5.ep.in.patch
Content-Disposition: attachment;
	filename="searchd.conf.5.ep.in.patch"

LS0tIHNlYXJjaGQuY29uZi41LmVwLmluLm9sZAlUdWUgQXByIDEzIDAxOjIzOjM1IDIwMDQKKysr
IHNlYXJjaGQuY29uZi41LmVwLmluCVR1ZSBBcHIgMTMgMDE6MjI6MTggMjAwNApAQCAtMTMsNyAr
MTMsNyBAQAogXGZCREJBZGRyXGZSIFxmQkRCVHlwZVxmUjpbLy9bXGZCVXNlclxmUls6XGZCUGFz
c1xmUl1AXVxmQkhvc3RcZlJbOlxmQlBvcnRcZlJdXS9cZkJEQk5hbWVcZlIvCiBEZWZpbmVzIFNR
TCBzZXJ2ZXIgY29ubmVjdGlvbiBwYXJhbWV0ZXJzLgogLmJyCi1cZkJEQlR5cGVcZlIgaXMgU1FM
IHNlcnZlciB0eXBlLCBpdCBjYW4gYmUgXGZJbXlzcWxcZlIgb3IgXGZJb3JhY2xlOFxmUgorXGZC
REJUeXBlXGZSIGlzIFNRTCBzZXJ2ZXIgdHlwZSwgaXQgY2FuIGJlIFxmSW15c3FsXGZSIG9yIFxm
SVBvc3RncmVTUUxcZlIKIGZvciBub3cuCiAuYnIKIFxmQlVzZXJcZlIgaXMgYSBTUUwgc2VydmVy
J3MgdXNlciB0byBjb25uZWN0IGFzLgpAQCAtNjgsNiArNjgsMTAgQEAKIHRvIHByb2Nlc3MgcXVl
cmllcy4gU2V0dGluZyBoaWdoIHZhbHVlIGNhbiByZXN1bHQgaW4gYmlnIG1lbW9yeSBjb25zdW1w
dGlvbi4KIFNldHRpbmcgbG93IHZhbHVlIGNhbiByZXN1bHQgaW4gYmlnIHJlc3BvbnNlIHRpbWUg
Zm9yIHF1ZXJpZXMgaW4gaGlnaCBsb2FkCiBjb25kaXRpb25zIChhcyAiZXh0cmEiIHF1ZXJpZXMg
YXJlIHF1ZXVlZCkuIERlZmF1bHQgdmFsdWUgaXMgXGZJMTBcZlIuCisuVFAKK1xmQk1heElkbGVU
aW1lXGZSIFxmSW51bVxmUgorU2V0cyB0aGUgdGltZSBpbiBzZWNvbmRzIHRoYXQgZWFjaCB0aHJl
YWQgd2lsbCBpZGxlIGJlZm9yZSBkeWluZyBvZmYuCitEZWZhdWx0IHZhbHVlIGlzIFxmSTYwXGZS
IHNlY29uZHMuCiAuVFAKIFxmQk11bHRpcGxlREJDb25uZWN0aW9uc1xmUiBcZkl5ZXNcZlIgfCBc
Zklub1xmUgogU2V0cyB3aGV0aGVyIHRvIHVzZSBzZXBhcmF0ZSBjb25uZWN0aW9uIHRvIHRoZSBk
YXRhYmFzZSBmb3IgZWFjaCB0aHJlYWQuCg==

------_=_NextPart_001_01C420A3.B839F782
Content-Type: application/octet-stream;
	name="daemon.cpp.patch"
Content-Transfer-Encoding: base64
Content-Description: daemon.cpp.patch
Content-Disposition: attachment;
	filename="daemon.cpp.patch"

LS0tIGRhZW1vbi5jcHAJVGh1IE9jdCAzMSAxMToxMzoxMiAyMDAyCisrKyBkYWVtb24uY3BwCVRo
dSBNYXIgMTEgMjE6Mzg6NTggMjAwNApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPHVuaXN0
ZC5oPgogI2luY2x1ZGUgPGRsZmNuLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8
dGltZS5oPgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAjaW5jbHVkZSAi
c3FsZGIuaCIKQEAgLTc2LDYgKzc3LDcgQEAKICNpbmNsdWRlICJjYWNoZS5oIgogCiBpbnQgTWF4
VGhyZWFkcyA9IDEwOworaW50IG1heF9pZGxlX3RpbWUgPSA2MDsKIHN0cmluZyBDb25mRGlyID0g
Q09ORl9ESVI7CiBzdHJpbmcgRGF0YURpciA9IERBVEFfRElSOwogCkBAIC00NDUsNiArNDY3LDEw
IEBACiAJCQl7CiAJCQkJTWF4VGhyZWFkcyA9IGF0b2koVHJpbShzdHIgKyAxMCwgIj0gXHRcclxu
IikpOwogCQkJfQorCQkJZWxzZSBpZiAoIVNUUk5DQVNFQ01QKHN0ciwgIk1heElkbGVUaW1lIikp
CisJCQl7CisJCQkJCW1heF9pZGxlX3RpbWUgPSBhdG9pKFRyaW0oc3RyICsgMTEsICI9IFx0XHJc
biIpKTsKKwkJCX0KIAkJCWVsc2UgaWYgKCFTVFJOQ0FTRUNNUChzdHIsICJEZWJ1Z0xldmVsIikp
CiAJCQl7CiAJCQkJbG9nZ2VyLnNldGxvZ2xldmVsKFRyaW0oc3RyICsgMTAsICI9IFx0XHJcbiIp
KTsKQEAgLTEwNjgsMzMgKzExMTYsNTkgQEAKIHZvaWQqIHByb2Nlc3NSZXFzKHZvaWQqIHApCiB7
CiAJQ1dvcmtlclRocmVhZCogdGhyZWFkID0gKENXb3JrZXJUaHJlYWQqKXA7CisJdGltZV90IGxh
c3RfcXVlcnkgPSB0aW1lKE5VTEwpOworCWludCB0aW1lb3V0ID0gMDsKKwl0aHJlYWQtPm1fcGFy
ZW50LT5tX3RocmVhZHMrKzsKIAl3aGlsZSAoZG9pdF9mb3JldmVyKQogCXsKIAkJLy8gV2FpdCBm
b3IgZXZlbnQsIHBvc3RlZCBpbiBDV29ya2VyVGhyZWFkTGlzdDo6cHJvY2Vzc1JlcQotCQl0aHJl
YWQtPm1fcmVxLldhaXQoKTsKLQkJLy8gQ3JlYXRlIHNlYXJjaCBjb250ZXh0Ci0JCUNTZWFyY2hD
b250ZXh0IGN0eCh0aHJlYWQtPm1fZGF0YWJhc2UsIHRocmVhZC0+bV9zb2NrZXQpOwotCQl3aGls
ZSAoZG9pdF9mb3JldmVyKQotCQl7Ci0JCQkvLyBQcm9jZXNzIG9uZSBxdWVyeQotCQkJcHJvY2Vz
c1JlcTEoJmN0eCk7Ci0JCQljdHgubV9zb2NrZXQuQ2xvc2UoKTsKLQkJCXsKLQkJCQlDTG9ja2Vy
IGxvY2soJnRocmVhZC0+bV9wYXJlbnQtPm1fbXV0ZXgpOwotCQkJCWlmICh0aHJlYWQtPm1fcGFy
ZW50LT5Jc1dhaXRpbmcoKSkKLQkJCQl7Ci0JCQkJCS8vIFByb2Nlc3Mgb3RoZXIgcXVlcmllcyBp
biB0aGUgbG9vcCBidWZmZXIKLQkJCQkJY3R4Lm1fc29ja2V0ID0gdGhyZWFkLT5tX3BhcmVudC0+
UG9wRmlyc3RXYWl0aW5nKCk7Ci0JCQkJfQotCQkJCWVsc2UKKwkJdGltZW91dCA9IHRocmVhZC0+
bV9yZXEuV2FpdCgxMDAwKTsKKwkJaWYoIXRpbWVvdXQpCisJCXsKKwkJCXRpbWUoJmxhc3RfcXVl
cnkpOworCQkJLy8gQ3JlYXRlIHNlYXJjaCBjb250ZXh0CisJCQlDU2VhcmNoQ29udGV4dCBjdHgo
dGhyZWFkLT5tX2RhdGFiYXNlLCB0aHJlYWQtPm1fc29ja2V0KTsKKwkJCXdoaWxlIChkb2l0X2Zv
cmV2ZXIpCisJCQl7CisJCQkJLy8gUHJvY2VzcyBvbmUgcXVlcnkKKwkJCQlwcm9jZXNzUmVxMSgm
Y3R4KTsKKwkJCQljdHgubV9zb2NrZXQuQ2xvc2UoKTsKIAkJCQl7Ci0JCQkJCS8vIE1ha2UgdGhy
ZWFkIGF2YWlsYWJsZSBmb3Igb3RoZXIgcmVxdWVzdHMKLQkJCQkJdGhyZWFkLT5JbnNlcnQoJnRo
cmVhZC0+bV9wYXJlbnQtPm1fZmlyc3QpOwotCQkJCQlicmVhazsKKwkJCQkJQ0xvY2tlciBsb2Nr
KCZ0aHJlYWQtPm1fcGFyZW50LT5tX211dGV4KTsKKwkJCQkJaWYgKHRocmVhZC0+bV9wYXJlbnQt
PklzV2FpdGluZygpKQorCQkJCQl7CisJCQkJCQkvLyBQcm9jZXNzIG90aGVyIHF1ZXJpZXMgaW4g
dGhlIGxvb3AgYnVmZmVyCisJCQkJCQljdHgubV9zb2NrZXQgPSB0aHJlYWQtPm1fcGFyZW50LT5Q
b3BGaXJzdFdhaXRpbmcoKTsKKwkJCQkJfQorCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCS8vIE1h
a2UgdGhyZWFkIGF2YWlsYWJsZSBmb3Igb3RoZXIgcmVxdWVzdHMKKwkJCQkJCWlmKCF0aHJlYWQt
Pm1fcGFyZW50LT5tX2ZpcnN0KQorCQkJCQkJCXRocmVhZC0+bV9wYXJlbnQtPm1fZmlyc3QgPSB0
aHJlYWQ7CisJCQkJCQkJLy90aHJlYWQtPkluc2VydCh0aHJlYWQpOworCQkJCQkJZWxzZQorCQkJ
CQkJCXRocmVhZC0+SW5zZXJ0KHRocmVhZC0+bV9wYXJlbnQtPm1fZmlyc3QpOworCQkJCQkJYnJl
YWs7CisJCQkJCX0KIAkJCQl9CiAJCQl9CiAJCX0KKwkJZWxzZQorCQl7CisJCQlpZigodGltZShO
VUxMKSAtIGxhc3RfcXVlcnkpID4gbWF4X2lkbGVfdGltZSkKKwkJCQlicmVhazsKKwkJfQogCX0K
KwkvLyBjcmVhdGUgc2NvcGUgZm9yIENMb2NrZXIKKwl7CisJCUNMb2NrZXIgbG9jaygmdGhyZWFk
LT5tX3BhcmVudC0+bV9tdXRleCk7CisJCWlmKCF0aHJlYWQtPm1fcmVtb3ZlZCkKKwkJCXRocmVh
ZC0+UmVtb3ZlKCk7CisJfQorCS8vIHVubG9ja2VkIGFuZCByZW1vdmVkLi4uCisJaWYoTXVsdGlE
QkNvbm5lY3Rpb25zKQorCQl0aHJlYWQtPm1fZGF0YWJhc2UtPkNsb3NlRGIoKTsKKwl0aHJlYWQt
Pm1fcGFyZW50LT5tX3RocmVhZHMtLTsKIAlkZWxldGUgdGhyZWFkOwogCXJldHVybiBOVUxMOyAv
LyB0byBtYWtlIGcrKyBoYXBweQogfQpAQCAtMTEzMCw3ICsxMjA0LDYgQEAKIAkJCWlmICh0aHJl
YWRfc3RhY2tfc2l6ZSkKIAkJCQlwdGhyZWFkX2F0dHJfc2V0c3RhY2tzaXplKCZhdHRyLCB0aHJl
YWRfc3RhY2tfc2l6ZSk7CiAJCQlwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkLT5tX3RocmVhZCwgJmF0
dHIsIHByb2Nlc3NSZXFzLCB0aHJlYWQpOwotCQkJbV90aHJlYWRzKys7CiAJCX0KIAkJZWxzZQog
CQl7CkBAIC0xMTQxLDcgKzEyMTQsNiBAQAogCX0KIAllbHNlCiAJewotCQkvLyBSZW1vdmUgZmly
c3Qgd29ya2VyIHRocmVhZCBmcm9tIHRoZSBsaW5rZWQgbGlzdAogCQl0aHJlYWQgPSBtX2ZpcnN0
LT5SZW1vdmUoKTsKIAl9CiAJdGhyZWFkLT5tX3NvY2tldCA9IGNzb2NrOwpAQCAtMTE3NSwxMSAr
MTI0NywyNiBAQAogCQlsb2dnZXIubG9nKENBVF9ORVQsIExfRVJSLCAiRXJyb3IgJWQgaW4gc29j
a2V0KCk6ICVzXG4iLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsKIAkJcmV0dXJuIDQ7CiAJfQot
CWludCByYyA9IGJpbmQoc29jaywgKHN0cnVjdCBzb2NrYWRkciopJmFkZHIsIHNpemVvZihhZGRy
KSk7Ci0JaWYgKHJjIDwgMCkKKwlpbnQgeCA9IDE7CisJc2V0c29ja29wdChzb2NrLCBTT0xfU09D
S0VULCBTT19SRVVTRUFERFIsIChjaGFyICopICZ4LCBzaXplb2YoeCkpOworCWludCByZXRyeWNv
dW50ID0gMDsKKwlpbnQgcmM7CisJd2hpbGUocmV0cnljb3VudCA8IDUpCiAJewotCQlsb2dnZXIu
bG9nKENBVF9ORVQsIExfRVJSLCAiRXJyb3IgJWQgaW4gYmluZCgpOiAlc1xuIiwgZXJybm8sIHN0
cmVycm9yKGVycm5vKSk7Ci0JCXJldHVybiA1OworCQlyYyA9IGJpbmQoc29jaywgKHN0cnVjdCBz
b2NrYWRkciopJmFkZHIsIHNpemVvZihhZGRyKSk7CisJCWlmIChyYyA8IDAgJiYgcmV0cnljb3Vu
dCA+PSA1KQorCQl7CisJCQlsb2dnZXIubG9nKENBVF9ORVQsIExfRVJSLCAiRXJyb3IgJWQgaW4g
YmluZCgpOiAlc1xuIiwgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7CisJCQlyZXR1cm4gNTsKKwkJ
fQorCQllbHNlCisJCXsKKwkJCXJldHJ5Y291bnQrKzsKKwkJCXRpbWVzcGVjIHRzOworCQkJdHMu
dHZfc2VjID0gMTsKKwkJCXRzLnR2X25zZWMgPSAwOworCQkJbmFub3NsZWVwKCZ0cyxOVUxMKTsK
KwkJfQogCX0KIAlyYyA9IGxpc3Rlbihzb2NrLCAxMCk7CiAJaWYgKHJjIDwgMCkK

------_=_NextPart_001_01C420A3.B839F782
Content-Type: application/octet-stream;
	name="daemon.h.patch"
Content-Transfer-Encoding: base64
Content-Description: daemon.h.patch
Content-Disposition: attachment;
	filename="daemon.h.patch"

LS0tIGRhZW1vbi5oCVR1ZSBNYXkgMTQgMjE6NDc6MTUgMjAwMgorKysgZGFlbW9uLmgJVGh1IE1h
ciAxMSAyMTo1MToyMSAyMDA0CkBAIC00NSwyMSArNDUsNiBAQAogI2VuZGlmCiB9OwogCi0vLy8g
VGhpcyBjbGFzcyBpcyBvYnNvbGV0ZQotLyogU28gZ2V0IHJpZCBvZiBpdCA7KQotY2xhc3MgQ015
RGF0YVNvdXJjZSA6IHB1YmxpYyBDRGF0YVNvdXJjZQotewotcHVibGljOgotCUNTUUxEYXRhYmFz
ZSogbV9kYXRhYmFzZTsKLQotcHVibGljOgotCUNNeURhdGFTb3VyY2UoQ1NRTERhdGFiYXNlKiBk
YikKLQl7Ci0JCW1fZGF0YWJhc2UgPSBkYjsKLQl9Ci0JdmlydHVhbCB2b2lkIEdldENsb25lTGlz
dChjb25zdCBjaGFyICpjcmMsIENVcmxXKiBvcmlnaW4sIENTcmNEb2NWZWN0b3IgJmRvY3MpOwot
fTsKLSovCiAKIGNsYXNzIENXb3JrZXJUaHJlYWRMaXN0OwogCkBAIC03MCw5ICs1NSwxMCBAQAog
CUNFdmVudCBtX3JlcTsJCQkvLy88IENFdmVudCBvYmplY3QsIHBvc3RlZCBvbiByZXF1ZXN0CiAJ
cHRocmVhZF90IG1fdGhyZWFkOwkJLy8vPCBUaHJlYWQgSUQKIAlpbnQgbV9zb2NrZXQ7CQkJLy8v
PCBTb2NrZXQgcmV0dXJuZWQgYnkgYWNjZXB0CisJaW50IG1fcmVtb3ZlZDsJCQkvLy88IG9iamVj
dCBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIGxpbmtlZCBsaXN0CiAJQ1NRTERhdGFiYXNlKiBt
X2RhdGFiYXNlOwkvLy88IERhdGFiYXNlIGFzc29jaWF0ZWQgd2l0aCB0aHJlYWQKIAlDV29ya2Vy
VGhyZWFkKiBtX25leHQ7CQkvLy88IE5leHQgQ1dvcmtlclRocmVhZCBpbiB0aGUgbGlua2VkIGxp
c3Qgb2YgdGhyZWFkcwotCUNXb3JrZXJUaHJlYWQqKiBtX3ByZXY7CQkvLy88IFBvaW50ZXIgdG8g
dGhlIGxvY2F0aW9uIG9mIHBvaW50ZXIgdG8gdGhpcyBDV29ya2VyVGhyZWFkIGluIHRoZSBwcmVp
dmlvdXMgb2JqZWN0IGxpbmtlZCBsaXN0IG9mIHRocmVhZHMKKwlDV29ya2VyVGhyZWFkKiBtX3By
ZXY7CQkvLy88IFByZXZpb3VzIENXb3JrZXJUaHJlYWQgaW4gdGhlIGxpbmtlZCBsaXN0IG9mIHRo
cmVhZHMKIAlDV29ya2VyVGhyZWFkTGlzdCogbV9wYXJlbnQ7CS8vLzwgUG9pbnRlciB0byB0aGUg
bGlua2VkIGxpc3Qgb2JqZWN0IGhvbGRpbmcgd29ya2VyIHRocmVhZHMKIAogcHVibGljOgpAQCAt
ODEsMjUgKzY3LDIzIEBACiAJCW1fbmV4dCA9IE5VTEw7CiAJCW1fcHJldiA9IE5VTEw7CiAJCW1f
cGFyZW50ID0gTlVMTDsKKwkJbV9kYXRhYmFzZSA9IE5VTEw7CiAJCW1fdGhyZWFkID0gMDsKIAkJ
bV9zb2NrZXQgPSAwOworCQltX3JlbW92ZWQgPSAwOwogCX0KLQkvLy8gVGhpcyBtZXRob2QgcmVt
b3ZlcyBjdXJyZW50IG9iamVjdCBmcm9tIGxpbmtlZCBsaXN0Ci0JQ1dvcmtlclRocmVhZCogUmVt
b3ZlKCkKLQl7Ci0JCWlmIChtX3ByZXYpCi0JCXsKLQkJCSptX3ByZXYgPSBtX25leHQ7Ci0JCX0K
LQkJcmV0dXJuIHRoaXM7Ci0JfQotCS8vLyBUaGlzIG1ldGhvZCBpbnNlcnRzIGN1cnJlbnQgb2Jq
ZWN0IGFmdGVyIHNwZWNpZmllZCBpbiB0aGUgbGlua2VkIGxpc3QKLQl2b2lkIEluc2VydChDV29y
a2VyVGhyZWFkKiogcHJldikKKwl+Q1dvcmtlclRocmVhZCgpCiAJewotCQltX25leHQgPSAqcHJl
djsKLQkJbV9wcmV2ID0gcHJldjsKLQkJKm1fcHJldiA9IHRoaXM7CisJCW1fcHJldiA9IE5VTEw7
CisJCW1fbmV4dCA9IE5VTEw7CisJCW1fcGFyZW50ID0gTlVMTDsKKwkJbV9kYXRhYmFzZSA9IE5V
TEw7CisJCW1fdGhyZWFkID0gMDsKKwkJbV9zb2NrZXQgPSAwOworCQltX3JlbW92ZWQgPSAxOwog
CX0KKwlDV29ya2VyVGhyZWFkKiBSZW1vdmUoKTsKKwl2b2lkIEluc2VydChDV29ya2VyVGhyZWFk
KiBwcmV2KTsKIH07CiAKICNkZWZpbmUgTUFYX1dBSVRJTkdfU09DS0VUUyAxMDI0CkBAIC0xNTMs
NiArMTM3LDQwIEBACiAJLy8vIFByb2Nlc3MgaW5jb21pbmcgcmVxdWVzdCwgc291cmNlIG9mIHJl
cXVlc3QgaXMgc29ja2V0ICJjc29jayIKIAl2b2lkIHByb2Nlc3NSZXEoQ1NRTERhdGFiYXNlKiBk
YXRhYmFzZSwgaW50IGNzb2NrKTsKIH07CisKKwkvLy8gVGhpcyBtZXRob2QgaW5zZXJ0cyBjdXJy
ZW50IG9iamVjdCBhZnRlciBzcGVjaWZpZWQgaW4gdGhlIGxpbmtlZCBsaXN0CisJaW5saW5lIHZv
aWQgQ1dvcmtlclRocmVhZDo6SW5zZXJ0KENXb3JrZXJUaHJlYWQqIHByZXYpCisJeworCQltX25l
eHQgPSBwcmV2LT5tX25leHQ7CisJCWlmKHByZXYtPm1fbmV4dCkKKwkJCXByZXYtPm1fbmV4dC0+
bV9wcmV2ID0gdGhpczsKKwkJcHJldi0+bV9uZXh0ID0gdGhpczsKKwkJbV9wcmV2ID0gcHJldjsK
KwkJbV9yZW1vdmVkID0gMDsKKwl9CisJLy8vIFRoaXMgbWV0aG9kIHJlbW92ZXMgY3VycmVudCBv
YmplY3QgZnJvbSBsaW5rZWQgbGlzdAorCWlubGluZSBDV29ya2VyVGhyZWFkKiBDV29ya2VyVGhy
ZWFkOjpSZW1vdmUoKQorCXsKKwkJCisJCWlmKG1fbmV4dCkKKwkJeworCQkJaWYobV9wYXJlbnQt
Pm1fZmlyc3QgPT0gdGhpcykKKwkJCQltX3BhcmVudC0+bV9maXJzdCA9IG1fbmV4dDsKKwkJCW1f
bmV4dC0+bV9wcmV2ID0gbV9wcmV2OworCQl9CisJCWlmKG1fcHJldikKKwkJeworCQkJaWYobV9w
YXJlbnQtPm1fZmlyc3QgPT0gdGhpcykKKwkJCQltX3BhcmVudC0+bV9maXJzdCA9IG1fcHJldjsK
KwkJCW1fcHJldi0+bV9uZXh0ID0gbV9uZXh0OworCQl9CisJCWVsc2UgaWYoIW1fbmV4dCkKKwkJ
CW1fcGFyZW50LT5tX2ZpcnN0ID0gTlVMTDsKKwkJbV9wcmV2ID0gTlVMTDsKKwkJbV9uZXh0ID0g
TlVMTDsKKwkJbV9yZW1vdmVkID0gMTsKKwkJcmV0dXJuIHRoaXM7CisJfQogCiAvKiogQXV4aWxp
YXJ5IGNsYXNzIGZvciBzaW1wbGUgbXV0ZXggbG9ja2luZy4KICAqIExvY2tzIG11dGV4LCBzcGVj
aWZpZWQgYnkgcGFyYW1ldGVyIG9mIGNvbnN0cnVjdG9yLCBhbmQgdW5sb2NrcyBpdAo=

------_=_NextPart_001_01C420A3.B839F782--