[OGo-Evolution] Improving the Ogo connector
Shreyas Srinivasan
evolution@opengroupware.org
Mon, 7 Aug 2006 22:58:30 +0530
------=_Part_59759_25428202.1154971710468
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Hey,
I am looking at porting and improving the ogo connector to work with evolution
2.[6,8]. I have been working on it for about a week now and have made
a little progress. Calendar elements creation, edition and deletion works
smoothly (it used to work i am told, i just fixed a couple of bugs). Now
i am looking at fixing addressbook and tasks.
My research showed that there was no way to create new addressbook
elements as it was not supported by groupdav interface, has there been
a change in status. Also i have a couple of doubts about the existing
e-book-backend-ogo code, so if the original developers could help me
out in explaining a little of the code(only a couple of questions), i would
be grateful.
I have some experience in working with evolution as i used to maintain
the evolution mailer and the mac osx port when i was at Novell.
I am attaching a diff of the work i have done so far (diff'ed against
evolution head), its not much but i hope to do a lot more. Hopefully if i can
understand the current connector code base well, i can work on
extending it to current opengroupware feature compatibility and also
work on some stability work. Looking forward to hearing from all of
you.
Thanks,
Shreyas
--
CelAbrate your flaws
------=_Part_59759_25428202.1154971710468
Content-Type: application/octet-stream; name=update-ogo.diff
Content-Transfer-Encoding: base64
X-Attachment-Id: f_eql48g4t
Content-Disposition: attachment; filename="update-ogo.diff"
LS0tIC9ob21lL3NzaHJleWFzL2JsZWgvZXZvbHV0aW9uLWdyb3VwZGF2LTAuMi9jb25maWd1cmUu
aW4JMjAwNS0wMy0wNyAwMToxMDo0MC4wMDAwMDAwMDAgKzA1MzAKKysrIGNvbmZpZ3VyZS5pbgky
MDA2LTA3LTI1IDIyOjM3OjU2LjAwMDAwMDAwMCArMDUzMApAQCAtMTgsNyArMTgsMTAgQEAgQU1f
UEFUSF9HTElCXzJfMAogCiBPR09fQ09NUElMRV9XQVJOSU5HUwogCi1BQ19QUk9HX0lOVExUT09M
KFswLjMwXSkKK2RubCBBQ19QUk9HX0lOVExUT09MKFswLjM1LjBdKQorZG5sIEkxOE4gc3R1ZmYK
K0lUX1BST0dfSU5UTFRPT0woWzAuMzUuMF0pCisKIAogQUNfUEFUSF9QUk9HKFBLR19DT05GSUcs
IHBrZy1jb25maWcsIG5vKQogaWYgdGVzdCB4JFBLR19DT05GSUcgPSB4bm8gOyB0aGVuCkBAIC04
Myw3ICs4Niw3IEBAIFBLR19DSEVDS19NT0RVTEVTKEVWT0dST1VQREFWLAogICAgIAlsaWJlYm9v
ay0kRURTX1BBQ0tBR0UgPj0gJEVEU19SRVFVSVJFRAogCWxpYmVkYXRhLWNhbC0kRURTX1BBQ0tB
R0UgPj0gJEVEU19SRVFVSVJFRAogCWNhbWVsLXByb3ZpZGVyLSRFRFNfUEFDS0FHRSA+PSAkRURT
X1JFUVVJUkVECi0JZXZvbHV0aW9uLXBsdWdpbi0yLjIKKwlldm9sdXRpb24tcGx1Z2luLTIuOAog
XSkKIAogQUNfU1VCU1QoRVZPR1JPVVBEQVZfQ0ZMQUdTKQpAQCAtMTEwLDcgKzExMyw3IEBAIGRu
bCB4QUNfU1VCU1QoRVZPTFVUSU9OX1NPVVJDRSkKIGRubCBFdm9sdXRpb24gcGx1Z2luIGluc3Rh
bGwgZGlyZWN0b3J5CiBBQ19BUkdfV0lUSChwbHVnaW4taW5zdGFsbC1kaXIsIFsgIC0td2l0aC1w
bHVnaW4taW5zdGFsbC1kaXI9UEFUSCBwYXRoIHRvIGV2b2x1dGlvbiBzb3VyY2UgdHJlZV0pCiBp
ZiB0ZXN0ICJ4JHdpdGhfcGx1Z2luX2luc3RhbGxfZGlyIiA9ICJ4IiA7IHRoZW4KLSAgIFBMVUdJ
Tl9JTlNUQUxMX0RJUj1gcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXBsdWdpbmRpciBldm9sdXRpb24t
cGx1Z2luLTIuMmAKKyAgIFBMVUdJTl9JTlNUQUxMX0RJUj1gcGtnLWNvbmZpZyAtLXZhcmlhYmxl
PXBsdWdpbmRpciBldm9sdXRpb24tcGx1Z2luLTIuOGAKICAgIGlmIHRlc3QgIngkUExVR0lOX0lO
U1RBTExfRElSIiA9ICJ4IjsgdGhlbgogICAgICAgQUNfTVNHX0VSUk9SKFVuYWJsZSB0byBmaW5k
IHBsdWdpbiBkaXJlY3RvcnkpCiAgICBmaQpAQCAtMTE4LDMwICsxMjEsMTIgQEAgZmkKIEFDX1NV
QlNUKFBMVUdJTl9JTlNUQUxMX0RJUikKIAogZG5sIEV2b2x1dGlvbiBlLWVycm9yIGluc3RhbGwg
ZGlyZWN0b3J5Ci1FUlJPUl9ESVI9YHBrZy1jb25maWcgLS12YXJpYWJsZT1lcnJvcmRpciBldm9s
dXRpb24tcGx1Z2luLTIuMmAKK0VSUk9SX0RJUj1gcGtnLWNvbmZpZyAtLXZhcmlhYmxlPWVycm9y
ZGlyIGV2b2x1dGlvbi1wbHVnaW4tMi44YAogaWYgdGVzdCAieCRFUlJPUl9ESVIiID0gIngiOyB0
aGVuCiAgICBBQ19NU0dfRVJST1IoVW5hYmxlIHRvIGZpbmQgZXJyb3IgZmlsZSBkaXJlY3Rvcnkp
CiBmaQogQUNfU1VCU1QoRVJST1JfRElSKQogCi1kbmwgIC0tLS0tLS0tLS0tLS0tLS0tLQotZG5s
IHwgTGFuZ3VhZ2UgU3VwcG9ydCB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1kbmwgIC0tLS0tLS0tLS0tLS0tLS0tLQotR0VUVEVYVF9QQUNLQUdFPWV2b2x1dGlvbi1n
cm91cGRhdgotQUNfU1VCU1QoR0VUVEVYVF9QQUNLQUdFKQotQUNfREVGSU5FX1VOUVVPVEVEKEdF
VFRFWFRfUEFDS0FHRSwgIiRHRVRURVhUX1BBQ0tBR0UiLCBbVGhlIHByZWZpeCBmb3Igb3VyIGdl
dHRleHQgdHJhbnNsYXRpb24gZG9tYWlucy5dKQotCi1kbmwgQUxMX0xJTkdVQVM9ImFtIGF6IGJl
IGJnIGNhIGNzIGRhIGRlIGVsIGVuX0NBIGVuX0dCIGVzIGV0IGZhIGZyIGhpIGhyIGh1IGlkIGlz
IGl0IGphIGtuIGtvIGx2IG1sIG1uIG1zIG5iIG5sIG5uIG5vIHBhIHBsIHB0IHB0X0JSIHJ1IHNr
IHNxIHNyIHNyQExhdG4gc3YgdWsgemhfQ04gemhfVFciCi0KLUFNX0dMSUJfR05VX0dFVFRFWFQK
LQotaWYgdGVzdCAieCRwcmVmaXgiID0gInhOT05FIjsgdGhlbgotICBHTk9NRUxPQ0FMRURJUj0k
YWNfZGVmYXVsdF9wcmVmaXgvJHtEQVRBRElSTkFNRX0vbG9jYWxlCi1lbHNlCi0gIEdOT01FTE9D
QUxFRElSPSRwcmVmaXgvJHtEQVRBRElSTkFNRX0vbG9jYWxlCi1maQotQUNfREVGSU5FX1VOUVVP
VEVEKEdOT01FTE9DQUxFRElSLCAiJEdOT01FTE9DQUxFRElSIiwgW1RoZSBsb2NhbGUgZGlyIHRv
IHVzZV0pCi0KIGRubCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCiBkbmwgVGhpcyB3aWxsIGNhdXNlIHRoZSBhdXRvbWFrZSBnZW5l
cmF0ZWQgbWFrZWZpbGVzIHRvIHBhc3MgdGhlCi0tLSAvZGV2L251bGwJMjAwNi0wNy0yNSAxMDox
OTowOS40MzE3NTIwMDAgKzA1MzAKKysrIGF1dG9nZW4uc2gJMjAwNi0wNy0yNSAyMDo1NjoyNS4w
MDAwMDAwMDAgKzA1MzAKQEAgLTAsMCArMSwyMiBAQAorIyEvYmluL3NoCisjIFJ1biB0aGlzIHRv
IGdlbmVyYXRlIGFsbCB0aGUgaW5pdGlhbCBtYWtlZmlsZXMsIGV0Yy4KKworc3JjZGlyPWBkaXJu
YW1lICQwYAordGVzdCAteiAiJHNyY2RpciIgJiYgc3JjZGlyPS4KKworUEtHX05BTUU9ImV2b2x1
dGlvbi1vZ28tY29ubmVjdG9yIgorUkVRVUlSRURfQVVUT01BS0VfVkVSU0lPTj0xLjYKKworKHRl
c3QgLWYgJHNyY2Rpci9jb25maWd1cmUuaW4gXAorICAmJiB0ZXN0IC1mICRzcmNkaXIvQ2hhbmdl
TG9nIFwKKyAgJiYgdGVzdCAtZCAkc3JjZGlyL2NhbGVuZGFyKSB8fCB7CisgICAgZWNobyAtbiAi
KipFcnJvcioqOiBEaXJlY3RvcnkgIlxgJHNyY2RpclwnIiBkb2VzIG5vdCBsb29rIGxpa2UgdGhl
IgorICAgIGVjaG8gIiB0b3AtbGV2ZWwgJFBLR19OQU1FIGRpcmVjdG9yeSIKKyAgICBleGl0IDEK
K30KKword2hpY2ggZ25vbWUtYXV0b2dlbi5zaCB8fCB7CisgICAgZWNobyAiWW91IG5lZWQgdG8g
aW5zdGFsbCBnbm9tZS1jb21tb24gZnJvbSB0aGUgR05PTUUgQ1ZTIgorICAgIGV4aXQgMQorfQor
VVNFX0dOT01FMl9NQUNST1M9MSAuIGdub21lLWF1dG9nZW4uc2gKLS0tIC9kZXYvbnVsbAkyMDA2
LTA3LTI1IDEwOjE5OjA5LjQzMTc1MjAwMCArMDUzMAorKysgcG8vTElOR1VBUwkyMDA2LTA3LTI1
IDIyOjQ4OjU3LjAwMDAwMDAwMCArMDUzMApAQCAtMCwwICsxLDQgQEAKKyNwbGVhc2Uga2VlcCB0
aGlzIGxpc3QgYWxwaGFiZXRpY2FsbHkgc29ydGVkCisjCisjYW0gYXogYmUgYmcgY2EgY3MgZGEg
ZGUgZWwgZW5fQ0EgZW5fR0IgZXMgZXQgZmEgZnIgaGkgaHIgaHUgaWQgaXMgaXQgamEga24KKyNr
byBsdiBtbCBtbiBtcyBuYiBubCBubiBubyBwYSBwbCBwdCBwdF9CUiBydSBzayBzcSBzciBzckBM
YXRuIHN2IHVrIHpoX0NOIHpoX1RXCi0tLSAvaG9tZS9zc2hyZXlhcy9ibGVoL2V2b2x1dGlvbi1n
cm91cGRhdi0wLjIvY2FsZW5kYXIvZS1jYWwtYmFja2VuZC1vZ28uYwkyMDA1LTAyLTI1IDA3OjUw
OjQ4LjAwMDAwMDAwMCArMDUzMAorKysgY2FsZW5kYXIvZS1jYWwtYmFja2VuZC1vZ28uYwkyMDA2
LTA3LTI1IDIwOjQ3OjU2LjAwMDAwMDAwMCArMDUzMApAQCAtNDUsNiArNDUsNyBAQCBzdHJ1Y3Qg
X0VDYWxCYWNrZW5kT0dvUHJpdmF0ZSB7CiAKIAlnY2hhciAqdXNlcm5hbWU7CiAJZ2NoYXIgKnBh
c3N3b3JkOworCWdjaGFyICp1c2VyX2VtYWlsOwogfTsKIAogc3RhdGljIEVDYWxCYWNrZW5kQ2xh
c3MgKnBhcmVudF9jbGFzcyA9IE5VTEw7CkBAIC04Nyw5ICs4OCwyMiBAQCBlX2NhbF9iYWNrZW5k
X29nb19pc19yZWFkX29ubHkgKEVDYWxCYWNrCiBzdGF0aWMgRUNhbEJhY2tlbmRTeW5jU3RhdHVz
CiBlX2NhbF9iYWNrZW5kX29nb19nZXRfY2FsX2FkZHJlc3MgKEVDYWxCYWNrZW5kU3luYyAqYmFj
a2VuZCwgRURhdGFDYWwgKmNhbCwgY2hhciAqKmFkZHJlc3MpCiB7Ci0JZ193YXJuaW5nICgiJXM6
IGltcGxlbWVudCBtZSEiLCBfX1BSRVRUWV9GVU5DVElPTl9fKTsKKwlFQ2FsQmFja2VuZE9HbyAq
b2dvOworCUVDYWxCYWNrZW5kT0dvUHJpdmF0ZSAqcHJpdjsKIAotCXJldHVybiBHTk9NRV9Fdm9s
dXRpb25fQ2FsZW5kYXJfT3RoZXJFcnJvcjsKKwlvZ28gPSBFX0NBTF9CQUNLRU5EX09HTyhiYWNr
ZW5kKTsKKwlwcml2ID0gb2dvLT5wcml2OyAKKworCWlmIChwcml2LT5tb2RlID09IENBTF9NT0RF
X1JFTU9URSkgeworCQlpZiAocHJpdi0+dXNlcl9lbWFpbCkKKwkJCWdfZnJlZSAocHJpdi0+dXNl
cl9lbWFpbCk7CisKKwkJcHJpdi0+dXNlcl9lbWFpbCA9IGdfc3RyZHVwIChlX29nb19jb25uZWN0
aW9uX2dldF91c2VyX2VtYWlsIChvZ28tPnByaXYtPmNvbm4pKTsKKwl9CisKKwkqYWRkcmVzcyA9
IGdfc3RyZHVwIChwcml2LT51c2VyX2VtYWlsKTsKKworCXJldHVybiBHTk9NRV9Fdm9sdXRpb25f
Q2FsZW5kYXJfU3VjY2VzczsKIH0KIAogc3RhdGljIEVDYWxCYWNrZW5kU3luY1N0YXR1cwpAQCAt
Mzc3LDE0ICszOTEsMTYgQEAgdXBkYXRlX2RlbHRhcyAoRUNhbEJhY2tlbmRPR28gKm9nbywgY29u
cwogCQkJdnR5cGUgPSBlX2NhbF9jb21wb25lbnRfZ2V0X3Z0eXBlIChjb21wKTsKIAkJCWlmICgo
dnR5cGUgPT0gRV9DQUxfQ09NUE9ORU5UX0VWRU5UKSB8fAogCQkJICAgICh2dHlwZSA9PSBFX0NB
TF9DT01QT05FTlRfVE9ETykpIHsKLQkJCQllX2NhbF9jb21wb25lbnRfZ2V0X3VpZCAoY29tcCwg
JnVpZCk7CisJCQkJRUNhbENvbXBvbmVudElkICppZCA9IGVfY2FsX2NvbXBvbmVudF9nZXRfaWQg
KGNvbXApOwogCQkJCQorCQkJCWlmIChlX2NhbF9iYWNrZW5kX2NhY2hlX3JlbW92ZV9jb21wb25l
bnQgKHByaXYtPmNhY2hlLCBpZC0+dWlkLCBpZC0+cmlkKSkgewogCQkJCWNvbXBfc3RyID0gZV9j
YWxfY29tcG9uZW50X2dldF9hc19zdHJpbmcgKGNvbXApOwogCQkJCWVfY2FsX2JhY2tlbmRfbm90
aWZ5X29iamVjdF9yZW1vdmVkIChFX0NBTF9CQUNLRU5EIChvZ28pLCAKLQkJCQkJCQkJICAgICAo
Y2hhciAqKSB1aWQsIGNvbXBfc3RyLCBOVUxMKTsKLQkJCQllX2NhbF9iYWNrZW5kX2NhY2hlX3Jl
bW92ZV9jb21wb25lbnQgKG9nby0+cHJpdi0+Y2FjaGUsIChjb25zdCBjaGFyICopIHVpZCwgTlVM
TCk7CisJCQkJCQkJCQkgICAgIGlkLCBjb21wX3N0ciwgTlVMTCk7CisJCQkJCWVfY2FsX2NvbXBv
bmVudF9mcmVlX2lkIChpZCk7CiAJCQkJZ19mcmVlIChjb21wX3N0cik7CiAJCQl9CisJCQl9CiAK
IAkJfSBlbHNlIGlmIChzdHJjbXAgKGV0YWcsIGNhY2hlZF9ldGFnKSAhPSAwKSB7CiAJCQl1cGRh
dGVkX2l0ZW1zID0gZ19saXN0X3ByZXBlbmQgKHVwZGF0ZWRfaXRlbXMsIHJlYWxfaHJlZik7CkBA
IC02NjUsMTMgKzY4MSwxMyBAQCBlX2NhbF9iYWNrZW5kX29nb19nZXRfbGRhcF9hdHRyaWJ1dGUg
KEVDCiBzdGF0aWMgRUNhbEJhY2tlbmRTeW5jU3RhdHVzCiBlX2NhbF9iYWNrZW5kX29nb19nZXRf
c3RhdGljX2NhcGFiaWxpdGllcyAoRUNhbEJhY2tlbmRTeW5jICpiYWNrZW5kLCBFRGF0YUNhbCAq
Y2FsLCBjaGFyICoqY2FwYWJpbGl0aWVzKQogewotCSpjYXBhYmlsaXRpZXMgPSBnX3N0cmR1cCAo
Q0FMX1NUQVRJQ19DQVBBQklMSVRZX05PX0VNQUlMX0FMQVJNUyAiLCIgXAotCQkJCSAgQ0FMX1NU
QVRJQ19DQVBBQklMSVRZX09ORV9BTEFSTV9PTkxZICIsIiBcCi0JCQkJICBDQUxfU1RBVElDX0NB
UEFCSUxJVFlfUkVNT1ZFX0FMQVJNUyAiLCIgICBcCi0JICAgICAgICAgICAgICAgICAgICAgICAg
ICBDQUxfU1RBVElDX0NBUEFCSUxJVFlfTk9fVEhJU0FORFBSSU9SICIsIiBcCi0JCQkJICBDQUxf
U1RBVElDX0NBUEFCSUxJVFlfTk9fVEhJU0FOREZVVFVSRSAiLCIgXAotCQkJCSAgQ0FMX1NUQVRJ
Q19DQVBBQklMSVRZX05PX0NPTlZfVE9fQVNTSUdOX1RBU0sgIiwiIFwKLQkJCQkgIENBTF9TVEFU
SUNfQ0FQQUJJTElUWV9OT19DT05WX1RPX1JFQ1VSICIsIiBcCisJKmNhcGFiaWxpdGllcyA9IGdf
c3RyZHVwIChDQUxfU1RBVElDX0NBUEFCSUxJVFlfTk9fRU1BSUxfQUxBUk1TICIsIiAKKwkJCQkg
IENBTF9TVEFUSUNfQ0FQQUJJTElUWV9PTkVfQUxBUk1fT05MWSAiLCIgCisJCQkJICBDQUxfU1RB
VElDX0NBUEFCSUxJVFlfUkVNT1ZFX0FMQVJNUyAiLCIKKwkgICAgICAgICAgICAgICAgICAgICAg
ICAgIENBTF9TVEFUSUNfQ0FQQUJJTElUWV9OT19USElTQU5EUFJJT1IgIiwiCisJCQkJICBDQUxf
U1RBVElDX0NBUEFCSUxJVFlfTk9fVEhJU0FOREZVVFVSRSAiLCIKKwkJCQkgIENBTF9TVEFUSUNf
Q0FQQUJJTElUWV9OT19DT05WX1RPX0FTU0lHTl9UQVNLICIsIgorCQkJCSAgQ0FMX1NUQVRJQ19D
QVBBQklMSVRZX05PX0NPTlZfVE9fUkVDVVIgIiwiCiAJCQkJICBDQUxfU1RBVElDX0NBUEFCSUxJ
VFlfU0FWRV9TQ0hFRFVMRVMpOwogCiAJcmV0dXJuIEdOT01FX0V2b2x1dGlvbl9DYWxlbmRhcl9T
dWNjZXNzOwpAQCAtNjk4LDYgKzcxNCw3IEBAIGVfY2FsX2JhY2tlbmRfb2dvX2NyZWF0ZV9vYmpl
Y3QgKEVDYWxCYWMKIHsKIAlFQ2FsQmFja2VuZE9HbyAqb2dvOwogCUVDYWxCYWNrZW5kT0dvUHJp
dmF0ZSAqcHJpdjsKKwlFQ2FsQ29tcG9uZW50SWQgKmlkOwogCWljYWxjb21wb25lbnQgKmljYWxj
b21wLCAqY2FsZW5kYXI7CiAJZ2NoYXIgKnVyaTsKIAlPR29Db25uZWN0aW9uU3RhdHVzIHN0YXR1
czsKQEAgLTcwOSwxMSArNzI2LDE0IEBAIGVfY2FsX2JhY2tlbmRfb2dvX2NyZWF0ZV9vYmplY3Qg
KEVDYWxCYWMKIAlvZ28gPSBFX0NBTF9CQUNLRU5EX09HTyAoYmFja2VuZCk7CiAJcHJpdiA9IG9n
by0+cHJpdjsKIAorCWZwcmludGYgKHN0ZGVyciwiJXNcbiIsICJlX2NhbF9iYWNrZW5kX29nb19j
cmVhdGVfb2JqZWN0Iik7CiAJLyogRklYTUU6IFdlIG9ubHkgc3VwcG9ydCBldmVudHMgcmlnaHQg
bm93ICovCisJLyogamFub3NjaDogbGV0cyB0cnkgaW5zZXJ0aW5nIHRhc2tzLi4uCiAJaWYgKGVf
Y2FsX2JhY2tlbmRfZ2V0X2tpbmQgKEVfQ0FMX0JBQ0tFTkQgKGJhY2tlbmQpKSA9PSBJQ0FMX1ZU
T0RPX0NPTVBPTkVOVCkgewogCQllX2NhbF9iYWNrZW5kX25vdGlmeV9lcnJvciAoRV9DQUxfQkFD
S0VORCAoYmFja2VuZCksIF8oIkN1cnJlbnRseSwgY3JlYXRpbmcgbmV3IHRhc2tzIGlzIHVuc3Vw
cG9ydGVkIikpOwogCQlyZXR1cm4gR05PTUVfRXZvbHV0aW9uX0NhbGVuZGFyX090aGVyRXJyb3I7
CiAJfQorCSovCiAJCiAJLyogY2hlY2sgdGhlIGNvbXBvbmVudCBmb3IgdmFsaWRpdHkgKi8KIAlp
Y2FsY29tcCA9IGljYWxwYXJzZXJfcGFyc2Vfc3RyaW5nICgqY2Fsb2JqKTsKQEAgLTc0NCw4ICs3
NjQsOSBAQCBlX2NhbF9iYWNrZW5kX29nb19jcmVhdGVfb2JqZWN0IChFQ2FsQmFjCiAJICAgCiAJ
ZV9jYWxfYmFja2VuZF9ub3RpZnlfb2JqZWN0X2NyZWF0ZWQgKEVfQ0FMX0JBQ0tFTkQgKG9nbyks
ICpjYWxvYmopOwogCWNvbXAgPSBlX2NhbF9jb21wb25lbnRfbmV3X2Zyb21fc3RyaW5nICgqY2Fs
b2JqKTsKLQllX2NhbF9jb21wb25lbnRfZ2V0X3VpZCAoY29tcCwgJnRtcCk7Ci0JZV9jYWxfYmFj
a2VuZF9ub3RpZnlfb2JqZWN0X3JlbW92ZWQgKEVfQ0FMX0JBQ0tFTkQgKG9nbyksIHRtcCwgKmNh
bG9iaiwgTlVMTCk7CisJaWQgPSBlX2NhbF9jb21wb25lbnRfZ2V0X2lkIChjb21wKTsKKwllX2Nh
bF9iYWNrZW5kX25vdGlmeV9vYmplY3RfcmVtb3ZlZCAoRV9DQUxfQkFDS0VORCAob2dvKSwgaWQs
ICpjYWxvYmosIE5VTEwpOworCWVfY2FsX2NvbXBvbmVudF9mcmVlX2lkIChpZCk7CiAJZ19vYmpl
Y3RfdW5yZWYgKGNvbXApOwogCQogCS8qIFJlLWZldGNoIHRoZSBpdGVtICovCkBAIC03NzYsMTAg
Kzc5NywxMyBAQCBlX2NhbF9iYWNrZW5kX29nb19tb2RpZnlfb2JqZWN0IChFQ2FsQmFjCiAJZ2No
YXIgKm5ld19jb250ZW50czsKIAogCS8qIEZJWE1FOiBXZSBvbmx5IHN1cHBvcnQgZXZlbnRzIHJp
Z2h0IG5vdyAqLworCS8qIGphbm9zY2g6IGxldHMgdHJ5IHVwZGF0aW5nIHRhc2tzLi4uCiAJaWYg
KGVfY2FsX2JhY2tlbmRfZ2V0X2tpbmQgKEVfQ0FMX0JBQ0tFTkQgKGJhY2tlbmQpKSA9PSBJQ0FM
X1ZUT0RPX0NPTVBPTkVOVCkgewogCQllX2NhbF9iYWNrZW5kX25vdGlmeV9lcnJvciAoRV9DQUxf
QkFDS0VORCAoYmFja2VuZCksIF8oIkN1cnJlbnRseSwgbW9kaWZ5aW5nIHRhc2tzIGlzIHVuc3Vw
cG9ydGVkIikpOwogCQlyZXR1cm4gR05PTUVfRXZvbHV0aW9uX0NhbGVuZGFyX090aGVyRXJyb3I7
CiAJfQorCSovCisJCiAJCiAJKm9sZF9vYmplY3QgPSBOVUxMOwogCQpAQCAtODczLDYgKzg5Nyw3
IEBAIGVfY2FsX2JhY2tlbmRfb2dvX3JlbW92ZV9vYmplY3QgKEVDYWxCYWMKIHN0YXRpYyBFQ2Fs
QmFja2VuZFN5bmNTdGF0dXMKIGVfY2FsX2JhY2tlbmRfb2dvX2Rpc2NhcmRfYWxhcm0gKEVDYWxC
YWNrZW5kU3luYyAqYmFja2VuZCwgRURhdGFDYWwgKmNhbCwgY29uc3QgY2hhciAqdWlkLCBjb25z
dCBjaGFyICphdWlkKQogeworCWZwcmludGYgKHN0ZGVyciwiJXNcbiIsICJlX2NhbF9iYWNrZW5k
X29nb19kaXNjYXJkX2FsYXJtIik7CiAJcmV0dXJuIEdOT01FX0V2b2x1dGlvbl9DYWxlbmRhcl9P
dGhlckVycm9yOwogfQogCkBAIC0xMTMzLDYgKzExNTgsNyBAQCBlX2NhbF9iYWNrZW5kX29nb19z
dGFydF9xdWVyeSAoRUNhbEJhY2tlCiAJRUNhbEJhY2tlbmRPR29Qcml2YXRlICpwcml2OwogICAg
ICAgICBHTGlzdCAqb2JqZWN0cyA9IE5VTEw7CiAKKwlmcHJpbnRmIChzdGRlcnIsIiVzXG4iLCAi
ZV9jYWxfYmFja2VuZF9vZ29fc3RhcnRfcXVlcnkiKTsKIAlvZ28gPSBFX0NBTF9CQUNLRU5EX09H
TyAoYmFja2VuZCk7CiAJcHJpdiA9IG9nby0+cHJpdjsKIApAQCAtMTIyNiw2ICsxMjUyLDExIEBA
IGVfY2FsX2JhY2tlbmRfb2dvX2Rpc3Bvc2UgKEdPYmplY3QgKm9iamUKIAkJcHJpdi0+dXNlcm5h
bWUgPSBOVUxMOwogCX0KIAkKKwlpZiAocHJpdi0+dXNlcl9lbWFpbCkgeworCQlnX2ZyZWUgKHBy
aXYtPnBhc3N3b3JkKTsKKwkJcHJpdi0+cGFzc3dvcmQgPSBOVUxMOworCX0KKwogCWlmIChwcml2
LT5wYXNzd29yZCkgewogCQlnX2ZyZWUgKHByaXYtPnBhc3N3b3JkKTsKIAkJcHJpdi0+cGFzc3dv
cmQgPSBOVUxMOwotLS0gL2hvbWUvc3NocmV5YXMvYmxlaC9ldm9sdXRpb24tZ3JvdXBkYXYtMC4y
L3V0aWxzL29nby1jb25uZWN0aW9uLmgJMjAwNS0wMi0wNiAxMzo1Nzo1Ny4wMDAwMDAwMDAgKzA1
MzAKKysrIHV0aWxzL29nby1jb25uZWN0aW9uLmgJMjAwNi0wNy0yNSAyMDozNDowNS4wMDAwMDAw
MDAgKzA1MzAKQEAgLTE0Miw2ICsxNDIsOCBAQCBnY2hhciAgICAgICAgICAgICAgKm9nb19jb25u
ZWN0aW9uX2dldF9pCiAKIHZvaWQgICAgICAgICAgICAgICAgb2dvX2l0ZW1fbGlzdF9mcmVlICAg
ICAgICAgIChHTGlzdCAqaXRlbXMpOwogICAgICAKK2NvbnN0IGNoYXIgICAgICAgICAgICAgICpl
X29nb19jb25uZWN0aW9uX2dldF91c2VyX2VtYWlsIChPR29Db25uZWN0aW9uICpjbmMpOworICAg
ICAKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgotLS0gL2hvbWUvc3NocmV5YXMvYmxlaC9ldm9sdXRp
b24tZ3JvdXBkYXYtMC4yL3V0aWxzL29nby1jb25uZWN0aW9uLmMJMjAwNS0wMi0yNSAwODoxMjo0
OC4wMDAwMDAwMDAgKzA1MzAKKysrIHV0aWxzL29nby1jb25uZWN0aW9uLmMJMjAwNi0wNy0yNSAy
MDo0OTozNS4wMDAwMDAwMDAgKzA1MzAKQEAgLTQ0LDYgKzQ0LDcgQEAgc3RydWN0IF9PR29Db25u
ZWN0aW9uUHJpdmF0ZSB7CiAJU291cFNlc3Npb24gKnNvdXBfc2Vzc2lvbjsKIAogCWNoYXIgKnVy
aTsKKwljaGFyICp1c2VyX2VtYWlsOyAvL3RvIGJlIGltcGxlbWVudGVkCiAJY2hhciAqdXNlcm5h
bWU7CiAJY2hhciAqcGFzc3dvcmQ7CiB9OwpAQCAtMzU5LDYgKzM2MCwxNSBAQCBvZ29fY29ubmVj
dGlvbl9mZXRjaF9pdGVtX2Fic29sdXRlIChPR29DCiAJaHR0cF9zdGF0dXMgPSBzb3VwX3Nlc3Np
b25fc2VuZF9tZXNzYWdlIChjb25uLT5wcml2LT5zb3VwX3Nlc3Npb24sIG1lc3NhZ2UpOwogCiAJ
aWYgKChzdGF0dXMgPSBnZXRfc3RhdHVzX2Zyb21faHR0cF9yZXNwb25zZSAoaHR0cF9zdGF0dXMp
KSA9PSBPR09fQ09OTkVDVElPTl9TVEFUVVNfT0spIHsKKworICAgICAgICAvLyBqYW5vc2NoOiBy
ZXNwb25zZS5sZW5ndGggc2VlbXMgdG8gYmUgd3JvbmcsIGxldHMgd3JpdGUgYSAnXDAnIGludG8g
dGhlIHN0cmluZyB0byB0ZXJtaW5hdGUgaXQgYXQgdGhlIGNvcnJlY3QgcG9zaXRpb24KKyAgICAg
ICAgY2hhciAqcyA9IHN0cnN0cihtZXNzYWdlLT5yZXNwb25zZS5ib2R5LCAiRU5EOlZDQUxFTkRB
UiIpOworICAgICAgICBpZiAocyAhPSBOVUxMKSB7CisgICAgICAgICAgICBzWzArc3RybGVuKCJF
TkQ6VkNBTEVOREFSIildID0gJ1wwJzsKKyAgICAgICAgfQorICAgICAgICBtZXNzYWdlLT5yZXNw
b25zZS5sZW5ndGggPSBzdHJsZW4obWVzc2FnZS0+cmVzcG9uc2UuYm9keSk7CisKKwogCQkqaXRl
bV9jb250ZW50cyA9IGdfc3RybmR1cCAobWVzc2FnZS0+cmVzcG9uc2UuYm9keSwgCiAJCQkJCSAg
ICBtZXNzYWdlLT5yZXNwb25zZS5sZW5ndGgpOwogCX0gZWxzZSB7CkBAIC00MDQsNiArNDE0LDE2
IEBAIHBhcnNlX2xpc3RfcmVzcG9uc2UgKHhtbERvY1B0ciAgICAgZG9jLAogCQlpZiAodXJpX25v
ZGUtPmNoaWxkcmVuLT5jb250ZW50KQogCQkJaXRlbS0+dXJpID0gZ19zdHJkdXAgKHVyaV9ub2Rl
LT5jaGlsZHJlbi0+Y29udGVudCk7CiAJCQorCQkJCisgIAkJLy8gamFub3NjaDogY3JlYXRlIHpl
cm8gZXRhZyBmcm9tIGhyZWYgKHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgZ2V0ZXRhZywgaWYgZ2V0
ZXRhZyBpcyBhdmFpbGFibGUpCisJICAgIGNoYXIqIHNob3J0X2lkOworCSAgICBjaGFyIGV0YWdb
MTAwXTsKKwkgICAgc2hvcnRfaWQgPSByaW5kZXgoaXRlbS0+dXJpLCAnLycpICsgMTsKKwkgICAg
c3ByaW50ZihldGFnLCAiJXM6MCIsIHNob3J0X2lkKTsKKwkJaXRlbS0+ZXRhZyA9IGdfc3RyZHVw
IChldGFnKTsKKworCisJCQogCQlwcm9wc3RhdCA9IGZpbmRfZmlyc3RfY2hpbGQgKHJlc3BvbnNl
LCAicHJvcHN0YXQiKTsKIAkJcHJvcCA9IGZpbmRfZmlyc3RfY2hpbGQgKHByb3BzdGF0LCAicHJv
cCIpOwogCkBAIC00MTIsOSArNDMyLDE0IEBAIHBhcnNlX2xpc3RfcmVzcG9uc2UgKHhtbERvY1B0
ciAgICAgZG9jLAogCQkvKiBOb3cgd2FsayB0aHJvdWdoIGFsbCBwcm9wZXJ0aWVzICovCiAJCWZv
ciAodmFsdWUgPSBwcm9wLT5jaGlsZHJlbjsgdmFsdWUgIT0gTlVMTDsgdmFsdWUgPSB2YWx1ZS0+
bmV4dCkgewogCQkJaWYgKHN0cmNtcCAodmFsdWUtPm5hbWUsICJnZXRldGFnIikgPT0gMCkgewor
CQkJICAgIC8vIGphbm9zY2g6IGlnbm9yZSBlbXB0eSBnZXRldGFnIGNvbnRlbnQKKwkJCSAgICBp
ZiAoIHZhbHVlLT5jaGlsZHJlbiA9PSBOVUxMIHx8IHZhbHVlLT5jaGlsZHJlbi0+Y29udGVudCA9
PSBOVUxMIHx8IHN0cmxlbih2YWx1ZS0+Y2hpbGRyZW4tPmNvbnRlbnQpPT0wICkgeworICAgIAkJ
CSAgICAvLyBpZ25vcmUKKwkJCSAgICB9IGVsc2UgewogCQkJCWl0ZW0tPmV0YWcgPSBnX3N0cmR1
cCAodmFsdWUtPmNoaWxkcmVuLT5jb250ZW50KTsKIAkJCX0KIAkJfQorCQl9CiAKIAkJdG1wID0g
Z19saXN0X3ByZXBlbmQgKHRtcCwgaXRlbSk7CiAJfQpAQCAtNDQxLDYgKzQ2NiwxNCBAQCBvZ29f
Y29ubmVjdGlvbl9saXN0X2l0ZW1zIChPR29Db25uZWN0aW9uCiAJaHR0cF9zdGF0dXMgPSBzb3Vw
X3Nlc3Npb25fc2VuZF9tZXNzYWdlIChjb25uLT5wcml2LT5zb3VwX3Nlc3Npb24sIG1lc3NhZ2Up
OwogCiAJaWYgKChzdGF0dXMgPSBnZXRfc3RhdHVzX2Zyb21faHR0cF9yZXNwb25zZSAoaHR0cF9z
dGF0dXMpKSA9PSBPR09fQ09OTkVDVElPTl9TVEFUVVNfT0spIHsKKyAgICAgICAgLy8gamFub3Nj
aDogcmVzcG9uc2UubGVuZ3RoIHNlZW1zIHRvIGJlIHdyb25nLCBsZXRzIHdyaXRlIGEgJ1wwJyBp
bnRvIHRoZSBzdHJpbmcgdG8gdGVybWluYXRlIGl0IGF0IHRoZSBjb3JyZWN0IHBvc2l0aW9uCisg
ICAgICAgIGNoYXIgKnMgPSBzdHJzdHIobWVzc2FnZS0+cmVzcG9uc2UuYm9keSwgIjwvRDptdWx0
aXN0YXR1cz4iKTsKKyAgICAgICAgaWYgKHMgIT0gTlVMTCkgeworICAgICAgICAgICAgc1swK3N0
cmxlbigiPC9EOm11bHRpc3RhdHVzPiIpXSA9ICdcMCc7CisgICAgICAgIH0KKyAgICAgICAgbWVz
c2FnZS0+cmVzcG9uc2UubGVuZ3RoID0gc3RybGVuKG1lc3NhZ2UtPnJlc3BvbnNlLmJvZHkpOwor
ICAgICAgICAKKwogCQl4bWxEb2NQdHIgZG9jOwogCiAJCWRvYyA9IHhtbFJlYWRNZW1vcnkgKG1l
c3NhZ2UtPnJlc3BvbnNlLmJvZHksIG1lc3NhZ2UtPnJlc3BvbnNlLmxlbmd0aCwgCkBAIC0xMDI5
LDQgKzEwNjIsMTQgQEAgb2dvX2Nvbm5lY3Rpb25fZ2V0X2l0ZW1fdXJpIChPR29Db25uZWN0aQog
CXJldHVybiByZWFsX3VyaTsKIH0KIAorY29uc3QgY2hhciogCitlX29nb19jb25uZWN0aW9uX2dl
dF91c2VyX2VtYWlsIChPR29Db25uZWN0aW9uICpjbmMpCit7CisJZ19yZXR1cm5fdmFsX2lmX2Zh
aWwgKGNuYyAhPSBOVUxMLCBOVUxMKTsKKwlnX3JldHVybl92YWxfaWZfZmFpbCAoT0dPX0lTX0NP
Tk5FQ1RJT04oY25jKSwgTlVMTCk7CisJCisJLypOZWVkIHRvIGFzayB0aGUgc2VydmVyIGZvciB0
aGUgZW1haWwgaWQgb3Igc2hvdWxkIGNyZWF0ZSBpdCBpbiBzb21lIG90aGVyd2F5Ki8KKwkvKkZv
ciBub3cgaXQgY2FuIGJlIE5VTEwqLworCXJldHVybiBOVUxMOwogICAgICAKK30K
------=_Part_59759_25428202.1154971710468--