[omniORBPy] [Bug] Not clearing Python error state after method invocation
Moriarty <[email protected]> Thu, 2 Oct 2008 17:52:00 +0400
| Newsgroups | gmane.comp.corba.omniorb.devel |
|---|---|
| Message-ID | <[email protected]> |
------=_Part_2565_21218881.1222955520804
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Hi!
Another bug in omniORBPy. Steps to reproduce:
1) make simple servant with two methods: foo() with body
"time.sleep(0.1); assert(False)", and boo() with body
"time.sleep(0.2); return 'Ok'"
2) remotely call servant's foo() method. You would catch Unknown
Python exception, it's ok.
3) remotely call servant's boo() method. You would catch Unknown
Python exception too, it's error.
In real world, it causes our "good" methods, that normally never
throw, to raise Unknown python exceptions. Traceback is something
strange:
File "/usr/lib/bla/utils.py", line 153, in protected
return func (*args, **kw)
File "/usr/lib/bla/utils.py", line 257, in new_fun
start_resources = resource.getrusage(resource.RUSAGE_SELF)
AttributeError: 'exceptions.AssertionError' object has no attribute
'_NP_RepositoryId'
The problem is:
------- (modules/pyServant.cc and 4 places more)
PyObject *etype, *evalue, *etraceback;
PyObject *erepoId = 0;
PyErr_Fetch(&etype, &evalue, &etraceback);
PyErr_NormalizeException(&etype, &evalue, &etraceback);
OMNIORB_ASSERT(etype);
if (evalue)
erepoId = PyObject_GetAttrString(evalue, (char*)"_NP_RepositoryId");
if (!(erepoId && PyString_Check(erepoId))) {
//(1)
Py_XDECREF(erepoId);
if (omniORB::trace(1)) {
{
omniORB::logger l;
l << "Caught an unexpected Python exception during up-call.\n";
}
PyErr_Restore(etype, evalue, etraceback);
PyErr_Print();
}
else {
Py_DECREF(etype); Py_XDECREF(evalue); Py_XDECREF(etraceback);
}
OMNIORB_THROW(UNKNOWN, UNKNOWN_PythonException, CORBA::COMPLETED_MAYBE);
}
-------
In (1), after calling PyObject_GetAttrString for object without
"_NP_RepositoryId" attribute, python error state is set. It can be
avoided by 3 alternatives, at least:
1) simply set threadLevel = 1 (PyErr_Print will clear error state) :)
2) Just add PyErr_Clear() in (1). Do not forget to do it in 5 places :)
3) Check && apply attached patch. It reduce copy-paste and insert
PyErr_Clear() in one right place. I'm unsure about it's ideological
correctness, so, review it, please.
--
With best wishes && regards, Morarenko Kirill
------=_Part_2565_21218881.1222955520804
Content-Type: application/octet-stream; name=modules.diff
Content-Transfer-Encoding: base64
X-Attachment-Id: f_fltfoxq90
Content-Disposition: attachment; filename=modules.diff
Q29tbW9uIHN1YmRpcmVjdG9yaWVzOiBtb2R1bGVzLm9sZC9jb2Rlc2V0cyBhbmQgbW9kdWxlcy9j
b2Rlc2V0cwpDb21tb24gc3ViZGlyZWN0b3JpZXM6IG1vZHVsZXMub2xkL2Nvbm5lY3Rpb25zIGFu
ZCBtb2R1bGVzL2Nvbm5lY3Rpb25zCmRpZmYgLXUgbW9kdWxlcy5vbGQvb21uaXB5LmggbW9kdWxl
cy9vbW5pcHkuaAotLS0gbW9kdWxlcy5vbGQvb21uaXB5LmgJMjAwNy0wMS0xOSAxNDoxMTowOS4w
MDAwMDAwMDAgKzAzMDAKKysrIG1vZHVsZXMvb21uaXB5LmgJMjAwOC0xMC0wMiAxNzoxMTowNy4w
MDAwMDAwMDAgKzA0MDAKQEAgLTMyNCw2ICszMjQsMTMgQEAKICAgdm9pZCBwcm9kdWNlU3lzdGVt
RXhjZXB0aW9uKFB5T2JqZWN0KiBlb2JqLCBQeU9iamVjdCogZXJlcG9JZCwKIAkJCSAgICAgIFB5
T2JqZWN0KiBldHlwZSwgUHlPYmplY3QqIGV0cmFjZWJhY2spOwogCisgICAKKyAgc3RhdGljIAor
ICB2b2lkIGhhbmRsZVVzZXJQeXRob25FeGNlcHRpb24oUHlPYmplY3QqKiBlcmVwb0lkUHRyLCBQ
eU9iamVjdCoqIGV0eXBlUHRyLCBQeU9iamVjdCoqIGV0cmFjZWJhY2tQdHIsIFB5T2JqZWN0Kiog
ZXZhbHVlUHRyKTsKKyAgCisgIHN0YXRpYworICB2b2lkIGhhbmRsZUxvY2F0aW9uRm9yd2FyZEV4
Y2VwdGlvbihQeU9iamVjdCogZXJlcG9JZCwgUHlPYmplY3QqIGV0eXBlLCBQeU9iamVjdCogZXRy
YWNlYmFjaywgUHlPYmplY3QqIGV2YWx1ZSk7CisgIAogICAvLyBIYW5kbGUgdGhlIGN1cnJlbnQg
UHl0aG9uIGV4Y2VwdGlvbi4gQW4gZXhjZXB0aW9uIG11c3QgaGF2ZQogICAvLyBvY2N1cnJlZC4g
RGVhbHMgd2l0aCBzeXN0ZW0gZXhjZXB0aW9ucyBhbmQKICAgLy8gb21uaU9SQi5Mb2NhdGlvbkZv
cndhcmQ7IGFsbCBvdGhlciBleGNlcHRpb25zIHByaW50IGEgdHJhY2ViYWNrCmRpZmYgLXUgbW9k
dWxlcy5vbGQvcHlFeGNlcHRpb25zLmNjIG1vZHVsZXMvcHlFeGNlcHRpb25zLmNjCi0tLSBtb2R1
bGVzLm9sZC9weUV4Y2VwdGlvbnMuY2MJMjAwNi0wNy0wNSAxNDo0NjoxNi4wMDAwMDAwMDAgKzA0
MDAKKysrIG1vZHVsZXMvcHlFeGNlcHRpb25zLmNjCTIwMDgtMTAtMDIgMTc6MjQ6MjUuMDAwMDAw
MDAwICswNDAwCkBAIC0xOTgsNDMgKzE5OCw2MyBAQAogfQogCiAKLXZvaWQKLW9tbmlQeTo6aGFu
ZGxlUHl0aG9uRXhjZXB0aW9uKCkKLXsKKwordm9pZCAKK29tbmlQeTo6aGFuZGxlVXNlclB5dGhv
bkV4Y2VwdGlvbihQeU9iamVjdCoqIGVyZXBvSWRQdHIsIFB5T2JqZWN0KiogZXR5cGVQdHIsIFB5
T2JqZWN0KiogZXRyYWNlYmFja1B0ciwgUHlPYmplY3QqKiBldmFsdWVQdHIpeworCiAgIE9NTklP
UkJfQVNTRVJUKFB5RXJyX09jY3VycmVkKCkpOwogCi0gIFB5T2JqZWN0ICpldHlwZSwgKmV2YWx1
ZSwgKmV0cmFjZWJhY2s7Ci0gIFB5T2JqZWN0ICplcmVwb0lkID0gMDsKLSAgUHlFcnJfRmV0Y2go
JmV0eXBlLCAmZXZhbHVlLCAmZXRyYWNlYmFjayk7Ci0gIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlv
bigmZXR5cGUsICZldmFsdWUsICZldHJhY2ViYWNrKTsKKyAgUHlFcnJfRmV0Y2goZXR5cGVQdHIs
IGV2YWx1ZVB0ciwgZXRyYWNlYmFja1B0cik7CisgIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbihl
dHlwZVB0ciwgZXZhbHVlUHRyLCBldHJhY2ViYWNrUHRyKTsKKworICBQeU9iamVjdCogZXJlcG9J
ZCA9ICplcmVwb0lkUHRyOworICBQeU9iamVjdCogZXR5cGUgPSAqZXR5cGVQdHI7CisgIFB5T2Jq
ZWN0KiBldHJhY2ViYWNrID0gKmV0cmFjZWJhY2tQdHI7CisgIFB5T2JqZWN0KiBldmFsdWUgPSAq
ZXZhbHVlUHRyOworCiAgIE9NTklPUkJfQVNTRVJUKGV0eXBlKTsKIAogICBpZiAoZXZhbHVlKQot
ICAgIGVyZXBvSWQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGV2YWx1ZSwgKGNoYXIqKSJfTlBf
UmVwb3NpdG9yeUlkIik7CisJICBlcmVwb0lkID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhldmFs
dWUsIChjaGFyKikiX05QX1JlcG9zaXRvcnlJZCIpOwogCiAgIGlmICghKGVyZXBvSWQgJiYgUHlT
dHJpbmdfQ2hlY2soZXJlcG9JZCkpKSB7Ci0gICAgUHlfWERFQ1JFRihlcmVwb0lkKTsKLSAgICBp
ZiAob21uaU9SQjo6dHJhY2UoMSkpIHsKLSAgICAgIHsKLQlvbW5pT1JCOjpsb2dnZXIgbDsKLQls
IDw8ICJDYXVnaHQgYW4gdW5leHBlY3RlZCBQeXRob24gZXhjZXB0aW9uIGR1cmluZyB1cC1jYWxs
LlxuIjsKLSAgICAgIH0KLSAgICAgIFB5RXJyX1Jlc3RvcmUoZXR5cGUsIGV2YWx1ZSwgZXRyYWNl
YmFjayk7Ci0gICAgICBQeUVycl9QcmludCgpOwotICAgIH0KLSAgICBPTU5JT1JCX1RIUk9XKFVO
S05PV04sIFVOS05PV05fUHl0aG9uRXhjZXB0aW9uLAotCQkgIENPUkJBOjpDT01QTEVURURfTUFZ
QkUpOworCSAgUHlFcnJfQ2xlYXIoKTsKKwkgIFB5X1hERUNSRUYoZXJlcG9JZCk7CisJICBpZiAo
b21uaU9SQjo6dHJhY2UoMSkpIHsKKwkJICB7CisJCQkgIG9tbmlPUkI6OmxvZ2dlciBsOworCQkJ
ICBsIDw8ICJDYXVnaHQgYW4gdW5leHBlY3RlZCBQeXRob24gZXhjZXB0aW9uIGR1cmluZyB1cC1j
YWxsLlxuIjsKKwkJICB9CisJCSAgUHlFcnJfUmVzdG9yZShldHlwZSwgZXZhbHVlLCBldHJhY2Vi
YWNrKTsKKwkJICBQeUVycl9QcmludCgpOworCSAgfQorCSAgT01OSU9SQl9USFJPVyhVTktOT1dO
LCBVTktOT1dOX1B5dGhvbkV4Y2VwdGlvbiwKKwkJCQkJQ09SQkE6OkNPTVBMRVRFRF9NQVlCRSk7
CiAgIH0KIAotICAvLyBJcyBpdCBhIExPQ0FUSU9OX0ZPUldBUkQ/Ci0gIGlmIChvbW5pOjpzdHJN
YXRjaChQeVN0cmluZ19BU19TVFJJTkcoZXJlcG9JZCksCi0JCSAgICAgIm9tbmlPUkIuTE9DQVRJ
T05fRk9SV0FSRCIpKSB7Ci0gICAgUHlfREVDUkVGKGVyZXBvSWQpOyBQeV9ERUNSRUYoZXR5cGUp
OyBQeV9YREVDUkVGKGV0cmFjZWJhY2spOwotICAgIG9tbmlQeTo6aGFuZGxlTG9jYXRpb25Gb3J3
YXJkKGV2YWx1ZSk7Ci0gIH0KK30KKyAgCit2b2lkIG9tbmlQeTo6aGFuZGxlTG9jYXRpb25Gb3J3
YXJkRXhjZXB0aW9uKFB5T2JqZWN0KiBlcmVwb0lkLCBQeU9iamVjdCogZXR5cGUsIFB5T2JqZWN0
KiBldHJhY2ViYWNrLCBQeU9iamVjdCogZXZhbHVlKXsKKwkvLyBJcyBpdCBhIExPQ0FUSU9OX0ZP
UldBUkQ/CisJaWYgKG9tbmk6OnN0ck1hdGNoKFB5U3RyaW5nX0FTX1NUUklORyhlcmVwb0lkKSwK
KwkJCQkJICAgIm9tbmlPUkIuTE9DQVRJT05fRk9SV0FSRCIpKSB7CisJCVB5X0RFQ1JFRihlcmVw
b0lkKTsgUHlfREVDUkVGKGV0eXBlKTsgUHlfWERFQ1JFRihldHJhY2ViYWNrKTsKKwkJb21uaVB5
OjpoYW5kbGVMb2NhdGlvbkZvcndhcmQoZXZhbHVlKTsKKwl9CisJCisJLy8gU3lzdGVtIGV4Y2Vw
dGlvbgorCW9tbmlQeTo6cHJvZHVjZVN5c3RlbUV4Y2VwdGlvbihldmFsdWUsIGVyZXBvSWQsIGV0
eXBlLCBldHJhY2ViYWNrKTsKK30KKwordm9pZAorb21uaVB5OjpoYW5kbGVQeXRob25FeGNlcHRp
b24oKQoreworICBQeU9iamVjdCAqZXR5cGUsICpldmFsdWUsICpldHJhY2ViYWNrOworICBQeU9i
amVjdCAqZXJlcG9JZCA9IDA7CisKKyAgaGFuZGxlVXNlclB5dGhvbkV4Y2VwdGlvbigmZXJlcG9J
ZCwgJmV0eXBlLCAmZXRyYWNlYmFjaywgJmV2YWx1ZSk7CiAKLSAgLy8gU3lzdGVtIGV4Y2VwdGlv
bgotICBvbW5pUHk6OnByb2R1Y2VTeXN0ZW1FeGNlcHRpb24oZXZhbHVlLCBlcmVwb0lkLCBldHlw
ZSwgZXRyYWNlYmFjayk7CisgIGhhbmRsZUxvY2F0aW9uRm9yd2FyZEV4Y2VwdGlvbihlcmVwb0lk
LCBldHlwZSwgZXRyYWNlYmFjaywgZXZhbHVlKTsKIH0KIAogCmRpZmYgLXUgbW9kdWxlcy5vbGQv
cHlMb2NhbE9iamVjdHMuY2MgbW9kdWxlcy9weUxvY2FsT2JqZWN0cy5jYwotLS0gbW9kdWxlcy5v
bGQvcHlMb2NhbE9iamVjdHMuY2MJMjAwNS0xMS0wOSAxNTozMzozMi4wMDAwMDAwMDAgKzAzMDAK
KysrIG1vZHVsZXMvcHlMb2NhbE9iamVjdHMuY2MJMjAwOC0xMC0wMiAxNzoyMzoxNi4wMDAwMDAw
MDAgKzA0MDAKQEAgLTQxMCwyOCArNDEwLDggQEAKICAgICAvLyBBbiBleGNlcHRpb24gb2Ygc29t
ZSBzb3J0IHdhcyB0aHJvd24KICAgICBQeU9iamVjdCAqZXR5cGUsICpldmFsdWUsICpldHJhY2Vi
YWNrOwogICAgIFB5T2JqZWN0ICplcmVwb0lkID0gMDsKLSAgICBQeUVycl9GZXRjaCgmZXR5cGUs
ICZldmFsdWUsICZldHJhY2ViYWNrKTsKLSAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJmV0
eXBlLCAmZXZhbHVlLCAmZXRyYWNlYmFjayk7Ci0gICAgT01OSU9SQl9BU1NFUlQoZXR5cGUpOwot
Ci0gICAgaWYgKGV2YWx1ZSkKLSAgICAgIGVyZXBvSWQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5n
KGV2YWx1ZSwgKGNoYXIqKSJfTlBfUmVwb3NpdG9yeUlkIik7Ci0KLSAgICBpZiAoIShlcmVwb0lk
ICYmIFB5U3RyaW5nX0NoZWNrKGVyZXBvSWQpKSkgewotICAgICAgUHlfWERFQ1JFRihlcmVwb0lk
KTsKLSAgICAgIGlmIChvbW5pT1JCOjp0cmFjZSgxKSkgewotCXsKLQkgIG9tbmlPUkI6OmxvZ2dl
ciBsOwotCSAgbCA8PCAiQ2F1Z2h0IGFuIHVuZXhwZWN0ZWQgUHl0aG9uIGV4Y2VwdGlvbiBkdXJp
bmcgdXAtY2FsbC5cbiI7Ci0JfQotCVB5RXJyX1Jlc3RvcmUoZXR5cGUsIGV2YWx1ZSwgZXRyYWNl
YmFjayk7Ci0JUHlFcnJfUHJpbnQoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBQ
eV9ERUNSRUYoZXR5cGUpOyBQeV9YREVDUkVGKGV2YWx1ZSk7IFB5X1hERUNSRUYoZXRyYWNlYmFj
ayk7Ci0gICAgICB9Ci0gICAgICBPTU5JT1JCX1RIUk9XKFVOS05PV04sIFVOS05PV05fUHl0aG9u
RXhjZXB0aW9uLCBDT1JCQTo6Q09NUExFVEVEX01BWUJFKTsKLSAgICB9CisKKyAgCWhhbmRsZVVz
ZXJQeXRob25FeGNlcHRpb24oJmVyZXBvSWQsICZldHlwZSwgJmV2YWx1ZSwgJmV0cmFjZWJhY2sp
OwogCiAgICAgaWYgKG9tbmk6OnN0ck1hdGNoKFB5U3RyaW5nX0FTX1NUUklORyhlcmVwb0lkKSwK
IAkJICAgICAgIFBvcnRhYmxlU2VydmVyOjpGb3J3YXJkUmVxdWVzdDo6X1BEX3JlcG9JZCkpIHsK
QEAgLTQ1NSwxNSArNDM1LDcgQEAKICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBJcyBpdCBhIExP
Q0FUSU9OX0ZPUldBUkQ/Ci0gICAgaWYgKG9tbmk6OnN0ck1hdGNoKFB5U3RyaW5nX0FTX1NUUklO
RyhlcmVwb0lkKSwKLQkJICAgICAgICJvbW5pT1JCLkxPQ0FUSU9OX0ZPUldBUkQiKSkgewotICAg
ICAgUHlfREVDUkVGKGVyZXBvSWQpOyBQeV9ERUNSRUYoZXR5cGUpOyBQeV9YREVDUkVGKGV0cmFj
ZWJhY2spOwotICAgICAgb21uaVB5OjpoYW5kbGVMb2NhdGlvbkZvcndhcmQoZXZhbHVlKTsKLSAg
ICB9Ci0KLSAgICAvLyBTeXN0ZW0gZXhjZXB0aW9uIG9yIHVua25vd24gdXNlciBleGNlcHRpb24K
LSAgICBvbW5pUHk6OnByb2R1Y2VTeXN0ZW1FeGNlcHRpb24oZXZhbHVlLCBlcmVwb0lkLCBldHlw
ZSwgZXRyYWNlYmFjayk7CisJaGFuZGxlTG9jYXRpb25Gb3J3YXJkRXhjZXB0aW9uKGVyZXBvSWQs
IGV0eXBlLCBldHJhY2ViYWNrLCBldmFsdWUpOwogICB9CiAgIE9NTklPUkJfQVNTRVJUKDApOyAv
LyBOZXZlciByZWFjaCBoZXJlCiAgIHJldHVybiAwOwpAQCAtNTgyLDI4ICs1NTQsOCBAQAogICAg
IC8vIEFuIGV4Y2VwdGlvbiBvZiBzb21lIHNvcnQgd2FzIHRocm93bgogICAgIFB5T2JqZWN0ICpl
dHlwZSwgKmV2YWx1ZSwgKmV0cmFjZWJhY2s7CiAgICAgUHlPYmplY3QgKmVyZXBvSWQgPSAwOwot
ICAgIFB5RXJyX0ZldGNoKCZldHlwZSwgJmV2YWx1ZSwgJmV0cmFjZWJhY2spOwotICAgIFB5RXJy
X05vcm1hbGl6ZUV4Y2VwdGlvbigmZXR5cGUsICZldmFsdWUsICZldHJhY2ViYWNrKTsKLSAgICBP
TU5JT1JCX0FTU0VSVChldHlwZSk7Ci0KLSAgICBpZiAoZXZhbHVlKQotICAgICAgZXJlcG9JZCA9
IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZXZhbHVlLCAoY2hhciopIl9OUF9SZXBvc2l0b3J5SWQi
KTsKLQotICAgIGlmICghKGVyZXBvSWQgJiYgUHlTdHJpbmdfQ2hlY2soZXJlcG9JZCkpKSB7Ci0g
ICAgICBQeV9YREVDUkVGKGVyZXBvSWQpOwotICAgICAgaWYgKG9tbmlPUkI6OnRyYWNlKDEpKSB7
Ci0JewotCSAgb21uaU9SQjo6bG9nZ2VyIGw7Ci0JICBsIDw8ICJDYXVnaHQgYW4gdW5leHBlY3Rl
ZCBQeXRob24gZXhjZXB0aW9uIGR1cmluZyB1cC1jYWxsLlxuIjsKLQl9Ci0JUHlFcnJfUmVzdG9y
ZShldHlwZSwgZXZhbHVlLCBldHJhY2ViYWNrKTsKLQlQeUVycl9QcmludCgpOwotICAgICAgfQot
ICAgICAgZWxzZSB7Ci0JUHlfREVDUkVGKGV0eXBlKTsgUHlfWERFQ1JFRihldmFsdWUpOyBQeV9Y
REVDUkVGKGV0cmFjZWJhY2spOwotICAgICAgfQotICAgICAgT01OSU9SQl9USFJPVyhVTktOT1dO
LCBVTktOT1dOX1B5dGhvbkV4Y2VwdGlvbiwgQ09SQkE6OkNPTVBMRVRFRF9NQVlCRSk7Ci0gICAg
fQorCisJaGFuZGxlVXNlclB5dGhvbkV4Y2VwdGlvbigmZXJlcG9JZCwgJmV0eXBlLCAmZXZhbHVl
LCAmZXRyYWNlYmFjayk7CiAKICAgICBpZiAob21uaTo6c3RyTWF0Y2goUHlTdHJpbmdfQVNfU1RS
SU5HKGVyZXBvSWQpLAogCQkgICAgICAgUG9ydGFibGVTZXJ2ZXI6OkZvcndhcmRSZXF1ZXN0Ojpf
UERfcmVwb0lkKSkgewpAQCAtNjI2LDE1ICs1NzgsOCBAQAogCQkgICAgICBDT1JCQTo6Q09NUExF
VEVEX05PKTsKICAgICAgIH0KICAgICB9Ci0gICAgLy8gSXMgaXQgYSBMT0NBVElPTl9GT1JXQVJE
PwotICAgIGlmIChvbW5pOjpzdHJNYXRjaChQeVN0cmluZ19BU19TVFJJTkcoZXJlcG9JZCksCi0J
CSAgICAgICAib21uaU9SQi5MT0NBVElPTl9GT1JXQVJEIikpIHsKLSAgICAgIFB5X0RFQ1JFRihl
cmVwb0lkKTsgUHlfREVDUkVGKGV0eXBlKTsgUHlfWERFQ1JFRihldHJhY2ViYWNrKTsKLSAgICAg
IG9tbmlQeTo6aGFuZGxlTG9jYXRpb25Gb3J3YXJkKGV2YWx1ZSk7Ci0gICAgfQogCi0gICAgLy8g
U3lzdGVtIGV4Y2VwdGlvbiBvciB1bmtub3duIHVzZXIgZXhjZXB0aW9uCi0gICAgb21uaVB5Ojpw
cm9kdWNlU3lzdGVtRXhjZXB0aW9uKGV2YWx1ZSwgZXJlcG9JZCwgZXR5cGUsIGV0cmFjZWJhY2sp
OworCWhhbmRsZUxvY2F0aW9uRm9yd2FyZEV4Y2VwdGlvbihlcmVwb0lkLCBldHlwZSwgZXRyYWNl
YmFjaywgZXZhbHVlKTsKICAgfQogICBPTU5JT1JCX0FTU0VSVCgwKTsgLy8gTmV2ZXIgcmVhY2gg
aGVyZQogICByZXR1cm4gMDsKZGlmZiAtdSBtb2R1bGVzLm9sZC9weVNlcnZhbnQuY2MgbW9kdWxl
cy9weVNlcnZhbnQuY2MKLS0tIG1vZHVsZXMub2xkL3B5U2VydmFudC5jYwkyMDA4LTAyLTAxIDE5
OjI5OjE3LjAwMDAwMDAwMCArMDMwMAorKysgbW9kdWxlcy9weVNlcnZhbnQuY2MJMjAwOC0xMC0w
MiAxNzoyMjoxOS4wMDAwMDAwMDAgKzA0MDAKQEAgLTExMCw3ICsxMTAsNiBAQAogI2luY2x1ZGUg
PG9tbmlPUkI0L2NhbGxIYW5kbGUuaD4KICNpbmNsdWRlIDxvbW5pT1JCNC9JT1BfUy5oPgogCi0K
IC8vIEltcGxlbWVudGF0aW9uIGNsYXNzZXMgZm9yIFNlcnZhbnRNYW5hZ2VycyBhbmQgQWRhcHRl
ckFjdGl2YXRvcgogCiBjbGFzcyBQeV9TZXJ2YW50QWN0aXZhdG9yU3Z0IDoKQEAgLTU1MiwxNCAr
NTUxLDE0IEBACiAgICAgICBtZXRob2QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHB5c2VydmFu
dF8sIChjaGFyKikiX2dldF9pbnRlcmZhY2UiKTsKICAgICB9CiAgICAgaWYgKCFtZXRob2QpIHsK
LSAgICAgIGlmIChvbW5pT1JCOjp0cmFjZSgxKSkgewotCW9tbmlPUkI6OmxvZ2dlciBsOwotCWwg
PDwgIlB5dGhvbiBzZXJ2YW50IGZvciBgIiA8PCByZXBvSWRfIDw8ICInIGhhcyBubyBtZXRob2Qg
bmFtZWQgYCIKLQkgIDw8IG9wIDw8ICInLlxuIjsKLSAgICAgIH0KLSAgICAgIFB5RXJyX0NsZWFy
KCk7Ci0gICAgICBPTU5JT1JCX1RIUk9XKE5PX0lNUExFTUVOVCwgTk9fSU1QTEVNRU5UX05vUHl0
aG9uTWV0aG9kLAotCQkgICAgQ09SQkE6OkNPTVBMRVRFRF9OTyk7CisJCWlmIChvbW5pT1JCOjp0
cmFjZSgxKSkgeworCQkJb21uaU9SQjo6bG9nZ2VyIGw7CisJCQlsIDw8ICJQeXRob24gc2VydmFu
dCBmb3IgYCIgPDwgcmVwb0lkXyA8PCAiJyBoYXMgbm8gbWV0aG9kIG5hbWVkIGAiCisJCQkgIDw8
IG9wIDw8ICInLlxuIjsKKwkJfQorCQlQeUVycl9DbGVhcigpOworCQlPTU5JT1JCX1RIUk9XKE5P
X0lNUExFTUVOVCwgTk9fSU1QTEVNRU5UX05vUHl0aG9uTWV0aG9kLAorCQkJCQkgIENPUkJBOjpD
T01QTEVURURfTk8pOwogICAgIH0KICAgfQogCkBAIC01NzEsMzMgKzU3MCwxMyBAQAogICAgIC8v
IE5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duLiBTZXQgdGhlIHJldHVybiB2YWx1ZQogICAgIHB5Y2Qt
PnNldEFuZFZhbGlkYXRlUmV0dXJuZWRWYWx1ZXMocmVzdWx0KTsKICAgfQorCiAgIGVsc2Ugewog
ICAgIC8vIEFuIGV4Y2VwdGlvbiBvZiBzb21lIHNvcnQgd2FzIHRocm93bgogICAgIFB5T2JqZWN0
ICpldHlwZSwgKmV2YWx1ZSwgKmV0cmFjZWJhY2s7CiAgICAgUHlPYmplY3QgKmVyZXBvSWQgPSAw
OwotICAgIFB5RXJyX0ZldGNoKCZldHlwZSwgJmV2YWx1ZSwgJmV0cmFjZWJhY2spOwotICAgIFB5
RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbigmZXR5cGUsICZldmFsdWUsICZldHJhY2ViYWNrKTsKLSAg
ICBPTU5JT1JCX0FTU0VSVChldHlwZSk7Ci0KLSAgICBpZiAoZXZhbHVlKQotICAgICAgZXJlcG9J
ZCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZXZhbHVlLCAoY2hhciopIl9OUF9SZXBvc2l0b3J5
SWQiKTsKLQotICAgIGlmICghKGVyZXBvSWQgJiYgUHlTdHJpbmdfQ2hlY2soZXJlcG9JZCkpKSB7
Ci0gICAgICBQeV9YREVDUkVGKGVyZXBvSWQpOwotICAgICAgaWYgKG9tbmlPUkI6OnRyYWNlKDEp
KSB7Ci0JewotCSAgb21uaU9SQjo6bG9nZ2VyIGw7Ci0JICBsIDw8ICJDYXVnaHQgYW4gdW5leHBl
Y3RlZCBQeXRob24gZXhjZXB0aW9uIGR1cmluZyB1cC1jYWxsLlxuIjsKLQl9Ci0JUHlFcnJfUmVz
dG9yZShldHlwZSwgZXZhbHVlLCBldHJhY2ViYWNrKTsKLQlQeUVycl9QcmludCgpOwotICAgICAg
fQotICAgICAgZWxzZSB7Ci0gICAgICAgIFB5X0RFQ1JFRihldHlwZSk7IFB5X1hERUNSRUYoZXZh
bHVlKTsgUHlfWERFQ1JFRihldHJhY2ViYWNrKTsKLSAgICAgIH0KLSAgICAgIE9NTklPUkJfVEhS
T1coVU5LTk9XTiwgVU5LTk9XTl9QeXRob25FeGNlcHRpb24sIENPUkJBOjpDT01QTEVURURfTUFZ
QkUpOwotICAgIH0KIAorCWhhbmRsZVVzZXJQeXRob25FeGNlcHRpb24oJmVyZXBvSWQsICZldHlw
ZSwgJmV2YWx1ZSwgJmV0cmFjZWJhY2spOwogICAgIFB5T2JqZWN0KiBleGNfZCA9IHB5Y2QtPmV4
Y19kXzsKIAogICAgIC8vIElzIGl0IGEgdXNlciBleGNlcHRpb24/CkBAIC02MDcsMjEgKzU4Niwx
MiBAQAogICAgICAgUHlPYmplY3QqIGVkZXNjID0gUHlEaWN0X0dldEl0ZW0oZXhjX2QsIGVyZXBv
SWQpOwogCiAgICAgICBpZiAoZWRlc2MpIHsKLQlQeV9ERUNSRUYoZXJlcG9JZCk7IFB5X0RFQ1JF
RihldHlwZSk7IFB5X1hERUNSRUYoZXRyYWNlYmFjayk7Ci0JUHlVc2VyRXhjZXB0aW9uIGV4KGVk
ZXNjLCBldmFsdWUsIENPUkJBOjpDT01QTEVURURfTUFZQkUpOwotCWV4Ll9yYWlzZSgpOworCQkg
IFB5X0RFQ1JFRihlcmVwb0lkKTsgUHlfREVDUkVGKGV0eXBlKTsgUHlfWERFQ1JFRihldHJhY2Vi
YWNrKTsKKwkJICBQeVVzZXJFeGNlcHRpb24gZXgoZWRlc2MsIGV2YWx1ZSwgQ09SQkE6OkNPTVBM
RVRFRF9NQVlCRSk7CisJCSAgZXguX3JhaXNlKCk7CiAgICAgICB9CiAgICAgfQotCi0gICAgLy8g
SXMgaXQgYSBMT0NBVElPTl9GT1JXQVJEPwotICAgIGlmIChvbW5pOjpzdHJNYXRjaChQeVN0cmlu
Z19BU19TVFJJTkcoZXJlcG9JZCksCi0JCSAgICAgICAib21uaU9SQi5MT0NBVElPTl9GT1JXQVJE
IikpIHsKLSAgICAgIFB5X0RFQ1JFRihlcmVwb0lkKTsgUHlfREVDUkVGKGV0eXBlKTsgUHlfWERF
Q1JFRihldHJhY2ViYWNrKTsKLSAgICAgIG9tbmlQeTo6aGFuZGxlTG9jYXRpb25Gb3J3YXJkKGV2
YWx1ZSk7Ci0gICAgfQotCi0gICAgLy8gU3lzdGVtIGV4Y2VwdGlvbiBvciB1bmtub3duIHVzZXIg
ZXhjZXB0aW9uCi0gICAgb21uaVB5Ojpwcm9kdWNlU3lzdGVtRXhjZXB0aW9uKGV2YWx1ZSwgZXJl
cG9JZCwgZXR5cGUsIGV0cmFjZWJhY2spOworCWhhbmRsZUxvY2F0aW9uRm9yd2FyZEV4Y2VwdGlv
bihlcmVwb0lkLCBldHlwZSwgZXRyYWNlYmFjaywgZXZhbHVlKTsKICAgfQogfQogCkBAIC03NDMs
NTEgKzcxMywyMyBAQAogICAgIC8vIFRoZSBjYWxsIHJhaXNlZCBhIFB5dGhvbiBleGNlcHRpb24K
ICAgICBQeU9iamVjdCAqZXR5cGUsICpldmFsdWUsICpldHJhY2ViYWNrOwogICAgIFB5T2JqZWN0
ICplcmVwb0lkID0gMDsKLSAgICBQeUVycl9GZXRjaCgmZXR5cGUsICZldmFsdWUsICZldHJhY2Vi
YWNrKTsKLSAgICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb24oJmV0eXBlLCAmZXZhbHVlLCAmZXRy
YWNlYmFjayk7Ci0gICAgT01OSU9SQl9BU1NFUlQoZXR5cGUpOwogCi0gICAgaWYgKGV2YWx1ZSkK
LSAgICAgIGVyZXBvSWQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGV2YWx1ZSwgKGNoYXIqKSJf
TlBfUmVwb3NpdG9yeUlkIik7Ci0KLSAgICBpZiAoIShlcmVwb0lkICYmIFB5U3RyaW5nX0NoZWNr
KGVyZXBvSWQpKSkgewotICAgICAgUHlfWERFQ1JFRihlcmVwb0lkKTsKLSAgICAgIGlmIChvbW5p
T1JCOjp0cmFjZSgxKSkgewotCXsKLQkgIG9tbmlPUkI6OmxvZ2dlciBsOwotCSAgbCA8PCAiQ2F1
Z2h0IGFuIHVuZXhwZWN0ZWQgUHl0aG9uIGV4Y2VwdGlvbiBkdXJpbmcgdXAtY2FsbC5cbiI7Ci0J
fQotCVB5RXJyX1Jlc3RvcmUoZXR5cGUsIGV2YWx1ZSwgZXRyYWNlYmFjayk7Ci0JUHlFcnJfUHJp
bnQoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBQeV9ERUNSRUYoZXR5cGUpOyBQ
eV9YREVDUkVGKGV2YWx1ZSk7IFB5X1hERUNSRUYoZXRyYWNlYmFjayk7Ci0gICAgICB9Ci0gICAg
ICBPTU5JT1JCX1RIUk9XKFVOS05PV04sIFVOS05PV05fUHl0aG9uRXhjZXB0aW9uLCBDT1JCQTo6
Q09NUExFVEVEX01BWUJFKTsKLSAgICB9CisgIAloYW5kbGVVc2VyUHl0aG9uRXhjZXB0aW9uKCZl
cmVwb0lkLCAmZXR5cGUsICZldmFsdWUsICZldHJhY2ViYWNrKTsKIAogICAgIC8vIElzIGl0IGEg
dXNlciBleGNlcHRpb24/CiAgICAgaWYgKGV4Y19kICE9IFB5X05vbmUpIHsKICAgICAgIE9NTklP
UkJfQVNTRVJUKFB5RGljdF9DaGVjayhleGNfZCkpOwogCiAgICAgICBQeU9iamVjdCogZWRlc2Mg
PSBQeURpY3RfR2V0SXRlbShleGNfZCwgZXJlcG9JZCk7Ci0KKwkgIAogICAgICAgaWYgKGVkZXNj
KSB7Ci0JUHlfREVDUkVGKGVyZXBvSWQpOyBQeV9ERUNSRUYoZXR5cGUpOyBQeV9YREVDUkVGKGV0
cmFjZWJhY2spOwotCVB5VXNlckV4Y2VwdGlvbiBleChlZGVzYywgZXZhbHVlLCBDT1JCQTo6Q09N
UExFVEVEX01BWUJFKTsKLQlleC5fcmFpc2UoKTsKKwkJICBQeV9ERUNSRUYoZXJlcG9JZCk7IFB5
X0RFQ1JFRihldHlwZSk7IFB5X1hERUNSRUYoZXRyYWNlYmFjayk7CisJCSAgUHlVc2VyRXhjZXB0
aW9uIGV4KGVkZXNjLCBldmFsdWUsIENPUkJBOjpDT01QTEVURURfTUFZQkUpOworCQkgIGV4Ll9y
YWlzZSgpOwogICAgICAgfQogICAgIH0KIAotICAgIC8vIElzIGl0IGEgTE9DQVRJT05fRk9SV0FS
RD8KLSAgICBpZiAob21uaTo6c3RyTWF0Y2goUHlTdHJpbmdfQVNfU1RSSU5HKGVyZXBvSWQpLAot
CQkgICAgICAgIm9tbmlPUkIuTE9DQVRJT05fRk9SV0FSRCIpKSB7Ci0gICAgICBQeV9ERUNSRUYo
ZXJlcG9JZCk7IFB5X0RFQ1JFRihldHlwZSk7IFB5X1hERUNSRUYoZXRyYWNlYmFjayk7Ci0gICAg
ICBvbW5pUHk6OmhhbmRsZUxvY2F0aW9uRm9yd2FyZChldmFsdWUpOwotICAgIH0KLQotICAgIC8v
IFN5c3RlbSBleGNlcHRpb24gb3IgdW5rbm93biB1c2VyIGV4Y2VwdGlvbgotICAgIG9tbmlQeTo6
cHJvZHVjZVN5c3RlbUV4Y2VwdGlvbihldmFsdWUsIGVyZXBvSWQsIGV0eXBlLCBldHJhY2ViYWNr
KTsKKwloYW5kbGVMb2NhdGlvbkZvcndhcmRFeGNlcHRpb24oZXJlcG9JZCwgZXR5cGUsIGV0cmFj
ZWJhY2ssIGV2YWx1ZSk7CiAgIH0KIH0KIApDb21tb24gc3ViZGlyZWN0b3JpZXM6IG1vZHVsZXMu
b2xkL3NzbFRQIGFuZCBtb2R1bGVzL3NzbFRQCg==
------=_Part_2565_21218881.1222955520804
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
omniORB-dev mailing list
[email protected]
http://www.omniorb-support.com/mailman/listinfo/omniorb-dev
------=_Part_2565_21218881.1222955520804--