<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>61538</bug_id>
          
          <creation_ts>2011-05-26 09:10:23 -0700</creation_ts>
          <short_desc>[UNIX] SOCK_DGRAM sockets are not notified when the other end closes the connection</short_desc>
          <delta_ts>2011-06-06 01:36:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk, Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>410496</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-26 09:10:23 -0700</bug_when>
    <thetext>A possible solution to this problem is to use SOCK_SEQPACKET instead of SOCK_DGRAM, but it&apos;s linux-only, see bug #61287 for more details. So, even if we decice to use SOCK_SEQPACKET when available we still need an implementation when it isn&apos;t. The problem of not being notified when the other end closes the connection is that the process might get blocked waiting for a sync reply that will never be received because the other process has closed the connection. This currently happens when the web process sends the DestroyPlugin message to the plugin process and it was the las plugin. In that case the plugin process closes the connection and finishes after a timeout. During that timeout the web process is waiting for the reply to the DestroyPlugin message, and it doesn&apos;t wake uo until the plugin process really dies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410504</commentid>
    <comment_count>1</comment_count>
      <attachid>94986</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-05-26 09:16:05 -0700</bug_when>
    <thetext>Created attachment 94986
Patch to use STREAM sockets

One of the possible solutions would be simply using STREAM sockets instead of DGRAM sockets when SEQPACKET is not available. The problem is that the code is more complex because we need to handle message boundaries in the receiver, but the same code works for SEQPACKET sockets too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415036</commentid>
    <comment_count>2</comment_count>
      <attachid>94986</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-06-03 11:40:34 -0700</bug_when>
    <thetext>Comment on attachment 94986
Patch to use STREAM sockets

View in context: https://bugs.webkit.org/attachment.cgi?id=94986&amp;action=review

&gt; Source/WebKit2/Platform/CoreIPC/unix/ConnectionUnix.cpp:334
&gt; +        // Process messages from data received.
&gt; +        while (processMessage()) { }

I think this reads better as

while (true) {
    if (!processMessage())
      break;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415738</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2011-06-06 01:36:06 -0700</bug_when>
    <thetext>Committed r88147: &lt;http://trac.webkit.org/changeset/88147&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94986</attachid>
            <date>2011-05-26 09:16:05 -0700</date>
            <delta_ts>2011-06-03 11:40:34 -0700</delta_ts>
            <desc>Patch to use STREAM sockets</desc>
            <filename>wk2-stream-sockets.diff</filename>
            <type>text/plain</type>
            <size>13534</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3OGJlNjZkLi41NDMwYjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTEtMDUtMjUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtVTklY
XSBEb24ndCB1c2UgU09DS19ER1JBTSBpbiBzb2NrZXRwYWlyKCkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMjg3CisKKyAgICAgICAgVXNlIFNPQ0tf
U1RSRUFNIGluc3RlYWQgb2YgU09DS19ER1JBTSBzb2NrZXRzLiBSZXdvcmsgdGhlIG1lc3NhZ2UK
KyAgICAgICAgcmVjZWl2ZXIgY29kZSB0byBzdXBwb3J0IHN0cmVhbSBzb2NrZXRzLCBzaW5jZSBp
dCByZXF1aXJlcyB0byBoYW5kbGUKKyAgICAgICAgbWVzc2FnZSBib3VuZGFyaWVzLgorCisgICAg
ICAgICogUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmg6CisgICAgICAgICogUGxhdGZvcm0v
Q29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcDoKKyAgICAgICAgKENvcmVJUEM6OkNvbm5l
Y3Rpb246OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgIChDb3JlSVBDOjpDb25uZWN0aW9u
Ojpwcm9jZXNzTWVzc2FnZSk6IFByb2Nlc3MgbWVzc2FnZXMgZnJvbSBkYXRhCisgICAgICAgIGFs
cmVhZHkgcmVjZWl2ZWQuCisgICAgICAgIChDb3JlSVBDOjpyZWFkQnl0ZXNGcm9tU29ja2V0KTog
UmVhZCBmcm9tIHNvY2tldCB1c2luZyByZWN2bXNnLgorICAgICAgICAoQ29yZUlQQzo6Q29ubmVj
dGlvbjo6cmVhZHlSZWFkSGFuZGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL2d0
ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNo
ZXI6OmxhdW5jaFByb2Nlc3MpOgorCiAyMDExLTA1LTI0ICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1v
dGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHRoZSBXZWIgSW5zcGVjdG9yIGJyaW5nIHRo
ZSByaWdodCB3aW5kb3cgdG8gdGhlIGZyb250IHdoZW4gZG9ja2VkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAppbmRleCA2MjljN2IwLi43MzM2NzYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0Nvbm5lY3Rpb24uaApAQCAtMzM3
LDkgKzMzNywxMiBAQCBwcml2YXRlOgogI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpIHx8
IE9TKFNZTUJJQU4pCiAgICAgLy8gQ2FsbGVkIG9uIHRoZSBjb25uZWN0aW9uIHF1ZXVlLgogICAg
IHZvaWQgcmVhZHlSZWFkSGFuZGxlcigpOworICAgIGJvb2wgcHJvY2Vzc01lc3NhZ2UoKTsKIAog
ICAgIFZlY3Rvcjx1aW50OF90PiBtX3JlYWRCdWZmZXI7Ci0gICAgc2l6ZV90IG1fY3VycmVudE1l
c3NhZ2VTaXplOworICAgIHNpemVfdCBtX3JlYWRCdWZmZXJTaXplOworICAgIFZlY3RvcjxpbnQ+
IG1fZmlsZURlc2NyaXB0b3JzOworICAgIHNpemVfdCBtX2ZpbGVEZXNjcmlwdG9yc1NpemU7CiAg
ICAgaW50IG1fc29ja2V0RGVzY3JpcHRvcjsKIAogI2lmIFBMQVRGT1JNKFFUKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvdW5peC9Db25uZWN0aW9uVW5peC5j
cHAKaW5kZXggOTJmZmZmMy4uNjUwMDczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm0vQ29yZUlQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9Db3JlSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCkBAIC05NCw3ICs5NCw5
IEBAIHZvaWQgQ29ubmVjdGlvbjo6cGxhdGZvcm1Jbml0aWFsaXplKElkZW50aWZpZXIgaWRlbnRp
ZmllcikKIHsKICAgICBtX3NvY2tldERlc2NyaXB0b3IgPSBpZGVudGlmaWVyOwogICAgIG1fcmVh
ZEJ1ZmZlci5yZXNpemUobWVzc2FnZU1heFNpemUpOwotICAgIG1fY3VycmVudE1lc3NhZ2VTaXpl
ID0gMDsKKyAgICBtX3JlYWRCdWZmZXJTaXplID0gMDsKKyAgICBtX2ZpbGVEZXNjcmlwdG9ycy5y
ZXNpemUoYXR0YWNobWVudE1heEFtb3VudCk7CisgICAgbV9maWxlRGVzY3JpcHRvcnNTaXplID0g
MDsKIAogI2lmIFBMQVRGT1JNKFFUKQogICAgIG1fc29ja2V0Tm90aWZpZXIgPSAwOwpAQCAtMTU4
LDExNiArMTYwLDE3OSBAQCBwcml2YXRlOgogICAgIFQmIG1fYXR0YWNobWVudHM7CiB9OwogCi12
b2lkIENvbm5lY3Rpb246OnJlYWR5UmVhZEhhbmRsZXIoKQorYm9vbCBDb25uZWN0aW9uOjpwcm9j
ZXNzTWVzc2FnZSgpCiB7CisgICAgaWYgKG1fcmVhZEJ1ZmZlclNpemUgPCBzaXplb2YoTWVzc2Fn
ZUluZm8pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1aW50OF90KiBtZXNzYWdlRGF0
YSA9IG1fcmVhZEJ1ZmZlci5kYXRhKCk7CisgICAgTWVzc2FnZUluZm8gbWVzc2FnZUluZm87Cisg
ICAgbWVtY3B5KCZtZXNzYWdlSW5mbywgbWVzc2FnZURhdGEsIHNpemVvZihtZXNzYWdlSW5mbykp
OworICAgIG1lc3NhZ2VEYXRhICs9IHNpemVvZihtZXNzYWdlSW5mbyk7CisKKyAgICBzaXplX3Qg
bWVzc2FnZUxlbmd0aCA9IHNpemVvZihNZXNzYWdlSW5mbykgKyBtZXNzYWdlSW5mby5hdHRhY2ht
ZW50Q291bnQoKSAqIHNpemVvZihzaXplX3QpICsgKG1lc3NhZ2VJbmZvLmlzTWVzc2FnZUJvZHlP
T0woKSA/IDAgOiBtZXNzYWdlSW5mby5ib2R5U2l6ZSgpKTsKKyAgICBpZiAobV9yZWFkQnVmZmVy
U2l6ZSA8IG1lc3NhZ2VMZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIERlcXVl
PEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnRzOwotI2lmIFBMQVRGT1JNKFFUKQotICAgIFNvY2tldE5v
dGlmaWVyUmVzb3VyY2VHdWFyZCBzb2NrZXROb3RpZmllckVuYWJsZXIobV9zb2NrZXROb3RpZmll
cik7Ci0jZW5kaWYKICAgICBBdHRhY2htZW50UmVzb3VyY2VHdWFyZDxEZXF1ZTxBdHRhY2htZW50
PiwgRGVxdWU8QXR0YWNobWVudD46Oml0ZXJhdG9yPiBhdHRhY2hlbWVudERpc3Bvc2VyKGF0dGFj
aG1lbnRzKTsKKyAgICBSZWZQdHI8V2ViS2l0OjpTaGFyZWRNZW1vcnk+IG9vbE1lc3NhZ2VCb2R5
OwogCi0gICAgT3duQXJyYXlQdHI8Y2hhcj4gYXR0YWNobWVudERlc2NyaXB0b3JCdWZmZXIgPSBh
ZG9wdEFycmF5UHRyKG5ldyBjaGFyW0NNU0dfU1BBQ0Uoc2l6ZW9mKGludCkgKiAoYXR0YWNobWVu
dE1heEFtb3VudCkpXSk7Ci0gICAgc3RydWN0IG1zZ2hkciBtZXNzYWdlOwotICAgIG1lbXNldCgm
bWVzc2FnZSwgMCwgc2l6ZW9mKG1lc3NhZ2UpKTsKLQotICAgIHN0cnVjdCBpb3ZlYyBpb3ZbMV07
Ci0gICAgbWVtc2V0KCZpb3YsIDAsIHNpemVvZihpb3YpKTsKKyAgICBpbnQgYXR0YWNobWVudENv
dW50ID0gbWVzc2FnZUluZm8uYXR0YWNobWVudENvdW50KCk7CisgICAgaWYgKGF0dGFjaG1lbnRD
b3VudCkgeworICAgICAgICBPd25BcnJheVB0cjxzaXplX3Q+IGF0dGFjaG1lbnRTaXplcyA9IGFk
b3B0QXJyYXlQdHIobmV3IHNpemVfdFthdHRhY2htZW50Q291bnRdKTsKKyAgICAgICAgbWVtY3B5
KGF0dGFjaG1lbnRTaXplcy5nZXQoKSwgbWVzc2FnZURhdGEsIHNpemVvZihzaXplX3QpICogYXR0
YWNobWVudENvdW50KTsKKyAgICAgICAgbWVzc2FnZURhdGEgKz0gc2l6ZW9mKHNpemVfdCkgKiBh
dHRhY2htZW50Q291bnQ7CiAKLSAgICBtZXNzYWdlLm1zZ19jb250cm9sID0gYXR0YWNobWVudERl
c2NyaXB0b3JCdWZmZXIuZ2V0KCk7Ci0gICAgbWVzc2FnZS5tc2dfY29udHJvbGxlbiA9IENNU0df
U1BBQ0Uoc2l6ZW9mKGludCkgKiAoYXR0YWNobWVudE1heEFtb3VudCkpOworICAgICAgICBpZiAo
bWVzc2FnZUluZm8uaXNNZXNzYWdlQm9keU9PTCgpKQorICAgICAgICAgICAgYXR0YWNobWVudENv
dW50LS07CiAKLSAgICBpb3ZbMF0uaW92X2Jhc2UgPSBtX3JlYWRCdWZmZXIuZGF0YSgpOwotICAg
IGlvdlswXS5pb3ZfbGVuID0gbV9yZWFkQnVmZmVyLnNpemUoKTsKKyAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBhdHRhY2htZW50Q291bnQ7ICsraSkKKyAgICAgICAgICAgIGF0dGFjaG1lbnRz
LmFwcGVuZChBdHRhY2htZW50KG1fZmlsZURlc2NyaXB0b3JzW2ldLCBhdHRhY2htZW50U2l6ZXNb
aV0pKTsKIAotICAgIG1lc3NhZ2UubXNnX2lvdiA9IGlvdjsKLSAgICBtZXNzYWdlLm1zZ19pb3Zs
ZW4gPSAxOworICAgICAgICBpZiAobWVzc2FnZUluZm8uaXNNZXNzYWdlQm9keU9PTCgpKSB7Cisg
ICAgICAgICAgICBBU1NFUlQobWVzc2FnZUluZm8uYm9keVNpemUoKSk7CiAKKyAgICAgICAgICAg
IFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOworICAgICAgICAgICAgaGFuZGxl
LmFkb3B0RnJvbUF0dGFjaG1lbnQobV9maWxlRGVzY3JpcHRvcnNbYXR0YWNobWVudENvdW50XSwg
YXR0YWNobWVudFNpemVzW2F0dGFjaG1lbnRDb3VudF0pOworICAgICAgICAgICAgaWYgKGhhbmRs
ZS5pc051bGwoKSkgeworICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KIAotICAgIGludCBtZXNz
YWdlTGVuZ3RoID0gMDsKLSAgICB3aGlsZSAoKG1lc3NhZ2VMZW5ndGggPSByZWN2bXNnKG1fc29j
a2V0RGVzY3JpcHRvciwgJm1lc3NhZ2UsIDApKSA9PSAtMSkgewotICAgICAgICBpZiAoZXJybm8g
IT0gRUlOVFIpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBvb2xNZXNzYWdlQm9k
eSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjpjcmVhdGUoaGFuZGxlLCBXZWJLaXQ6OlNoYXJlZE1l
bW9yeTo6UmVhZE9ubHkpOworICAgICAgICAgICAgaWYgKCFvb2xNZXNzYWdlQm9keSkgeworICAg
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAotICAgIHN0cnVjdCBj
bXNnaGRyKiBjb250cm9sTWVzc2FnZSA9IENNU0dfRklSU1RIRFIoJm1lc3NhZ2UpOworICAgIEFT
U0VSVChhdHRhY2htZW50cy5zaXplKCkgPT0gbWVzc2FnZUluZm8uaXNNZXNzYWdlQm9keU9PTCgp
ID8gbWVzc2FnZUluZm8uYXR0YWNobWVudENvdW50KCkgLSAxIDogbWVzc2FnZUluZm8uYXR0YWNo
bWVudENvdW50KCkpOwogCi0gICAgTWVzc2FnZUluZm8gbWVzc2FnZUluZm87Ci0gICAgdW5zaWdu
ZWQgY2hhciogbWVzc2FnZURhdGEgPSBtX3JlYWRCdWZmZXIuZGF0YSgpOworICAgIHVpbnQ4X3Qq
IG1lc3NhZ2VCb2R5ID0gbWVzc2FnZURhdGE7CisgICAgaWYgKG1lc3NhZ2VJbmZvLmlzTWVzc2Fn
ZUJvZHlPT0woKSkKKyAgICAgICAgbWVzc2FnZUJvZHkgPSByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihvb2xNZXNzYWdlQm9keS0+ZGF0YSgpKTsKIAotICAgIG1lbWNweSgmbWVzc2FnZUluZm8s
IG1lc3NhZ2VEYXRhLCBzaXplb2YobWVzc2FnZUluZm8pKTsKLSAgICBBU1NFUlQobWVzc2FnZUxl
bmd0aCA9PSBzaXplb2YobWVzc2FnZUluZm8pICsgbWVzc2FnZUluZm8uYXR0YWNobWVudENvdW50
KCkgKiBzaXplb2Yoc2l6ZV90KSArIChtZXNzYWdlSW5mby5pc01lc3NhZ2VCb2R5T09MKCkgPyAw
IDogbWVzc2FnZUluZm8uYm9keVNpemUoKSkpOworICAgIEFyZ3VtZW50RGVjb2RlciogYXJndW1l
bnREZWNvZGVyOworICAgIGlmIChhdHRhY2htZW50cy5pc0VtcHR5KCkpCisgICAgICAgIGFyZ3Vt
ZW50RGVjb2RlciA9IG5ldyBBcmd1bWVudERlY29kZXIobWVzc2FnZUJvZHksIG1lc3NhZ2VJbmZv
LmJvZHlTaXplKCkpOworICAgIGVsc2UKKyAgICAgICAgYXJndW1lbnREZWNvZGVyID0gbmV3IEFy
Z3VtZW50RGVjb2RlcihtZXNzYWdlQm9keSwgbWVzc2FnZUluZm8uYm9keVNpemUoKSwgYXR0YWNo
bWVudHMpOwogCi0gICAgbWVzc2FnZURhdGEgKz0gc2l6ZW9mKG1lc3NhZ2VJbmZvKTsKKyAgICBw
cm9jZXNzSW5jb21pbmdNZXNzYWdlKG1lc3NhZ2VJbmZvLm1lc3NhZ2VJRCgpLCBhZG9wdFB0cihh
cmd1bWVudERlY29kZXIpKTsKIAotICAgIFJlZlB0cjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4gb29s
TWVzc2FnZUJvZHk7CisgICAgaWYgKG1fcmVhZEJ1ZmZlclNpemUgPiBtZXNzYWdlTGVuZ3RoKSB7
CisgICAgICAgIG1lbW1vdmUobV9yZWFkQnVmZmVyLmRhdGEoKSwgbV9yZWFkQnVmZmVyLmRhdGEo
KSArIG1lc3NhZ2VMZW5ndGgsIG1fcmVhZEJ1ZmZlclNpemUgLSBtZXNzYWdlTGVuZ3RoKTsKKyAg
ICAgICAgbV9yZWFkQnVmZmVyU2l6ZSAtPSBtZXNzYWdlTGVuZ3RoOworICAgIH0gZWxzZQorICAg
ICAgICBtX3JlYWRCdWZmZXJTaXplID0gMDsKIAogICAgIGlmIChtZXNzYWdlSW5mby5hdHRhY2ht
ZW50Q291bnQoKSkgewotICAgICAgICBpZiAoY29udHJvbE1lc3NhZ2UgJiYgY29udHJvbE1lc3Nh
Z2UtPmNtc2dfbGV2ZWwgPT0gU09MX1NPQ0tFVCAmJiBjb250cm9sTWVzc2FnZS0+Y21zZ190eXBl
ID09IFNDTV9SSUdIVFMpIHsKLSAgICAgICAgICAgIE93bkFycmF5UHRyPHNpemVfdD4gYXR0YWNo
bWVudFNpemVzID0gYWRvcHRBcnJheVB0cihuZXcgc2l6ZV90W21lc3NhZ2VJbmZvLmF0dGFjaG1l
bnRDb3VudCgpXSk7Ci0gICAgICAgICAgICBtZW1jcHkoYXR0YWNobWVudFNpemVzLmdldCgpLCBt
ZXNzYWdlRGF0YSwgc2l6ZW9mKHNpemVfdCkgKiBtZXNzYWdlSW5mby5hdHRhY2htZW50Q291bnQo
KSk7CisgICAgICAgIGlmIChtX2ZpbGVEZXNjcmlwdG9yc1NpemUgPiBtZXNzYWdlSW5mby5hdHRh
Y2htZW50Q291bnQoKSkgeworICAgICAgICAgICAgc2l6ZV90IGZpbGVEZXNjcmlwdG9yc0xlbmd0
aCA9IG1lc3NhZ2VJbmZvLmF0dGFjaG1lbnRDb3VudCgpICogc2l6ZW9mKGludCk7CisgICAgICAg
ICAgICBtZW1tb3ZlKG1fZmlsZURlc2NyaXB0b3JzLmRhdGEoKSwgbV9maWxlRGVzY3JpcHRvcnMu
ZGF0YSgpICsgZmlsZURlc2NyaXB0b3JzTGVuZ3RoLCBtX2ZpbGVEZXNjcmlwdG9yc1NpemUgLSBm
aWxlRGVzY3JpcHRvcnNMZW5ndGgpOworICAgICAgICAgICAgbV9maWxlRGVzY3JpcHRvcnNTaXpl
IC09IGZpbGVEZXNjcmlwdG9yc0xlbmd0aDsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBt
X2ZpbGVEZXNjcmlwdG9yc1NpemUgPSAwOworICAgIH0KKworCisgICAgcmV0dXJuIHRydWU7Cit9
CiAKLSAgICAgICAgICAgIG1lc3NhZ2VEYXRhICs9IHNpemVvZihhdHRhY2htZW50U2l6ZXMpOwor
c3RhdGljIHNzaXplX3QgcmVhZEJ5dGVzRnJvbVNvY2tldChpbnQgc29ja2V0RGVzY3JpcHRvciwg
dWludDhfdCogYnVmZmVyLCBpbnQgY291bnQsIGludCogZmlsZURlc2NyaXB0b3JzLCBzaXplX3Qq
IGZpbGVEZXNjcmlwdG9yc0NvdW50KQoreworICAgIHN0cnVjdCBtc2doZHIgbWVzc2FnZTsKKyAg
ICBtZW1zZXQoJm1lc3NhZ2UsIDAsIHNpemVvZihtZXNzYWdlKSk7CiAKLSAgICAgICAgICAgIE93
bkFycmF5UHRyPGludD4gZmlsZURlc2NyaXB0b3JzID0gYWRvcHRBcnJheVB0cihuZXcgaW50W21l
c3NhZ2VJbmZvLmF0dGFjaG1lbnRDb3VudCgpXSk7Ci0gICAgICAgICAgICBtZW1jcHkoZmlsZURl
c2NyaXB0b3JzLmdldCgpLCBDTVNHX0RBVEEoY29udHJvbE1lc3NhZ2UpLCBzaXplb2YoaW50KSAq
IG1lc3NhZ2VJbmZvLmF0dGFjaG1lbnRDb3VudCgpKTsKKyAgICBzdHJ1Y3QgaW92ZWMgaW92WzFd
OworICAgIG1lbXNldCgmaW92LCAwLCBzaXplb2YoaW92KSk7CiAKLSAgICAgICAgICAgIGludCBh
dHRhY2htZW50Q291bnQgPSBtZXNzYWdlSW5mby5hdHRhY2htZW50Q291bnQoKTsKKyAgICBtZXNz
YWdlLm1zZ19jb250cm9sbGVuID0gQ01TR19TUEFDRShzaXplb2YoaW50KSAqIGF0dGFjaG1lbnRN
YXhBbW91bnQpOworICAgIE93bkFycmF5UHRyPGNoYXI+IGF0dGFjaG1lbnREZXNjcmlwdG9yQnVm
ZmVyID0gYWRvcHRBcnJheVB0cihuZXcgY2hhclttZXNzYWdlLm1zZ19jb250cm9sbGVuXSk7Cisg
ICAgbWVtc2V0KGF0dGFjaG1lbnREZXNjcmlwdG9yQnVmZmVyLmdldCgpLCAwLCBtZXNzYWdlLm1z
Z19jb250cm9sbGVuKTsKKyAgICBtZXNzYWdlLm1zZ19jb250cm9sID0gYXR0YWNobWVudERlc2Ny
aXB0b3JCdWZmZXIuZ2V0KCk7CiAKLSAgICAgICAgICAgIGlmIChtZXNzYWdlSW5mby5pc01lc3Nh
Z2VCb2R5T09MKCkpCi0gICAgICAgICAgICAgICAgYXR0YWNobWVudENvdW50LS07CisgICAgaW92
WzBdLmlvdl9iYXNlID0gYnVmZmVyOworICAgIGlvdlswXS5pb3ZfbGVuID0gY291bnQ7CiAKLSAg
ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXR0YWNobWVudENvdW50OyArK2kpIHsKLSAg
ICAgICAgICAgICAgICB3aGlsZSAoZmNudGwoZmlsZURlc2NyaXB0b3JzW2ldLCBGX1NFVEZMLCBG
RF9DTE9FWEVDKSA9PSAtMSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoZXJybm8gIT0gRUlO
VFIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorICAgIG1lc3NhZ2UubXNnX2lvdiA9IGlvdjsK
KyAgICBtZXNzYWdlLm1zZ19pb3ZsZW4gPSAxOwogCi0gICAgICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IGF0dGFjaG1lbnRDb3VudDsgKytpKQotICAgICAgICAgICAgICAgIGF0dGFjaG1lbnRz
LmFwcGVuZChBdHRhY2htZW50KGZpbGVEZXNjcmlwdG9yc1tpXSwgYXR0YWNobWVudFNpemVzW2ld
KSk7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgc3NpemVfdCBieXRlc1JlYWQgPSByZWN2
bXNnKHNvY2tldERlc2NyaXB0b3IsICZtZXNzYWdlLCAwKTsKIAotICAgICAgICAgICAgaWYgKG1l
c3NhZ2VJbmZvLmlzTWVzc2FnZUJvZHlPT0woKSkgewotICAgICAgICAgICAgICAgIEFTU0VSVCht
ZXNzYWdlSW5mby5ib2R5U2l6ZSgpKTsKKyAgICAgICAgaWYgKGJ5dGVzUmVhZCA8IDApIHsKKyAg
ICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICAgICAgICAgIFdlYktpdDo6U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwot
ICAgICAgICAgICAgICAgIGhhbmRsZS5hZG9wdEZyb21BdHRhY2htZW50KGZpbGVEZXNjcmlwdG9y
c1thdHRhY2htZW50Q291bnRdLCBhdHRhY2htZW50U2l6ZXNbYXR0YWNobWVudENvdW50XSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKGhhbmRsZS5pc051bGwoKSkgewotICAgICAgICAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogCi0gICAg
ICAgICAgICAgICAgb29sTWVzc2FnZUJvZHkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6Y3JlYXRl
KGhhbmRsZSwgV2ViS2l0OjpTaGFyZWRNZW1vcnk6OlJlYWRPbmx5KTsKLSAgICAgICAgICAgICAg
ICBpZiAoIW9vbE1lc3NhZ2VCb2R5KSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGJvb2wgZm91
bmQgPSBmYWxzZTsKKyAgICAgICAgc3RydWN0IGNtc2doZHIqIGNvbnRyb2xNZXNzYWdlOworICAg
ICAgICBmb3IgKGNvbnRyb2xNZXNzYWdlID0gQ01TR19GSVJTVEhEUigmbWVzc2FnZSk7IGNvbnRy
b2xNZXNzYWdlOyBjb250cm9sTWVzc2FnZSA9IENNU0dfTlhUSERSKCZtZXNzYWdlLCBjb250cm9s
TWVzc2FnZSkpIHsKKyAgICAgICAgICAgIGlmIChjb250cm9sTWVzc2FnZS0+Y21zZ19sZXZlbCA9
PSBTT0xfU09DS0VUICYmIGNvbnRyb2xNZXNzYWdlLT5jbXNnX3R5cGUgPT0gU0NNX1JJR0hUUykg
eworICAgICAgICAgICAgICAgICpmaWxlRGVzY3JpcHRvcnNDb3VudCA9IChjb250cm9sTWVzc2Fn
ZS0+Y21zZ19sZW4gLSBDTVNHX0xFTigwKSkgLyBzaXplb2YoaW50KTsKKyAgICAgICAgICAgICAg
ICBtZW1jcHkoZmlsZURlc2NyaXB0b3JzLCBDTVNHX0RBVEEoY29udHJvbE1lc3NhZ2UpLCBzaXpl
b2YoaW50KSAqICpmaWxlRGVzY3JpcHRvcnNDb3VudCk7CisKKyAgICAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8ICpmaWxlRGVzY3JpcHRvcnNDb3VudDsgKytpKSB7CisgICAgICAg
ICAgICAgICAgICAgIHdoaWxlIChmY250bChmaWxlRGVzY3JpcHRvcnNbaV0sIEZfU0VURkwsIEZE
X0NMT0VYRUMpID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJybm8gIT0g
RUlOVFIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgY29udHJvbE1lc3NhZ2UgPSBDTVNHX05YVEhEUigmbWVz
c2FnZSwgY29udHJvbE1lc3NhZ2UpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
Zm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCFmb3VuZCkKKyAgICAgICAgICAgICpmaWxlRGVzY3JpcHRv
cnNDb3VudCA9IDA7CisKKyAgICAgICAgcmV0dXJuIGJ5dGVzUmVhZDsKICAgICB9CiAKLSAgICBB
U1NFUlQoYXR0YWNobWVudHMuc2l6ZSgpID09IG1lc3NhZ2VJbmZvLmlzTWVzc2FnZUJvZHlPT0wo
KSA/IG1lc3NhZ2VJbmZvLmF0dGFjaG1lbnRDb3VudCgpIC0gMSA6IG1lc3NhZ2VJbmZvLmF0dGFj
aG1lbnRDb3VudCgpKTsKKyAgICByZXR1cm4gLTE7Cit9CiAKLSAgICB1bnNpZ25lZCBjaGFyKiBt
ZXNzYWdlQm9keSA9IG1lc3NhZ2VEYXRhOwordm9pZCBDb25uZWN0aW9uOjpyZWFkeVJlYWRIYW5k
bGVyKCkKK3sKKyNpZiBQTEFURk9STShRVCkKKyAgICBTb2NrZXROb3RpZmllclJlc291cmNlR3Vh
cmQgc29ja2V0Tm90aWZpZXJFbmFibGVyKG1fc29ja2V0Tm90aWZpZXIpOworI2VuZGlmCiAKLSAg
ICBpZiAobWVzc2FnZUluZm8uaXNNZXNzYWdlQm9keU9PTCgpKQotICAgICAgICBtZXNzYWdlQm9k
eSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KG9vbE1lc3NhZ2VCb2R5LT5kYXRh
KCkpOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIHNpemVfdCBmaWxlRGVzY3JpcHRvcnND
b3VudCA9IDA7CisgICAgICAgIHNpemVfdCBieXRlc1RvUmVhZCA9IG1fcmVhZEJ1ZmZlci5zaXpl
KCkgLSBtX3JlYWRCdWZmZXJTaXplOworICAgICAgICBzc2l6ZV90IGJ5dGVzUmVhZCA9IHJlYWRC
eXRlc0Zyb21Tb2NrZXQobV9zb2NrZXREZXNjcmlwdG9yLCBtX3JlYWRCdWZmZXIuZGF0YSgpICsg
bV9yZWFkQnVmZmVyU2l6ZSwgYnl0ZXNUb1JlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2ZpbGVEZXNjcmlwdG9ycy5kYXRhKCkgKyBtX2ZpbGVE
ZXNjcmlwdG9yc1NpemUsICZmaWxlRGVzY3JpcHRvcnNDb3VudCk7CiAKLSAgICBBcmd1bWVudERl
Y29kZXIqIGFyZ3VtZW50RGVjb2RlcjsKLSAgICBpZiAoYXR0YWNobWVudHMuaXNFbXB0eSgpKQot
ICAgICAgICBhcmd1bWVudERlY29kZXIgPSBuZXcgQXJndW1lbnREZWNvZGVyKG1lc3NhZ2VCb2R5
LCBtZXNzYWdlSW5mby5ib2R5U2l6ZSgpKTsKLSAgICBlbHNlCi0gICAgICAgIGFyZ3VtZW50RGVj
b2RlciA9IG5ldyBBcmd1bWVudERlY29kZXIobWVzc2FnZUJvZHksIG1lc3NhZ2VJbmZvLmJvZHlT
aXplKCksIGF0dGFjaG1lbnRzKTsKKyAgICAgICAgaWYgKGJ5dGVzUmVhZCA8IDApIHsKKyAgICAg
ICAgICAgIC8vIEVJTlRSIHdhcyBhbHJlYWR5IGhhbmRsZWQgYnkgcmVhZEJ5dGVzRnJvbVNvY2tl
dC4KKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4gfHwgZXJybm8gPT0gRVdPVUxEQkxP
Q0spCisgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2Vzc0luY29taW5nTWVzc2Fn
ZShtZXNzYWdlSW5mby5tZXNzYWdlSUQoKSwgYWRvcHRQdHIoYXJndW1lbnREZWNvZGVyKSk7Cisg
ICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIG90aGVyIGVycm9ycyBoZXJlPworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICBBU1NFUlQoIWNvbnRyb2xNZXNzYWdlKTsKKyAg
ICAgICAgbV9yZWFkQnVmZmVyU2l6ZSArPSBieXRlc1JlYWQ7CisgICAgICAgIG1fZmlsZURlc2Ny
aXB0b3JzU2l6ZSArPSBmaWxlRGVzY3JpcHRvcnNDb3VudDsKKworICAgICAgICBpZiAoIWJ5dGVz
UmVhZCkgeworICAgICAgICAgICAgLy8gQ29ubmVjdGlvbiBjbG9zZWQuCisgICAgICAgICAgICBj
b25uZWN0aW9uRGlkQ2xvc2UoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIFByb2Nlc3MgbWVzc2FnZXMgZnJvbSBkYXRhIHJlY2VpdmVkLgorICAgICAgICB3
aGlsZSAocHJvY2Vzc01lc3NhZ2UoKSkgeyB9CisgICAgfQogfQogCiBib29sIENvbm5lY3Rpb246
Om9wZW4oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0
ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5j
aGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCmluZGV4IGY4NzcyMDkuLjM2ZDI5YmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xh
dW5jaGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3Rr
L1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBQcm9jZXNzTGF1
bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogICAgIEdQaWQgcGlkID0gMDsKIAogICAgIGludCBzb2Nr
ZXRzWzJdOwotICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tfREdSQU0sIDAsIHNvY2tl
dHMpIDwgMCkgeworICAgIGlmIChzb2NrZXRwYWlyKEFGX1VOSVgsIFNPQ0tfU1RSRUFNLCAwLCBz
b2NrZXRzKSA8IDApIHsKICAgICAgICAgZ19wcmludGVycigiQ3JlYXRpb24gb2Ygc29ja2V0IGZh
aWxlZDogJXMuXG4iLCBnX3N0cmVycm9yKGVycm5vKSk7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICByZXR1cm47Cg==
</data>
<flag name="review"
          id="88390"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>