From greger@teigre.com Thu Nov 25 11:30:00 2004 From: "Greger V. Teigre" To: sr-users@lists.kamailio.org Subject: Re: [Serusers] Request for rtpproxy supporting video Date: Thu, 25 Nov 2004 11:29:56 +0100 Message-ID: <028e01c4d2d9$b69104f0$6400a8c0@MrMaster> In-Reply-To: <508cb4feff.4feff508cb@teleline.es> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0021705508==" --===============0021705508== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Laurent, I have seen a couple of requests for the video support for nathelper. You posted the patch to serdev on Jan's request, but the patch is against a July 15 version of nathelper.c (see attachment). Several improvements have been done since then. From cvs I can see that the patch has not been applied to the current version. Have you done that, Laurent? If so, could you provide the new patch. Jan: Any chance to get the patch in cvs in the near future? Regards, greger LBE_SIP(a)telefonica.net wrote: >> Laurent, >> >> In your post "rtpproxy+nathelper (0.8.14) +video" on Nov 8th you >> mentioned you had made same changes to nathelper in order to support >> video. We are using the same scenario (but with the original >> nathelper) and we already have audio working, but we want also >> video. So please, could you send me this modified version?. >> >> Thanks in advance, >> Luciano Bajo >> Content-Type: multipart/alternative; >> boundary="----=_NextPart_001_000E_01C4CE7F.5FF6BA30" >> >> >> ------=_NextPart_001_000E_01C4CE7F.5FF6BA30 >> Content-Type: text/plain; >> charset="us-ascii" >> Content-Transfer-Encoding: 7bit >> >> Hello, >> >> i try to test a leadtech ATA with SER. >> when i try to register this agent to the SER with nathelper the ATA >> always send the same request, i think that he drop the response from >> the server. >> >> What is false in the response ? >> >> thanks >> >> Laurent >> >> ------=_NextPart_001_000E_01C4CE7F.5FF6BA30 >> Content-Type: text/html; >> charset="us-ascii" >> Content-Transfer-Encoding: quoted-printable >> >> >> >> > charset=3Dus-ascii"> >> >> >>
> class=3D460502020-19112004>Hello,
>>
> class=3D460502020-19112004> 
>>
> class=3D460502020-19112004>i try to=20 >> test a leadtech ATA with SER.
>>
> class=3D460502020-19112004> when i try to=20 >> register this agent to the SER with nathelper  the = >> ATA always=20 >> send the same request, i think that he drop the response from the=20 >> server.
>>
> class=3D460502020-19112004> 
>>
> class=3D460502020-19112004>What = is false in the=20 >> response ?
>>
> class=3D460502020-19112004> 
>>
> class=3D460502020-19112004>thanks
>>
> class=3D460502020-19112004> 
>>
> class=3D460502020-19112004>Laurent
>> >> ------=_NextPart_001_000E_01C4CE7F.5FF6BA30-- >> > > > >> _______________________________________________ >> Serusers mailing list >> serusers(a)lists.iptel.org >> http://lists.iptel.org/mailman/listinfo/serusers >> > > > >> _______________________________________________ >> Serusers mailing list >> serusers(a)lists.iptel.org >> http://lists.iptel.org/mailman/listinfo/serusers --===============0021705508== Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="nathelper-video-patch.c" MIME-Version: 1.0 LS0tIHNlci0wLjguMTQvbW9kdWxlcy9uYXRoZWxwZXIvbmF0aGVscGVyLmMJMjAwNC0wNy0xNSAy MzoxODozNC4wMDAwMDAwMDAgKzAyMDAKKysrIHNlci0wLjguMTRfbW9kL21vZHVsZXMvbmF0aGVs cGVyL25hdGhlbHBlci5jCTIwMDQtMTEtMDggMTY6MTc6MDkuMDAwMDAwMDAwICswMTAwCkBAIC0x NzgsOCArMTc4LDEyIEBACiBzdGF0aWMgaW50IGZpeF9uYXRlZF9zZHBfZihzdHJ1Y3Qgc2lwX21z ZyAqLCBjaGFyICosIGNoYXIgKik7CiBzdGF0aWMgaW50IGV4dHJhY3RfbWVkaWFpcChzdHIgKiwg c3RyICosIGludCAqKTsKIHN0YXRpYyBpbnQgZXh0cmFjdF9tZWRpYXBvcnQoc3RyICosIHN0ciAq KTsKK3N0YXRpYyBpbnQgZXh0cmFjdF9tZWRpYXBvcnQyKHN0ciAqLCBzdHIgKixzdHIgKik7CisK IHN0YXRpYyBpbnQgYWx0ZXJfbWVkaWFpcChzdHJ1Y3Qgc2lwX21zZyAqLCBzdHIgKiwgc3RyICos IGludCwgc3RyICosIGludCwgaW50KTsKIHN0YXRpYyBpbnQgYWx0ZXJfbWVkaWFwb3J0KHN0cnVj dCBzaXBfbXNnICosIHN0ciAqLCBzdHIgKiwgc3RyICosIGludCk7CitzdGF0aWMgaW50IGFsdGVy X21lZGlhcG9ydDIoc3RydWN0IHNpcF9tc2cgKiwgc3RyICosIHN0ciAqLCBzdHIgKiwgc3RyICos IHN0ciAqICwgaW50KTsKKwogc3RhdGljIGNoYXIgKmdlbmNvb2tpZSgpOwogc3RhdGljIGludCBy dHBwX3Rlc3QoaW50LCBpbnQpOwogc3RhdGljIGNoYXIgKnNlbmRfcnRwcF9jb21tYW5kKHN0cnVj dCBpb3ZlYyAqLCBpbnQpOwpAQCAtMjYxLDYgKzI2NSw3IEBACiBzdGF0aWMgaW50CiBtb2RfaW5p dCh2b2lkKQogeworCiAJaW50IGk7CiAJY2hhciAqY3A7CiAJYmluZF91c3Jsb2NfdCBiaW5kX3Vz cmxvYzsKQEAgLTcwOCw2ICs3MTMsMTEgQEAKICNkZWZpbmUJQU9MRE1FRFBSVAkiYT1vbGRtZWRp YXBvcnQ6IgogI2RlZmluZQlBT0xETUVEUFJUX0xFTgkoc2l6ZW9mKEFPTERNRURQUlQpIC0gMSkK IAorCisjZGVmaW5lIEFPTERNRURQUlQyICAgICAiYT1vbGRtZWRpYXBvcnQyOiIKKyNkZWZpbmUg QU9MRE1FRFBSVDJfTEVOICAoc2l6ZW9mKEFPTERNRURQUlQyKSAtIDEpCisKKwogI2RlZmluZQlB Tk9SVFBQUk9YWQkiYT1ub3J0cHByb3h5Onllc1xyXG4iCiAjZGVmaW5lCUFOT1JUUFBST1hZX0xF Tgkoc2l6ZW9mKEFOT1JUUFBST1hZKSAtIDEpCiAKQEAgLTg3NCw2ICs4ODQsNzggQEAKIAlyZXR1 cm4gMTsKIH0KIAorCitzdGF0aWMgaW50CitleHRyYWN0X21lZGlhcG9ydDIoc3RyICpib2R5LCBz dHIgKm1lZGlhcG9ydCwgc3RyICptZWRpYXBvcnQyKQoreworICAgICAgICBjaGFyICpjcCwgKmNw MiwgKmNwMTsKKyAgICAgICAgaW50IGxlbjsKKworICAgICAgICBjcDEgPSBOVUxMOworICAgICAg ICBmb3IgKGNwID0gYm9keS0+czsgKGxlbiA9IGJvZHktPnMgKyBib2R5LT5sZW4gLSBjcCkgPiAw OykgeworICAgICAgICAgICAgICAgIGNwMSA9IHNlcl9tZW1tZW0oY3AsICJtPSIsIGxlbiwgMik7 CisgICAgICAgICAgICAgICAgaWYgKGNwMSA9PSBOVUxMIHx8IGNwMVstMV0gPT0gJ1xuJyB8fCBj cDFbLTFdID09ICdccicpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg ICAgICAgICBjcCA9IGNwMSArIDI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNwMSA9PSBOVUxM KSB7CisgICAgICAgICAgICAgICAgTE9HKExfRVJSLCAiRVJST1I6IGV4dHJhY3RfbWVkaWFwb3J0 MjE6IG5vIGBtPScgaW4gU0RQXG4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAg ICAgIH0KKwkKKyAgICAgICAgbWVkaWFwb3J0LT5zID0gY3AxICsgMjsKKworCSBjcDIgPSBOVUxM OworICAgICAgICBmb3IgKGNwMj0gbWVkaWFwb3J0LT5zOyAobGVuID0gYm9keS0+cyArIGJvZHkt PmxlbiAtIGNwMikgPiAwOykgeworICAgICAgICAgICAgICAgIGNwMSA9IHNlcl9tZW1tZW0oY3Ay LCAibT0iLCBsZW4sIDIpOworICAgICAgICAgICAgICAgIGlmIChjcDEgPT0gTlVMTCB8fCBjcDFb LTFdID09ICdcbicgfHwgY3AxWy0xXSA9PSAnXHInKQorICAgICAgICAgICAgICAgICAgICAgICAg YnJlYWs7CisgICAgICAgICAgICAgICAgY3AyID0gY3AxICsgMjsKKyAgICAgICAgfQorICAgICAg ICBpZiAoY3AxID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBMT0coTF9FUlIsICJFUlJPUjog ZXh0cmFjdF9tZWRpYXBvcnQyMjogbm8gYG09JyBpbiBTRFBcbiIpOworICAgICAgICAgICAgICAg IHJldHVybiAtMTsKKyAgICAgICAgfQorCW1lZGlhcG9ydDItPnMgPSBjcDEgKyAyOworCisgICAg ICAgIG1lZGlhcG9ydC0+bGVuID0gZWF0X2xpbmUobWVkaWFwb3J0LT5zLCBib2R5LT5zICsgYm9k eS0+bGVuIC0KKyAgICAgICAgICBtZWRpYXBvcnQtPnMpIC0gbWVkaWFwb3J0LT5zOworICAgICAg ICB0cmltX2xlbihtZWRpYXBvcnQtPmxlbiwgbWVkaWFwb3J0LT5zLCAqbWVkaWFwb3J0KTsKKwor CW1lZGlhcG9ydDItPmxlbiA9IGVhdF9saW5lKG1lZGlhcG9ydDItPnMsIGJvZHktPnMgKyBib2R5 LT5sZW4gLQorICAgICAgICAgIG1lZGlhcG9ydDItPnMpIC0gbWVkaWFwb3J0Mi0+czsKKyAgICAg ICAgdHJpbV9sZW4obWVkaWFwb3J0Mi0+bGVuLCBtZWRpYXBvcnQyLT5zLCAqbWVkaWFwb3J0Mik7 CisKKyAgICAgICAgaWYgKG1lZGlhcG9ydC0+bGVuIDwgNyB8fCAhIChtZW1jbXAobWVkaWFwb3J0 LT5zLCAiYXVkaW8iLCA1KSAhPSAwIHx8IG1lbWNtcChtZWRpYXBvcnQtPnMsICJ2aWRlbyIsIDUp ICE9IDApIHx8CisgICAgICAgICAgIWlzc3BhY2UoKGludCltZWRpYXBvcnQtPnNbNV0pKSB7Cisg ICAgICAgICAgICAgICAgTE9HKExfRVJSLCAiRVJST1I6IGV4dHJhY3RfbWVkaWFwb3J0MjIyOiBj YW4ndCBwYXJzZSBgbT0nIGluIFNEUFxuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwor ICAgICAgICB9CisKKwkgaWYgKG1lZGlhcG9ydDItPmxlbiA8IDcgfHwgISAobWVtY21wKG1lZGlh cG9ydDItPnMsICJhdWRpbyIsIDUpICE9IDAgfHwgbWVtY21wKG1lZGlhcG9ydDItPnMsICJ2aWRl byIsIDUpICE9IDApIHx8CisgICAgICAgICAgIWlzc3BhY2UoKGludCltZWRpYXBvcnQyLT5zWzVd KSkgeworICAgICAgICAgICAgICAgIExPRyhMX0VSUiwgIkVSUk9SOiBleHRyYWN0X21lZGlhcG9y dDIyMjogY2FuJ3QgcGFyc2UgYG09JyBpbiBTRFBcbiIpOworICAgICAgICAgICAgICAgIHJldHVy biAtMTsKKyAgICAgICAgfQorCisKKyAgICAgICAgY3AgPSBlYXRfc3BhY2VfZW5kKG1lZGlhcG9y dC0+cyArIDUsIG1lZGlhcG9ydC0+cyArIG1lZGlhcG9ydC0+bGVuKTsKKworICAgICAgICBtZWRp YXBvcnQtPmxlbiA9IGVhdF90b2tlbl9lbmQoY3AsIG1lZGlhcG9ydC0+cyArIG1lZGlhcG9ydC0+ bGVuKSAtIGNwOworICAgICAgICBtZWRpYXBvcnQtPnMgPSBjcDsKKyAgICAgIAorCWNwID0gZWF0 X3NwYWNlX2VuZChtZWRpYXBvcnQyLT5zICsgNSwgbWVkaWFwb3J0Mi0+cyArIG1lZGlhcG9ydDIt Pmxlbik7CisKKyAgICAgICAgbWVkaWFwb3J0Mi0+bGVuID0gZWF0X3Rva2VuX2VuZChjcCwgbWVk aWFwb3J0Mi0+cyArIG1lZGlhcG9ydDItPmxlbikgLSBjcDsKKyAgICAgICAgbWVkaWFwb3J0Mi0+ cyA9IGNwOworCisJcmV0dXJuIDE7IAorCQorCit9CisKKworCiBzdGF0aWMgaW50CiBhbHRlcl9t ZWRpYWlwKHN0cnVjdCBzaXBfbXNnICptc2csIHN0ciAqYm9keSwgc3RyICpvbGRpcCwgaW50IG9s ZHBmLAogICBzdHIgKm5ld2lwLCBpbnQgbmV3cGYsIGludCBwcmVzZXJ2ZSkKQEAgLTk2MiwxOCAr MTA0NCwyNCBAQAogfQogCiBzdGF0aWMgaW50Ci1hbHRlcl9tZWRpYXBvcnQoc3RydWN0IHNpcF9t c2cgKm1zZywgc3RyICpib2R5LCBzdHIgKm9sZHBvcnQsIHN0ciAqbmV3cG9ydCwKK2FsdGVyX21l ZGlhcG9ydDIoc3RydWN0IHNpcF9tc2cgKm1zZywgc3RyICpib2R5LCBzdHIgKm9sZHBvcnQsIHN0 ciAqbmV3cG9ydCwgc3RyICpvbGRwb3J0Miwgc3RyICpuZXdwb3J0MiwKICAgaW50IHByZXNlcnZl KQogewotCWNoYXIgKmJ1ZjsKKwljaGFyICpidWYsICpidWYyOwogCWludCBvZmZzZXQ7Ci0Jc3Ry dWN0IGx1bXAqIGFuY2hvcjsKKwlzdHJ1Y3QgbHVtcCogYW5jaG9yLCogYW5jaG9yMjsKIAogCS8q IGNoZWNrIHRoYXQgdXBkYXRpbmcgbWVkaWFwb3J0IGlzIHJlYWxseSBuZWNlc3NhcnkgKi8KIAlp ZiAobmV3cG9ydC0+bGVuID09IG9sZHBvcnQtPmxlbiAmJgogCSAgICBtZW1jbXAobmV3cG9ydC0+ cywgb2xkcG9ydC0+cywgbmV3cG9ydC0+bGVuKSA9PSAwKQogCQlyZXR1cm4gMDsKIAorCisJICBp ZiAobmV3cG9ydDItPmxlbiA9PSBvbGRwb3J0Mi0+bGVuICYmCisgICAgICAgICAgICBtZW1jbXAo bmV3cG9ydDItPnMsIG9sZHBvcnQyLT5zLCBuZXdwb3J0Mi0+bGVuKSA9PSAwKQorICAgICAgICAg ICAgICAgIHJldHVybiAwOworCisKIAlpZiAocHJlc2VydmUgIT0gMCkgewogCQlhbmNob3IgPSBh bmNob3JfbHVtcChtc2csIGJvZHktPnMgKyBib2R5LT5sZW4gLSBtc2ctPmJ1ZiwgMCwgMCk7CiAJ CWlmIChhbmNob3IgPT0gTlVMTCkgewpAQCAtOTk0LDYgKzEwODIsMjggQEAKIAkJCXBrZ19mcmVl KGJ1Zik7CiAJCQlyZXR1cm4gLTE7CiAJCX0KKwkKKworCQlhbmNob3IyID0gYW5jaG9yX2x1bXAo bXNnLCBib2R5LT5zICsgYm9keS0+bGVuIC0gbXNnLT5idWYsIDAsIDApOworICAgICAgICAgICAg ICAgIGlmIChhbmNob3IyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIExPRyhM X0VSUiwgIkVSUk9SOiBhbHRlcl9tZWRpYXBvcnQ6IGFuY2hvcl9sdW1wIGZhaWxlZFxuIik7Cisg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgIGJ1ZjIgPSBwa2dfbWFsbG9jKEFPTERNRURQUlQyX0xFTiArIG9sZHBvcnQy LT5sZW4gKyBDUkxGX0xFTik7CisgICAgICAgICAgICAgICAgaWYgKGJ1ZjIgPT0gTlVMTCkgewor ICAgICAgICAgICAgICAgICAgICAgICAgTE9HKExfRVJSLCAiRVJST1I6IGFsdGVyX21lZGlhcG9y dDogb3V0IG9mIG1lbW9yeVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7 CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1lbWNweShidWYyLCBBT0xETUVE UFJUMiwgQU9MRE1FRFBSVDJfTEVOKTsKKyAgICAgICAgICAgICAgICBtZW1jcHkoYnVmMiArIEFP TERNRURQUlQyX0xFTiwgb2xkcG9ydDItPnMsIG9sZHBvcnQyLT5sZW4pOworICAgICAgICAgICAg ICAgIG1lbWNweShidWYyICsgQU9MRE1FRFBSVDJfTEVOICsgb2xkcG9ydDItPmxlbiwgQ1JMRiwg Q1JMRl9MRU4pOworICAgICAgICAgICAgICAgIGlmIChpbnNlcnRfbmV3X2x1bXBfYWZ0ZXIoYW5j aG9yMiwgYnVmMiwKKyAgICAgICAgICAgICAgICAgICAgQU9MRE1FRFBSVDJfTEVOICsgb2xkcG9y dDItPmxlbiArIENSTEZfTEVOLCAwKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAg ICBMT0coTF9FUlIsICJFUlJPUjogYWx0ZXJfbWVkaWFwb3J0OiBpbnNlcnRfbmV3X2x1bXBfYWZ0 ZXIgZmFpbGVkXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBrZ19mcmVlKGJ1ZjIpOwor ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKwog CX0KIAogCWJ1ZiA9IHBrZ19tYWxsb2MobmV3cG9ydC0+bGVuKTsKQEAgLTEwMTQsOSArMTEyNCw4 OSBAQAogCQlwa2dfZnJlZShidWYpOwogCQlyZXR1cm4gLTE7CiAJfQorCisKKworCWJ1ZjIgPSBw a2dfbWFsbG9jKG5ld3BvcnQyLT5sZW4pOworICAgICAgICBpZiAoYnVmMiA9PSBOVUxMKSB7Cisg ICAgICAgICAgICAgICAgTE9HKExfRVJSLCAiRVJST1I6IGFsdGVyX21lZGlhcG9ydDogb3V0IG9m IG1lbW9yeVxuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAg ICAgIG9mZnNldCA9IG9sZHBvcnQyLT5zIC0gbXNnLT5idWY7CisgICAgICAgIGFuY2hvcjIgPSBk ZWxfbHVtcChtc2csIG9mZnNldCwgb2xkcG9ydDItPmxlbiwgMCk7CisgICAgICAgIGlmIChhbmNo b3IyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBMT0coTF9FUlIsICJFUlJPUjogYWx0ZXJf bWVkaWFwb3J0OiBkZWxfbHVtcCBmYWlsZWRcbiIpOworICAgICAgICAgICAgICAgIHBrZ19mcmVl KGJ1ZjIpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBt ZW1jcHkoYnVmMiwgbmV3cG9ydDItPnMsIG5ld3BvcnQyLT5sZW4pOworICAgICAgICBpZiAoaW5z ZXJ0X25ld19sdW1wX2FmdGVyKGFuY2hvcjIsIGJ1ZjIsIG5ld3BvcnQyLT5sZW4sIDApID09IDAp IHsKKyAgICAgICAgICAgICAgICBMT0coTF9FUlIsICJFUlJPUjogYWx0ZXJfbWVkaWFwb3J0OiBp bnNlcnRfbmV3X2x1bXBfYWZ0ZXIgZmFpbGVkXG4iKTsKKyAgICAgICAgICAgICAgICBwa2dfZnJl ZShidWYyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKwkKIAlyZXR1 cm4gMDsKIH0KIAorc3RhdGljIGludAorYWx0ZXJfbWVkaWFwb3J0KHN0cnVjdCBzaXBfbXNnICpt c2csIHN0ciAqYm9keSwgc3RyICpvbGRwb3J0LCBzdHIgKm5ld3BvcnQsCisgIGludCBwcmVzZXJ2 ZSkKK3sKKyAgICAgICAgY2hhciAqYnVmOworICAgICAgICBpbnQgb2Zmc2V0OworICAgICAgICBz dHJ1Y3QgbHVtcCogYW5jaG9yOworCisgICAgICAgIC8qIGNoZWNrIHRoYXQgdXBkYXRpbmcgbWVk aWFwb3J0IGlzIHJlYWxseSBuZWNlc3NhcnkgKi8KKyAgICAgICAgaWYgKG5ld3BvcnQtPmxlbiA9 PSBvbGRwb3J0LT5sZW4gJiYKKyAgICAgICAgICAgIG1lbWNtcChuZXdwb3J0LT5zLCBvbGRwb3J0 LT5zLCBuZXdwb3J0LT5sZW4pID09IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAg ICAgICAgaWYgKHByZXNlcnZlICE9IDApIHsKKyAgICAgICAgICAgICAgICBhbmNob3IgPSBhbmNo b3JfbHVtcChtc2csIGJvZHktPnMgKyBib2R5LT5sZW4gLSBtc2ctPmJ1ZiwgMCwgMCk7CisgICAg ICAgICAgICAgICAgaWYgKGFuY2hvciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAg ICBMT0coTF9FUlIsICJFUlJPUjogYWx0ZXJfbWVkaWFwb3J0OiBhbmNob3JfbHVtcCBmYWlsZWRc biIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICBidWYgPSBwa2dfbWFsbG9jKEFPTERNRURQUlRfTEVOICsgb2xk cG9ydC0+bGVuICsgQ1JMRl9MRU4pOworICAgICAgICAgICAgICAgIGlmIChidWYgPT0gTlVMTCkg eworICAgICAgICAgICAgICAgICAgICAgICAgTE9HKExfRVJSLCAiRVJST1I6IGFsdGVyX21lZGlh cG9ydDogb3V0IG9mIG1lbW9yeVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g LTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1lbWNweShidWYsIEFPTERN RURQUlQsIEFPTERNRURQUlRfTEVOKTsKKyAgICAgICAgICAgICAgICBtZW1jcHkoYnVmICsgQU9M RE1FRFBSVF9MRU4sIG9sZHBvcnQtPnMsIG9sZHBvcnQtPmxlbik7CisgICAgICAgICAgICAgICAg bWVtY3B5KGJ1ZiArIEFPTERNRURQUlRfTEVOICsgb2xkcG9ydC0+bGVuLCBDUkxGLCBDUkxGX0xF Tik7CisgICAgICAgICAgICAgICAgaWYgKGluc2VydF9uZXdfbHVtcF9hZnRlcihhbmNob3IsIGJ1 ZiwKKyAgICAgICAgICAgICAgICAgICAgQU9MRE1FRFBSVF9MRU4gKyBvbGRwb3J0LT5sZW4gKyBD UkxGX0xFTiwgMCkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgTE9HKExfRVJS LCAiRVJST1I6IGFsdGVyX21lZGlhcG9ydDogaW5zZXJ0X25ld19sdW1wX2FmdGVyIGZhaWxlZFxu Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBwa2dfZnJlZShidWYpOworICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg ICAgICAgIGJ1ZiA9IHBrZ19tYWxsb2MobmV3cG9ydC0+bGVuKTsKKyAgICAgICAgaWYgKGJ1ZiA9 PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgTE9HKExfRVJSLCAiRVJST1I6IGFsdGVyX21lZGlh cG9ydDogb3V0IG9mIG1lbW9yeVxuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAg ICAgICB9CisgICAgICAgIG9mZnNldCA9IG9sZHBvcnQtPnMgLSBtc2ctPmJ1ZjsKKyAgICAgICAg YW5jaG9yID0gZGVsX2x1bXAobXNnLCBvZmZzZXQsIG9sZHBvcnQtPmxlbiwgMCk7CisgICAgICAg IGlmIChhbmNob3IgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIExPRyhMX0VSUiwgIkVSUk9S OiBhbHRlcl9tZWRpYXBvcnQ6IGRlbF9sdW1wIGZhaWxlZFxuIik7CisgICAgICAgICAgICAgICAg cGtnX2ZyZWUoYnVmKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAg ICAgICAgbWVtY3B5KGJ1ZiwgbmV3cG9ydC0+cywgbmV3cG9ydC0+bGVuKTsKKyAgICAgICAgaWYg KGluc2VydF9uZXdfbHVtcF9hZnRlcihhbmNob3IsIGJ1ZiwgbmV3cG9ydC0+bGVuLCAwKSA9PSAw KSB7CisgICAgICAgICAgICAgICAgTE9HKExfRVJSLCAiRVJST1I6IGFsdGVyX21lZGlhcG9ydDog aW5zZXJ0X25ld19sdW1wX2FmdGVyIGZhaWxlZFxuIik7CisgICAgICAgICAgICAgICAgcGtnX2Zy ZWUoYnVmKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAg cmV0dXJuIDA7Cit9CisKKworCiBzdGF0aWMgY2hhciAqCiBnZW5jb29raWUoKQogewpAQCAtMTIw NCwxMSArMTM5NCwxNSBAQAogc3RhdGljIGludAogZm9yY2VfcnRwX3Byb3h5Ml9mKHN0cnVjdCBz aXBfbXNnKiBtc2csIGNoYXIqIHN0cjEsIGNoYXIqIHN0cjIpCiB7Ci0Jc3RyIGJvZHksIGJvZHkx LCBvbGRwb3J0LCBvbGRpcCwgb2xkaXAxLCBuZXdwb3J0LCBuZXdpcDsKKwlzdHIgYm9keSwgYm9k eTEsIG9sZHBvcnQsIG9sZGlwLCBvbGRpcDEsIG5ld3BvcnQsIG5ld2lwLCBvbGRwb3J0MiwgbmV3 cG9ydDI7CisJCiAJc3RyIGNhbGxpZCwgZnJvbV90YWcsIHRvX3RhZywgdG1wOwotCWludCBjcmVh dGUsIHBvcnQsIGxlbiwgYXN5bW1ldHJpYywgZmxvb2t1cCwgYXJnYywgcHJveGllZCwgcmVhbDsK KwlpbnQgY3JlYXRlLCBwb3J0LCBwb3J0MiAsIGxlbiwgYXN5bW1ldHJpYywgZmxvb2t1cCwgYXJn YywgcHJveGllZCwgcmVhbDsKIAlpbnQgb2lkeCwgcGYsIHBmMSwgZm9yY2U7CisKKwlpbnQgdmlk ZW89MTsKIAljaGFyIG9wdHNbMTZdOworCWNoYXIgb3B0czJbMTZdOwogCWNoYXIgKmNwLCAqY3Ax OwogCWNoYXIgICpjcGVuZCwgKm5leHQ7CiAJY2hhciAqKmFwLCAqYXJndlsxMF07CkBAIC0xMzQw LDI1ICsxNTM0LDQ5IEBACiAJCSAgICAiZmFtaWxpZXMgaW4gU0RQXG4iKTsKIAkJcmV0dXJuIC0x OwogCX0KLQlpZiAoZXh0cmFjdF9tZWRpYXBvcnQoJmJvZHksICZvbGRwb3J0KSA9PSAtMSkgewot CQlMT0coTF9FUlIsICJFUlJPUjogZm9yY2VfcnRwX3Byb3h5MjogY2FuJ3QgZXh0cmFjdCBtZWRp YSBwb3J0ICIKLQkJICAgICJmcm9tIHRoZSBtZXNzYWdlXG4iKTsKLQkJcmV0dXJuIC0xOworCQor CWlmIChleHRyYWN0X21lZGlhcG9ydDIoJmJvZHksICZvbGRwb3J0LCZvbGRwb3J0MikgPT0gLTEp IHsKKworCQlpZiAoZXh0cmFjdF9tZWRpYXBvcnQoJmJvZHksICZvbGRwb3J0KSA9PSAtMSkgewor CQkJTE9HKExfRVJSLCAiRVJST1I6IGZvcmNlX3J0cF9wcm94eTI6IGNhbid0IGV4dHJhY3QgbWVk aWEgcG9ydCAiCisJCQkgICAgImZyb20gdGhlIG1lc3NhZ2VcbiIpOworCQkJcmV0dXJuIC0xOwor CQl9ZWxzZSAKKwkJeworCQkJdmlkZW89LTE7CisJCQlMT0coTF9FUlIsICJubyB2aWRlbyBcbiIp OworCQl9CisKIAl9CiAJaWYgKHBmID09IEFGX0lORVQ2KSB7CiAJCW9wdHNbb2lkeF0gPSAnNic7 CiAJCW9pZHgrKzsKIAl9CisKKwogCW9wdHNbMF0gPSAoY3JlYXRlID09IDApID8gJ0wnIDogJ1Un OwogCXZbMV0uaW92X2xlbiA9IG9pZHg7Ci0JU1RSMklPVkVDKGNhbGxpZCwgdlszXSk7CisKKwor CXN0ciBjYWxsaWQxOworCWNoYXIgY2FsbGlkMXNbY2FsbGlkLmxlbisxXTsKKwltZW1jcHkoY2Fs bGlkMXMsImEiLDEpOworCW1lbWNweShjYWxsaWQxcysxLGNhbGxpZC5zLGNhbGxpZC5sZW4pOwor CisJY2FsbGlkMS5zID0gY2FsbGlkMXM7CisJY2FsbGlkMS5sZW4gPSBzaXplb2YoY2FsbGlkMS5z KTsJCQorCisJU1RSMklPVkVDKGNhbGxpZDEsIHZbM10pOwogCVNUUjJJT1ZFQyhuZXdpcCwgdls1 XSk7CiAJU1RSMklPVkVDKG9sZHBvcnQsIHZbN10pOwogCVNUUjJJT1ZFQyhmcm9tX3RhZywgdls5 XSk7CiAJU1RSMklPVkVDKHRvX3RhZywgdlsxMV0pOwogCWNwID0gc2VuZF9ydHBwX2NvbW1hbmQo diwgKHRvX3RhZy5sZW4gPiAwKSA/IDEyIDogMTApOwogCWlmIChjcCA9PSBOVUxMKQorCQl7CisJ CSBMT0coTF9FUlIsICJlcnJvciBzZW5kIHJ0cCBjb21tYW5kIFxuIik7CQogCQlyZXR1cm4gLTE7 CisJCX0KIAlhcmdjID0gMDsKIAltZW1zZXQoYXJndiwgMCwgc2l6ZW9mKGFyZ3YpKTsKIAljcGVu ZD1jcCtzdHJsZW4oY3ApOwpAQCAtMTM3OCw2ICsxNTk2LDQ3IEBACiAJaWYgKHBvcnQgPD0gMCB8 fCBwb3J0ID4gNjU1MzUpCiAJCXJldHVybiAtMTsKIAorCisJaWYgKHZpZGVvPT0xKQorCXsKKwkJ IHN0ciBjYWxsaWQyOworICAgICAgICAJY2hhciBjYWxsaWQyc1tjYWxsaWQubGVuKzFdOworCQor CQltZW1jcHkoY2FsbGlkMnMsInYiLDEpOworICAgICAgICAJbWVtY3B5KGNhbGxpZDJzKzEsY2Fs bGlkLnMsY2FsbGlkLmxlbik7CisgICAgICAgIAljYWxsaWQyLnMgPSBjYWxsaWQyczsKKyAgICAg ICAgCWNhbGxpZDIubGVuID0gc2l6ZW9mKGNhbGxpZDIucyk7CisKKworCQlTVFIySU9WRUMoY2Fs bGlkMiwgdlszXSk7CisgICAgICAgIAlTVFIySU9WRUMob2xkcG9ydDIsIHZbN10pOworICAgICAg ICAJY3AgPSBzZW5kX3J0cHBfY29tbWFuZCh2LCAodG9fdGFnLmxlbiA+IDApID8gMTIgOiAxMCk7 CisgICAgICAgIAlpZiAoY3AgPT0gTlVMTCkKKwkJeworCisJCQlMT0coTF9FUlIsICJlcnJvciAy IGVuZCBydHAgY29tbWFuZCBcbiIpOworICAgICAgICAgICAgICAgIAlyZXR1cm4gLTE7CisJCX0K KyAgICAgICAgCWFyZ2MgPSAwOworICAgICAgICAJbWVtc2V0KGFyZ3YsIDAsIHNpemVvZihhcmd2 KSk7CisgICAgICAgIAljcGVuZD1jcCtzdHJsZW4oY3ApOworICAgICAgICAJbmV4dD1lYXRfdG9r ZW5fZW5kKGNwLCBjcGVuZCk7CisgICAgICAgIAlmb3IgKGFwID0gYXJndjsgY3A8Y3BlbmQ7IGNw PW5leHQrMSwgbmV4dD1lYXRfdG9rZW5fZW5kKGNwLCBjcGVuZCkpeworICAgICAgICAgICAgICAg IAkqbmV4dD0wOworICAgICAgICAgICAgICAgIAlpZiAoKmNwICE9ICdcMCcpIHsKKyAgICAgICAg ICAgICAgICAgICAgICAgIAkqYXA9Y3A7CisgICAgICAgICAgICAgICAgICAgICAgICAJYXJnYysr OworICAgICAgICAgICAgICAgICAgICAgICAgCWlmICgoY2hhciopKythcCA+PSAoKGNoYXIqKWFy Z3Yrc2l6ZW9mKGFyZ3YpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCWJyZWFr OworICAgICAgICAgICAgICAgIAl9CisgICAgICAgIAl9CisJICAgICAgICBpZiAoYXJnYyA8IDEp CisgICAgICAgIAkgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgCXBvcnQyID0gYXRvaShhcmd2 WzBdKTsKKyAgICAgICAgCWlmIChwb3J0MiA8PSAwIHx8IHBvcnQgPiA2NTUzNSkKKyAgICAgICAg ICAgICAgICAJcmV0dXJuIC0xOworCX0KKwogCXBmMSA9IChhcmdjID49IDMgJiYgYXJndlsyXVsw XSA9PSAnNicpID8gQUZfSU5FVDYgOiBBRl9JTkVUOwogCiAJaWYgKGlzbnVsbGFkZHIoJm9sZGlw LCBwZikpIHsKQEAgLTEzOTIsMTUgKzE2NTEsMzQgQEAKIAkJbmV3aXAucyA9IChhcmdjIDwgMikg PyBzdHIyIDogYXJndlsxXTsKIAkJbmV3aXAubGVuID0gc3RybGVuKG5ld2lwLnMpOwogCX0KLQlu ZXdwb3J0LnM9aW50MnN0cihwb3J0LCAmbmV3cG9ydC5sZW4pOyAvKiBiZXdhcmUgc3RhdGljIGJ1 ZmZlciAqLwogCQorCWNoYXIgY3BvcnRbNV07CisJaW50IGxlbmNwb3J0OworCW1lbWNweShjcG9y dCxpbnQyc3RyKHBvcnQsICZsZW5jcG9ydCksbGVuY3BvcnQpOyAvKiBiZXdhcmUgc3RhdGljIGJ1 ZmZlciAqLworCW5ld3BvcnQucyA9IGNwb3J0OworCW5ld3BvcnQubGVuID0gbGVuY3BvcnQ7CisJ CisJaWYgKHZpZGVvPT0xKQorCQluZXdwb3J0Mi5zPWludDJzdHIocG9ydDIsICZuZXdwb3J0Mi5s ZW4pOyAvKiBiZXdhcmUgc3RhdGljIGJ1ZmZlciAqLworCiAJaWYgKGFsdGVyX21lZGlhaXAobXNn LCAmYm9keSwgJm9sZGlwLCBwZiwgJm5ld2lwLCBwZjEsIDApID09IC0xKQogCQlyZXR1cm4gLTE7 CisJCiAJaWYgKG9sZGlwMS5sZW4gPiAwICYmCiAJICAgIGFsdGVyX21lZGlhaXAobXNnLCAmYm9k eTEsICZvbGRpcDEsIHBmLCAmbmV3aXAsIHBmMSwgMCkgPT0gLTEpCiAJCXJldHVybiAtMTsKLQlp ZiAoYWx0ZXJfbWVkaWFwb3J0KG1zZywgJmJvZHksICZvbGRwb3J0LCAmbmV3cG9ydCwgMCkgPT0g LTEpCi0JCXJldHVybiAtMTsKKworCWlmICh2aWRlbz09MSkKKwkKKwl7CisJCSBpZiAoYWx0ZXJf bWVkaWFwb3J0Mihtc2csICZib2R5LCAmb2xkcG9ydCwgJm5ld3BvcnQsICZvbGRwb3J0MiwgJm5l d3BvcnQyLCAwKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsgCisJ fQorCWVsc2UKKwl7CisJCWlmIChhbHRlcl9tZWRpYXBvcnQobXNnLCAmYm9keSwgJm9sZHBvcnQs ICZuZXdwb3J0LCAwKSA9PSAtMSkKKwkJCXJldHVybiAtMTsKKwl9CiAKIAlpZiAocHJveGllZCA9 PSAwKSB7CiAJCWNwID0gcGtnX21hbGxvYyhBTk9SVFBQUk9YWV9MRU4gKiBzaXplb2YoY2hhcikp Owo= --===============0021705508==--