[python-sybase] FreeTDS + Sybase Module = MS SQL 2000

Kevin Jacobs jacobs at penguin.theopalgroup.com
Wed, 10 Jul 2002 11:15:04 -0400 (EDT)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--416156269-1252427600-1026314104=:15098
Content-Type: TEXT/PLAIN; charset=US-ASCII

On 10 Jul 2002, Dave Cole wrote:
> Thanks for putting the time into getting it to work.  With one thing
> or another I have not been able to spend enough time on the Sybase
> module of late.

Attached is the diff to your Sybase module -- it includes mostly cosmetic
changes, but overall, there isn't anything major.  It does need to build
against the latest FreeTDS CVS, since their last release is total crap.

Here is the current issue I'm working on.  My app is single-threaded, so I'm
a little confused as to why this happens:

Traceback:
      Traceback (most recent call last):
        File "./Server/connection_controller.py", line 446, in process_cmd
        File "./Server/connection_controller.py", line 506, in cmd_report
        File "/home/jacobs/projects/CGF/TradeSP/Reports/actualsummary.py", line 201, in generate
          D_Deductions = hash3( ts_queries.getDeductionsByCustomer(s, None, operCustomers, fy=fy) )
        File "./Lib/dblib.py", line 666, in __new__
        File "/home/jacobs/projects/CGF/Lib/ts_queries.py", line 3069, in run
          Deductions = dbcon.quickQuery(sql)
        File "./Lib/dblib.py", line 162, in quickQuery
        File "/usr/lib/python2.3/site-packages/Sybase.py", line 321, in close
          self._unlock()
        File "/usr/lib/python2.3/site-packages/Sybase.py", line 259, in _unlock
          self._owner._lock.release()
        File "/usr/lib/python2.3/threading.py", line 101, in release
          assert self.__owner is me, "release() of un-acquire()d lock"
      AssertionError: release() of un-acquire()d lock

Thanks,
-Kevin

--
Kevin Jacobs
The OPAL Group - Enterprise Systems Architect
Voice: (216) 986-0710 x 19         E-mail: jacobs@theopalgroup.com
Fax:   (216) 986-0714              WWW:    http://www.theopalgroup.com

--416156269-1252427600-1026314104=:15098
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=diff
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.44.0207101115040.15098@penguin.theopalgroup.com>
Content-Description: 
Content-Disposition: attachment; filename=diff

ZGlmZiAtdXIgc3liYXNlLTAuMzVwcmUxL1N5YmFzZS5weSBzeWJhc2Uta2Jq
L1N5YmFzZS5weQ0KLS0tIHN5YmFzZS0wLjM1cHJlMS9TeWJhc2UucHkJU3Vu
IEFwciAyMSAwMjowMDowMyAyMDAyDQorKysgc3liYXNlLWtiai9TeWJhc2Uu
cHkJVHVlIEp1bCAgOSAxNzo0OTo0MSAyMDAyDQpAQCAtMTM2LDcgKzEzNiw3
IEBADQogICAgIHJhaXNlIERhdGFiYXNlRXJyb3IoX2ZtdF9jbGllbnQobXNn
KSkNCiANCiBkZWYgX3NlcnZlcm1zZ19jYihjdHgsIGNvbm4sIG1zZyk6DQot
ICAgIGlmIG1zZy5tc2dudW1iZXIgbm90IGluICg1NzAxLCk6DQorICAgIGlm
IG1zZy5tc2dudW1iZXIgbm90IGluICg1NzAxLDU3MDMpOg0KICAgICAgICAg
cmFpc2UgRGF0YWJhc2VFcnJvcihfZm10X3NlcnZlcihtc2cpKQ0KIA0KIGRl
ZiBfcm93X2JpbmQoY21kLCBjb3VudCA9IDEpOg0KT25seSBpbiBzeWJhc2Ut
a2JqOiBTeWJhc2UucHljDQpkaWZmIC11ciBzeWJhc2UtMC4zNXByZTEvYmxr
LmMgc3liYXNlLWtiai9ibGsuYw0KLS0tIHN5YmFzZS0wLjM1cHJlMS9ibGsu
YwlTdW4gQXByIDIxIDAyOjE5OjAwIDIwMDINCisrKyBzeWJhc2Uta2JqL2Js
ay5jCVdlZCBKdWwgMTAgMDg6MjE6MjggMjAwMg0KQEAgLTYzMCw3ICs2MzAs
NyBAQA0KICAgICBDU19CTEtERVNDICpibGs7DQogI2VuZGlmDQogDQotICAg
IHNlbGYgPSBQeU9iamVjdF9ORVcoQ1NfQkxLREVTQ09iaiwgJkNTX0JMS0RF
U0NUeXBlKTsNCisgICAgc2VsZiA9IFB5T2JqZWN0X05ldyhDU19CTEtERVND
T2JqLCAmQ1NfQkxLREVTQ1R5cGUpOw0KICAgICBpZiAoc2VsZiA9PSBOVUxM
KQ0KIAlyZXR1cm4gTlVMTDsNCiANCkBAIC02OTQsNyArNjk0LDcgQEANCiAg
ICAgfQ0KICNlbmRpZg0KICAgICBQeV9YREVDUkVGKHNlbGYtPmNvbm4pOw0K
LSAgICBQeU1lbV9ERUwoc2VsZik7DQorICAgIFB5T2JqZWN0X0RlbChzZWxm
KTsNCiB9DQogDQogI2RlZmluZSBPRkZTRVQoeCkgb2Zmc2V0b2YoQ1NfQkxL
REVTQ09iaiwgeCkNCk9ubHkgaW4gc3liYXNlLWtiajogYnVpbGQNCmRpZmYg
LXVyIHN5YmFzZS0wLjM1cHJlMS9jbWQuYyBzeWJhc2Uta2JqL2NtZC5jDQot
LS0gc3liYXNlLTAuMzVwcmUxL2NtZC5jCVN1biBBcHIgMjEgMDE6NTg6NTEg
MjAwMg0KKysrIHN5YmFzZS1rYmovY21kLmMJV2VkIEp1bCAxMCAwOTozMzoz
MyAyMDAyDQpAQCAtMTIwNSw3ICsxMjA1LDcgQEANCiAgICAgQ1NfUkVUQ09E
RSBzdGF0dXM7DQogICAgIENTX0NPTU1BTkQgKmNtZDsNCiANCi0gICAgc2Vs
ZiA9IFB5T2JqZWN0X05FVyhDU19DT01NQU5ET2JqLCAmQ1NfQ09NTUFORFR5
cGUpOw0KKyAgICBzZWxmID0gUHlPYmplY3RfTmV3KENTX0NPTU1BTkRPYmos
ICZDU19DT01NQU5EVHlwZSk7DQogICAgIGlmIChzZWxmID09IE5VTEwpDQog
CXJldHVybiBOVUxMOw0KICAgICBTWV9MRUFLX1JFRyhzZWxmKTsNCkBAIC0x
MjUxLDcgKzEyNTEsNyBAQA0KIHsNCiAgICAgQ1NfQ09NTUFORE9iaiAqc2Vs
ZjsNCiANCi0gICAgc2VsZiA9IFB5T2JqZWN0X05FVyhDU19DT01NQU5ET2Jq
LCAmQ1NfQ09NTUFORFR5cGUpOw0KKyAgICBzZWxmID0gUHlPYmplY3RfTmV3
KENTX0NPTU1BTkRPYmosICZDU19DT01NQU5EVHlwZSk7DQogICAgIGlmIChz
ZWxmID09IE5VTEwpDQogCXJldHVybiBOVUxMOw0KIA0KQEAgLTEyODIsNyAr
MTI4Miw3IEBADQogCQkgICAgICBzZWxmLT5zZXJpYWwsIHZhbHVlX3N0cihW
QUxfU1RBVFVTLCBzdGF0dXMpKTsNCiAgICAgfQ0KICAgICBQeV9YREVDUkVG
KHNlbGYtPmNvbm4pOw0KLSAgICBQeU1lbV9ERUwoc2VsZik7DQorICAgIFB5
T2JqZWN0X0RlbChzZWxmKTsNCiB9DQogDQogI2RlZmluZSBPRkZTRVQoeCkg
b2Zmc2V0b2YoQ1NfQ09NTUFORE9iaiwgeCkNCmRpZmYgLXVyIHN5YmFzZS0w
LjM1cHJlMS9jb25uLmMgc3liYXNlLWtiai9jb25uLmMNCi0tLSBzeWJhc2Ut
MC4zNXByZTEvY29ubi5jCVN1biBBcHIgMjEgMDE6NTg6NTEgMjAwMg0KKysr
IHN5YmFzZS1rYmovY29ubi5jCVdlZCBKdWwgMTAgMDg6MjE6MjcgMjAwMg0K
QEAgLTEyMTcsNyArMTIxNyw3IEBADQogICAgIENTX1JFVENPREUgc3RhdHVz
Ow0KICAgICBDU19DT05ORUNUSU9OICpjb25uOw0KIA0KLSAgICBzZWxmID0g
UHlPYmplY3RfTkVXKENTX0NPTk5FQ1RJT05PYmosICZDU19DT05ORUNUSU9O
VHlwZSk7DQorICAgIHNlbGYgPSBQeU9iamVjdF9OZXcoQ1NfQ09OTkVDVElP
Tk9iaiwgJkNTX0NPTk5FQ1RJT05UeXBlKTsNCiAgICAgaWYgKHNlbGYgPT0g
TlVMTCkNCiAJcmV0dXJuIE5VTEw7DQogDQpAQCAtMTI4Miw3ICsxMjgyLDcg
QEANCiAgICAgU1lfTE9DS19GUkVFKHNlbGYpOw0KICAgICBQeV9YREVDUkVG
KHNlbGYtPmN0eCk7DQogICAgIGNvbm5fZGVsX29iamVjdChzZWxmKTsNCi0g
ICAgUHlNZW1fREVMKHNlbGYpOw0KKyAgICBQeU9iamVjdF9EZWwoc2VsZik7
DQogfQ0KIA0KICNkZWZpbmUgT0ZGKHgpIG9mZnNldG9mKENTX0NPTk5FQ1RJ
T05PYmosIHgpDQpkaWZmIC11ciBzeWJhc2UtMC4zNXByZTEvY3R4LmMgc3li
YXNlLWtiai9jdHguYw0KLS0tIHN5YmFzZS0wLjM1cHJlMS9jdHguYwlTdW4g
QXByIDIxIDAxOjU4OjUyIDIwMDINCisrKyBzeWJhc2Uta2JqL2N0eC5jCVdl
ZCBKdWwgMTAgMDg6MjE6MTYgMjAwMg0KQEAgLTEzODMsNyArMTM4Myw3IEBA
DQogICAgIENTX1JFVENPREUgc3RhdHVzOw0KICAgICBDU19DT05URVhUICpj
dHg7DQogDQotICAgIHNlbGYgPSBQeU9iamVjdF9ORVcoQ1NfQ09OVEVYVE9i
aiwgJkNTX0NPTlRFWFRUeXBlKTsNCisgICAgc2VsZiA9IFB5T2JqZWN0X05l
dyhDU19DT05URVhUT2JqLCAmQ1NfQ09OVEVYVFR5cGUpOw0KICAgICBpZiAo
c2VsZiA9PSBOVUxMKQ0KIAlyZXR1cm4gTlVMTDsNCiANCkBAIC0xNDc5LDcg
KzE0NzksNyBAQA0KICAgICBQeV9YREVDUkVGKHNlbGYtPmNsaWVudG1zZ19j
Yik7DQogICAgIGN0eF9kZWxfb2JqZWN0KHNlbGYpOw0KIA0KLSAgICBQeU1l
bV9ERUwoc2VsZik7DQorICAgIFB5T2JqZWN0X0RlbChzZWxmKTsNCiB9DQog
DQogI2RlZmluZSBPRkYoeCkgb2Zmc2V0b2YoQ1NfQ09OVEVYVE9iaiwgeCkN
CmRpZmYgLXVyIHN5YmFzZS0wLjM1cHJlMS9kYXRhYnVmLmMgc3liYXNlLWti
ai9kYXRhYnVmLmMNCi0tLSBzeWJhc2UtMC4zNXByZTEvZGF0YWJ1Zi5jCUZy
aSBGZWIgMTUgMDY6NDA6MDQgMjAwMg0KKysrIHN5YmFzZS1rYmovZGF0YWJ1
Zi5jCVdlZCBKdWwgMTAgMDk6Mzc6MjEgMjAwMg0KQEAgLTM0LDYgKzM0LDgg
QEANCiAgICAgaW50IGk7DQogDQogICAgIC8qIFhYWDogd2hlbiBGcmVlVERT
IGZpeCB0aGVpciBvZmYtYnktb25lIGVycm9yIEkgY2FuIHJlbW92ZSB0aGUg
KzEgKi8NCisgICAgLyogWFhYOiBJIHRoaW5rIGl0IG1heSBiZSBzYWZlIHRv
IHJlbW92ZSB0aGUgKzEsIHNpbmNlIHRoZSBjdXJyZW50DQorICAgICAgICAg
ICAgRnJlZVREUyBDVlMgdmVyc2lvbiBwYXNzZXMgZWxlY3RyaWMgZmVuY2Uu
ICBDYW4geW91IHRlc3QgdGhpcz8gKi8NCiAgICAgc2VsZi0+YnVmZiA9IG1h
bGxvYyhzZWxmLT5mbXQubWF4bGVuZ3RoICogc2VsZi0+Zm10LmNvdW50ICsg
MSk7DQogICAgIGlmIChzZWxmLT5idWZmID09IE5VTEwpDQogCXJldHVybiBQ
eUVycl9Ob01lbW9yeSgpOw0KQEAgLTU4LDcgKzYwLDcgQEANCiB7DQogICAg
IERhdGFCdWZPYmogKnNlbGY7DQogDQotICAgIHNlbGYgPSBQeU9iamVjdF9O
RVcoRGF0YUJ1Zk9iaiwgJkRhdGFCdWZUeXBlKTsNCisgICAgc2VsZiA9IFB5
T2JqZWN0X05ldyhEYXRhQnVmT2JqLCAmRGF0YUJ1ZlR5cGUpOw0KICAgICBp
ZiAoc2VsZiA9PSBOVUxMKQ0KIAlyZXR1cm4gTlVMTDsNCiANCkBAIC0xMjEs
NyArMTIzLDcgQEANCiAgICAgaWYgKHNlbGYtPmluZGljYXRvciAhPSBOVUxM
KQ0KIAlmcmVlKHNlbGYtPmluZGljYXRvcik7DQogDQotICAgIFB5TWVtX0RF
TChzZWxmKTsNCisgICAgUHlPYmplY3RfRGVsKHNlbGYpOw0KIH0NCiANCiAv
KiBDb2RlIHRvIGhhbmRsZSBhY2Nlc3NpbmcgRGF0YUJ1ZiBvYmplY3RzIGFz
IHNlcXVlbmNlIG9iamVjdHMgKi8NCmRpZmYgLXVyIHN5YmFzZS0wLjM1cHJl
MS9kYXRhZm10LmMgc3liYXNlLWtiai9kYXRhZm10LmMNCi0tLSBzeWJhc2Ut
MC4zNXByZTEvZGF0YWZtdC5jCUZyaSBGZWIgMTUgMDY6NDA6MDQgMjAwMg0K
KysrIHN5YmFzZS1rYmovZGF0YWZtdC5jCVdlZCBKdWwgMTAgMDk6MzQ6MTIg
MjAwMg0KQEAgLTEwNiw3ICsxMDYsNyBAQA0KIHsNCiAgICAgQ1NfREFUQUZN
VE9iaiAqc2VsZjsNCiANCi0gICAgc2VsZiA9IFB5T2JqZWN0X05FVyhDU19E
QVRBRk1UT2JqLCAmQ1NfREFUQUZNVFR5cGUpOw0KKyAgICBzZWxmID0gUHlP
YmplY3RfTmV3KENTX0RBVEFGTVRPYmosICZDU19EQVRBRk1UVHlwZSk7DQog
ICAgIGlmIChzZWxmID09IE5VTEwpDQogCXJldHVybiBOVUxMOw0KIA0KQEAg
LTEzMCw3ICsxMzAsNyBAQA0KICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUo
YXJncywgIiIpKQ0KIAlyZXR1cm4gTlVMTDsNCiANCi0gICAgc2VsZiA9IFB5
T2JqZWN0X05FVyhDU19EQVRBRk1UT2JqLCAmQ1NfREFUQUZNVFR5cGUpOw0K
KyAgICBzZWxmID0gUHlPYmplY3RfTmV3KENTX0RBVEFGTVRPYmosICZDU19E
QVRBRk1UVHlwZSk7DQogICAgIGlmIChzZWxmID09IE5VTEwpDQogCXJldHVy
biBOVUxMOw0KIA0KQEAgLTE0Nyw3ICsxNDcsNyBAQA0KIHN0YXRpYyB2b2lk
IENTX0RBVEFGTVRfZGVhbGxvYyhDU19EQVRBRk1UT2JqICpzZWxmKQ0KIHsN
CiAgICAgU1lfTEVBS19VTlJFRyhzZWxmKTsNCi0gICAgUHlNZW1fREVMKHNl
bGYpOw0KKyAgICBQeU9iamVjdF9EZWwoc2VsZik7DQogfQ0KIA0KIHZvaWQg
ZGF0YWZtdF9kZWJ1ZyhDU19EQVRBRk1UICpmbXQpDQpkaWZmIC11ciBzeWJh
c2UtMC4zNXByZTEvZGF0ZXRpbWUuYyBzeWJhc2Uta2JqL2RhdGV0aW1lLmMN
Ci0tLSBzeWJhc2UtMC4zNXByZTEvZGF0ZXRpbWUuYwlTdW4gQXByIDIxIDAx
OjU4OjUyIDIwMDINCisrKyBzeWJhc2Uta2JqL2RhdGV0aW1lLmMJV2VkIEp1
bCAxMCAwODoyMToxNSAyMDAyDQpAQCAtMTE4LDcgKzExOCw3IEBADQogew0K
ICAgICBEYXRlVGltZU9iaiAqc2VsZjsNCiANCi0gICAgc2VsZiA9IFB5T2Jq
ZWN0X05FVyhEYXRlVGltZU9iaiwgJkRhdGVUaW1lVHlwZSk7DQorICAgIHNl
bGYgPSBQeU9iamVjdF9OZXcoRGF0ZVRpbWVPYmosICZEYXRlVGltZVR5cGUp
Ow0KICAgICBpZiAoc2VsZiA9PSBOVUxMKQ0KIAlyZXR1cm4gTlVMTDsNCiAN
CkBAIC0xNjgsNyArMTY4LDcgQEANCiB7DQogICAgIFNZX0xFQUtfVU5SRUco
c2VsZik7DQogDQotICAgIFB5TWVtX0RFTChzZWxmKTsNCisgICAgUHlPYmpl
Y3RfRGVsKHNlbGYpOw0KIH0NCiANCiBzdGF0aWMgUHlPYmplY3QgKkRhdGVU
aW1lX3JlcHIoRGF0ZVRpbWVPYmogKnNlbGYpDQpkaWZmIC11ciBzeWJhc2Ut
MC4zNXByZTEvaW9kZXNjLmMgc3liYXNlLWtiai9pb2Rlc2MuYw0KLS0tIHN5
YmFzZS0wLjM1cHJlMS9pb2Rlc2MuYwlGcmkgRmViIDE1IDA2OjQwOjA0IDIw
MDINCisrKyBzeWJhc2Uta2JqL2lvZGVzYy5jCVdlZCBKdWwgMTAgMDg6MjE6
MjQgMjAwMg0KQEAgLTM0LDcgKzM0LDcgQEANCiB7DQogICAgIENTX0lPREVT
Q09iaiAqc2VsZjsNCiANCi0gICAgc2VsZiA9IFB5T2JqZWN0X05FVyhDU19J
T0RFU0NPYmosICZDU19JT0RFU0NUeXBlKTsNCisgICAgc2VsZiA9IFB5T2Jq
ZWN0X05ldyhDU19JT0RFU0NPYmosICZDU19JT0RFU0NUeXBlKTsNCiAgICAg
aWYgKHNlbGYgPT0gTlVMTCkNCiAJcmV0dXJuIE5VTEw7DQogDQpAQCAtNTcs
NyArNTcsNyBAQA0KICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywg
IiIpKQ0KIAlyZXR1cm4gTlVMTDsNCiANCi0gICAgc2VsZiA9IFB5T2JqZWN0
X05FVyhDU19JT0RFU0NPYmosICZDU19JT0RFU0NUeXBlKTsNCisgICAgc2Vs
ZiA9IFB5T2JqZWN0X05ldyhDU19JT0RFU0NPYmosICZDU19JT0RFU0NUeXBl
KTsNCiAgICAgaWYgKHNlbGYgPT0gTlVMTCkNCiAJcmV0dXJuIE5VTEw7DQog
DQpAQCAtNzEsNyArNzEsNyBAQA0KIHN0YXRpYyB2b2lkIENTX0lPREVTQ19k
ZWFsbG9jKENTX0lPREVTQ09iaiAqc2VsZikNCiB7DQogICAgIFNZX0xFQUtf
VU5SRUcoc2VsZik7DQotICAgIFB5TWVtX0RFTChzZWxmKTsNCisgICAgUHlP
YmplY3RfRGVsKHNlbGYpOw0KIH0NCiANCiAvKiBDb2RlIHRvIGFjY2VzcyBz
dHJ1Y3R1cmUgbWVtYmVycyBieSBhY2Nlc3NpbmcgYXR0cmlidXRlcyAqLw0K
ZGlmZiAtdXIgc3liYXNlLTAuMzVwcmUxL2xvY2FsZS5jIHN5YmFzZS1rYmov
bG9jYWxlLmMNCi0tLSBzeWJhc2UtMC4zNXByZTEvbG9jYWxlLmMJU3VuIEFw
ciAyMSAwMTo1ODo1MiAyMDAyDQorKysgc3liYXNlLWtiai9sb2NhbGUuYwlX
ZWQgSnVsIDEwIDA4OjIxOjE0IDIwMDINCkBAIC0zMiw3ICszMiw3IEBADQog
ICAgIENTX1JFVENPREUgc3RhdHVzOw0KICAgICBDU19MT0NBTEUgKmxvYzsN
CiANCi0gICAgc2VsZiA9IFB5T2JqZWN0X05FVyhDU19MT0NBTEVPYmosICZD
U19MT0NBTEVUeXBlKTsNCisgICAgc2VsZiA9IFB5T2JqZWN0X05ldyhDU19M
T0NBTEVPYmosICZDU19MT0NBTEVUeXBlKTsNCiAgICAgaWYgKHNlbGYgPT0g
TlVMTCkNCiAJcmV0dXJuIE5VTEw7DQogDQpAQCAtODksNyArODksNyBAQA0K
IAkJICAgICAgdmFsdWVfc3RyKFZBTF9TVEFUVVMsIHN0YXR1cykpOw0KICAg
ICB9DQogICAgIFB5X1hERUNSRUYoc2VsZi0+Y3R4KTsNCi0gICAgUHlNZW1f
REVMKHNlbGYpOw0KKyAgICBQeU9iamVjdF9EZWwoc2VsZik7DQogfQ0KIA0K
IHN0YXRpYyBpbnQgY3NkYXRlX3R5cGUoaW50IHR5cGUpDQpkaWZmIC11ciBz
eWJhc2UtMC4zNXByZTEvbW9uZXkuYyBzeWJhc2Uta2JqL21vbmV5LmMNCi0t
LSBzeWJhc2UtMC4zNXByZTEvbW9uZXkuYwlTdW4gQXByIDIxIDAxOjU4OjUy
IDIwMDINCisrKyBzeWJhc2Uta2JqL21vbmV5LmMJV2VkIEp1bCAxMCAwODoy
MToyMiAyMDAyDQpAQCAtNDksNyArNDksNyBAQA0KIHsNCiAgICAgTW9uZXlP
YmogKnNlbGY7DQogDQotICAgIHNlbGYgPSBQeU9iamVjdF9ORVcoTW9uZXlP
YmosICZNb25leVR5cGUpOw0KKyAgICBzZWxmID0gUHlPYmplY3RfTmV3KE1v
bmV5T2JqLCAmTW9uZXlUeXBlKTsNCiAgICAgaWYgKHNlbGYgPT0gTlVMTCkN
CiAJcmV0dXJuIE5VTEw7DQogDQpAQCAtMjc2LDcgKzI3Niw3IEBADQogc3Rh
dGljIHZvaWQgTW9uZXlfZGVhbGxvYyhNb25leU9iaiAqc2VsZikNCiB7DQog
ICAgIFNZX0xFQUtfVU5SRUcoc2VsZik7DQotICAgIFB5TWVtX0RFTChzZWxm
KTsNCisgICAgUHlPYmplY3RfRGVsKHNlbGYpOw0KIH0NCiANCiAjaWZkZWYg
SEFWRV9DU19DTVANCmRpZmYgLXVyIHN5YmFzZS0wLjM1cHJlMS9tc2dzLmMg
c3liYXNlLWtiai9tc2dzLmMNCi0tLSBzeWJhc2UtMC4zNXByZTEvbXNncy5j
CUZyaSBGZWIgMTUgMDY6NDA6MDQgMjAwMg0KKysrIHN5YmFzZS1rYmovbXNn
cy5jCVdlZCBKdWwgMTAgMDk6NDA6MjkgMjAwMg0KQEAgLTMwLDcgKzMwLDcg
QEANCiB7DQogICAgIENTX0NMSUVOVE1TR09iaiAqc2VsZjsNCiANCi0gICAg
c2VsZiA9IFB5T2JqZWN0X05FVyhDU19DTElFTlRNU0dPYmosICZDU19DTElF
TlRNU0dUeXBlKTsNCisgICAgc2VsZiA9IFB5T2JqZWN0X05ldyhDU19DTElF
TlRNU0dPYmosICZDU19DTElFTlRNU0dUeXBlKTsNCiAgICAgaWYgKHNlbGYg
PT0gTlVMTCkNCiAJcmV0dXJuIE5VTEw7DQogDQpAQCAtNDQsNyArNDQsNyBA
QA0KIHN0YXRpYyB2b2lkIENTX0NMSUVOVE1TR19kZWFsbG9jKENTX0NMSUVO
VE1TR09iaiAqc2VsZikNCiB7DQogICAgIFNZX0xFQUtfVU5SRUcoc2VsZik7
DQotICAgIFB5TWVtX0RFTChzZWxmKTsNCisgICAgUHlPYmplY3RfRGVsKHNl
bGYpOw0KIH0NCiANCiAjZGVmaW5lIENMSUVOVF9PRkYoeCkgb2Zmc2V0b2Yo
Q1NfQ0xJRU5UTVNHLCB4KQ0KQEAgLTEyOCw3ICsxMjgsNyBAQA0KIHsNCiAg
ICAgQ1NfU0VSVkVSTVNHT2JqICpzZWxmOw0KIA0KLSAgICBzZWxmID0gUHlP
YmplY3RfTkVXKENTX1NFUlZFUk1TR09iaiwgJkNTX1NFUlZFUk1TR1R5cGUp
Ow0KKyAgICBzZWxmID0gUHlPYmplY3RfTmV3KENTX1NFUlZFUk1TR09iaiwg
JkNTX1NFUlZFUk1TR1R5cGUpOw0KICAgICBpZiAoc2VsZiA9PSBOVUxMKQ0K
IAlyZXR1cm4gTlVMTDsNCiANCkBAIC0xNDIsNyArMTQyLDcgQEANCiBzdGF0
aWMgdm9pZCBDU19TRVJWRVJNU0dfZGVhbGxvYyhDU19TRVJWRVJNU0dPYmog
KnNlbGYpDQogew0KICAgICBTWV9MRUFLX1VOUkVHKHNlbGYpOw0KLSAgICBQ
eU1lbV9ERUwoc2VsZik7DQorICAgIFB5T2JqZWN0X0RlbChzZWxmKTsNCiB9
DQogDQogI2RlZmluZSBTRVJWX09GRih4KSBvZmZzZXRvZihDU19TRVJWRVJN
U0csIHgpDQpAQCAtMTY0LDExICsxNjQsOSBAQA0KIA0KIHN0YXRpYyBQeU9i
amVjdCAqQ1NfU0VSVkVSTVNHX2dldGF0dHIoQ1NfU0VSVkVSTVNHT2JqICpz
ZWxmLCBjaGFyICpuYW1lKQ0KIHsNCi0jaWZuZGVmIEhBVkVfRlJFRVREUw0K
ICAgICBpZiAoc3RyY21wKG5hbWUsICJ0ZXh0IikgPT0gMCkNCi0JcmV0dXJu
IFB5U3RyaW5nX0Zyb21TdHJpbmdBbmRTaXplKHNlbGYtPm1zZy50ZXh0LA0K
LQkJCQkJICBzZWxmLT5tc2cudGV4dGxlbik7DQotI2VuZGlmDQorCXJldHVy
biBQeVN0cmluZ19Gcm9tU3RyaW5nKHNlbGYtPm1zZy50ZXh0KTsNCisNCiAg
ICAgaWYgKHN0cmNtcChuYW1lLCAic3ZybmFtZSIpID09IDApDQogCXJldHVy
biBQeVN0cmluZ19Gcm9tU3RyaW5nQW5kU2l6ZShzZWxmLT5tc2cuc3ZybmFt
ZSwNCiAJCQkJCSAgc2VsZi0+bXNnLnN2cm5sZW4pOw0KQEAgLTE4MCw2ICsx
NzgsNyBAQA0KIAlyZXR1cm4gUHlTdHJpbmdfRnJvbVN0cmluZ0FuZFNpemUo
c2VsZi0+bXNnLnNxbHN0YXRlLA0KIAkJCQkJICBzZWxmLT5tc2cuc3Fsc3Rh
dGVsZW4pOw0KICNlbmRpZg0KKw0KICAgICByZXR1cm4gUHlNZW1iZXJfR2V0
KChjaGFyICopJnNlbGYtPm1zZywgQ1NfU0VSVkVSTVNHX21lbWJlcmxpc3Qs
IG5hbWUpOw0KIH0NCiANCk9ubHkgaW4gc3liYXNlLWtiajogbXNncy5jfg0K
ZGlmZiAtdXIgc3liYXNlLTAuMzVwcmUxL251bWVyaWMuYyBzeWJhc2Uta2Jq
L251bWVyaWMuYw0KLS0tIHN5YmFzZS0wLjM1cHJlMS9udW1lcmljLmMJU3Vu
IEFwciAyMSAwMTo1ODo1MiAyMDAyDQorKysgc3liYXNlLWtiai9udW1lcmlj
LmMJV2VkIEp1bCAxMCAwODoyMToyMSAyMDAyDQpAQCAtNTEsNyArNTEsNyBA
QA0KIHsNCiAgICAgTnVtZXJpY09iaiAqc2VsZjsNCiANCi0gICAgc2VsZiA9
IFB5T2JqZWN0X05FVyhOdW1lcmljT2JqLCAmTnVtZXJpY1R5cGUpOw0KKyAg
ICBzZWxmID0gUHlPYmplY3RfTmV3KE51bWVyaWNPYmosICZOdW1lcmljVHlw
ZSk7DQogICAgIGlmIChzZWxmID09IE5VTEwpDQogCXJldHVybiBOVUxMOw0K
IA0KQEAgLTMxMyw3ICszMTMsNyBAQA0KIHN0YXRpYyB2b2lkIE51bWVyaWNf
ZGVhbGxvYyhOdW1lcmljT2JqICpzZWxmKQ0KIHsNCiAgICAgU1lfTEVBS19V
TlJFRyhzZWxmKTsNCi0gICAgUHlNZW1fREVMKHNlbGYpOw0KKyAgICBQeU9i
amVjdF9EZWwoc2VsZik7DQogfQ0KIA0KICNpZmRlZiBIQVZFX0NTX0NNUA0K

--416156269-1252427600-1026314104=:15098--