<?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>156048</bug_id>
          
          <creation_ts>2016-03-30 17:17:04 -0700</creation_ts>
          <short_desc>We sometimes fail to remove outdated entry from the disk cache after revalidation and when the resource is no longer cacheable</short_desc>
          <delta_ts>2016-04-05 09:50:38 -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>Page Loading</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.11</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nolan Lawson">nolan</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jan</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1179246</commentid>
    <comment_count>0</comment_count>
      <attachid>275241</attachid>
    <who name="Nolan Lawson">nolan</who>
    <bug_when>2016-03-30 17:17:04 -0700</bug_when>
    <thetext>Created attachment 275241
Reproducible test case

This bug appears in WebKit Nightly (9.1 11601.5.17.1 r198834), but not the stable version of Safari (9.1 11601.5.17.1).

Steps to repro:

1. Safari performs a GET, server provides a cached response with an ETag
2. Safari requests with if-none-match and the server responds with a 304
3. Safari requests again, but resource has been removed so the server responds with a non-empty 404
4. Safari requests with if-none-match again, so server responds with 304 (this is where the bug occurs!)
5. Every subsequent request is a 304 for the *old* resource rather than the new resource

This is not a niche situation - it happens pretty frequently with CouchDB due to CouchDB re-using the revision identifier (_rev) as the ETag. If a resource is removed and re-created with the same _rev, then Safari will not ask for new content and will remain permanently stuck on old content.

If step 2 is skipped (i.e. Safari doesn&apos;t receive the 304 response), then the bug does not occur.

This bug cannot be reproduced in Firefox (which submits if-none-match) or Chrome (which doesn&apos;t submit if-none-match).

I&apos;ve attached a test case as a ZIP file. I&apos;ve also created a Gist: https://gist.github.com/nolanlawson/6cc2a537d390578bc235c00996f5b938. Steps to reproduce are in the _readme.md.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179379</commentid>
    <comment_count>1</comment_count>
    <who name="Nolan Lawson">nolan</who>
    <bug_when>2016-03-31 06:06:09 -0700</bug_when>
    <thetext>Clarification: by &quot;server provides a cached response&quot; I meant &quot;server provides a cacheable response.&quot;

I&apos;ll also note that this could be considered a CouchDB bug rather than a WebKit bug, because if the client never gets the 404, they would never be informed that the content had changed, since the ETag never changed. And AFAICT the spec doesn&apos;t specify whether 404 should invalidate the ETag: http://tools.ietf.org/html/rfc7232#section-2.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1179387</commentid>
    <comment_count>2</comment_count>
    <who name="Nolan Lawson">nolan</who>
    <bug_when>2016-03-31 06:59:47 -0700</bug_when>
    <thetext>FWIW, I&apos;ve filed a bug on CouchDB: https://issues.apache.org/jira/browse/COUCHDB-2978

I leave it up to your discretion as to whether you consider this a bug from WebKit&apos;s perspective.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180149</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-04-02 23:06:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/25514480&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180228</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-03 16:06:47 -0700</bug_when>
    <thetext>Disabling disk cache speculative validation does not fix the problem so this is not a regression from this new feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180233</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-03 16:29:47 -0700</bug_when>
    <thetext>Seems like a disk cache bug. We should probably delete the entry we have in the disk cache in case of failed revalidation, if the new response is not cacheable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180240</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-03 16:48:59 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Seems like a disk cache bug. We should probably delete the entry we have in
&gt; the disk cache in case of failed revalidation, if the new response is not
&gt; cacheable.

Actually, it looks like we already do so at disk cache level. However, what I see is the memory cache making revalidation requests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180244</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-03 17:27:16 -0700</bug_when>
    <thetext>This is a regression from:
http://trac.webkit.org/changeset/190320</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180245</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-03 17:28:36 -0700</bug_when>
    <thetext>I will try and look into this soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180444</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-04 12:33:53 -0700</bug_when>
    <thetext>@Antti: So I found the bug.

The issue is that Storage::removeFromPendingWriteOperations(const Key&amp;) only removes the *first* pending write operation with the key instead of *ALL* of them.

So even though, the disk cache try to remove outdated entries from the cache, it can fail if there are several pending writes for this entry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180445</commentid>
    <comment_count>10</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-04 12:37:05 -0700</bug_when>
    <thetext>Nice find. Sounds like easy fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180551</commentid>
    <comment_count>11</comment_count>
      <attachid>275586</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-04 15:59:40 -0700</bug_when>
    <thetext>Created attachment 275586
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180552</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-04 16:00:41 -0700</bug_when>
    <thetext>@Nolan Lawson: Thanks a lot for the bug report and especially for the test case. It helped a lot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180784</commentid>
    <comment_count>13</comment_count>
      <attachid>275586</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-04-05 06:32:29 -0700</bug_when>
    <thetext>Comment on attachment 275586
Patch

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

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheStorage.cpp:529
&gt; +        auto found = m_pendingWriteOperations.findIf([&amp;key](const std::unique_ptr&lt;WriteOperation&gt;&amp; operation) {

Another option would be to  eliminate duplicates from m_pendingWriteOperations by turning it into ListHashSet or something. It is bit silly we may end up writing same entry multiple times (though it didn&apos;t feel common enough to optimize just for itself).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180847</commentid>
    <comment_count>14</comment_count>
      <attachid>275586</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-05 09:50:33 -0700</bug_when>
    <thetext>Comment on attachment 275586
Patch

Clearing flags on attachment: 275586

Committed r199061: &lt;http://trac.webkit.org/changeset/199061&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1180848</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-04-05 09:50:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>275241</attachid>
            <date>2016-03-30 17:17:04 -0700</date>
            <delta_ts>2016-03-30 17:17:04 -0700</delta_ts>
            <desc>Reproducible test case</desc>
            <filename>safari-etag-bug-6cc2a537d390578bc235c00996f5b938-5d9657e882709979a8b72bd1b3ade45eec1160e7.zip</filename>
            <type>application/zip</type>
            <size>2780</size>
            <attacher name="Nolan Lawson">nolan</attacher>
            
              <data encoding="base64">UEsDBAoAAAAAAKuJfkgAAAAAAAAAAAAAAABKAAkANmNjMmE1MzdkMzkwNTc4YmMyMzVjMDA5OTZm
NWI5MzgtYmZiZTBjNGU5MTFmNWVjMzczOTNlMzgxMDM2OWJlZjVhZTE1ZmVmOS9VVAUAAaJr/FZQ
SwMECgAAAAgAq4l+SMVflJuaAAAA2wAAAFQACQA2Y2MyYTUzN2QzOTA1NzhiYzIzNWMwMDk5NmY1
YjkzOC1iZmJlMGM0ZTkxMWY1ZWMzNzM5M2UzODEwMzY5YmVmNWFlMTVmZWY5L19yZWFkbWUubWRV
VAUAAaJr/FaFjssNgzAQBe+uYguIwIplfnVQAGZxsKXFa+ElUboP0EBuo6c30owMu887Lwf6B5S4
ZfrCwoNS0zTNrgS1RgEkTh6CSC5DXa+xSHXO4Zgr5K1OTC6R+xROdYP4dNa0i+m1bbsZn8ai1n3f
vOzcm+7yFC7w76dS3iCmIo7o5pN2uaKUGoNPkNw7rk48CN9hZxcxOgpcZDBa6+oHUEsDBAoAAAAI
AKuJfkg5CunpLgIAAJ4EAABUAAkANmNjMmE1MzdkMzkwNTc4YmMyMzVjMDA5OTZmNWI5MzgtYmZi
ZTBjNGU5MTFmNWVjMzczOTNlMzgxMDM2OWJlZjVhZTE1ZmVmOS9pbmRleC5odG1sVVQFAAGia/xW
rVRNb5tAEL3zK0a+AApa0shVJRs7UlWrSZWkleNKPfSyhsEQ4V26H3asyP+9s0AciHusLcEyX/ve
m9lNCrOt5l6yltmBXsWHOSyxVhIeec5VCePLMSxWfANru0licntJrRDKbDbKSl1X/DCaJzGZyKFT
VdZm7gW5FakppYAghBfP23FFCTCDL9wgE3IfhNPG2FUgTyZTu0Vh2AbNokK3/Hy4zQK/C/Epw+vW
rBQC1c3q/o4S/dscDtKCRoQRYQTl0Gc2xWwEa6zkPgJToHAPxwH2XPdi2G/hT1uE5Fye7FTZKIvk
OnHJ0aRFYFXlOAHVMFYJELiHH0puS4092gq1rHYYUdQTpqbNAHDbPBeKiru0X/d3N8bUS/xjUZum
8rQJoxAmiaKSLrQt0fdUkjuAQ5Wh+XUbBy/acGP1pMlo1xG4Hk/g2+P3B1ZzRYCdkzJqKTSu8NmE
xw7BsbddjSLwvy5WfgRDiBpFFjTfx9A7vldqSUisSjEYyNWK6MdPWoprGiIfLmg0QuZaNNSvfiVV
5u03c/DZDpV2IbPZDK7eeL9vXs4rjR2X5nk+Oxc0PNR9AtBUb0WiL38CztjIpI0qxabMD28IOsI0
GY7ykCl5OiZ9+/82n7X9n9yCoSTX0ClFnOlvrz6NU/hZgCwiGB4b5sPkLPjyIzxIoJA1Hc7odJCE
NIPMENppIKwpd51OabRkhaySG7YuaV46Q9jI6B1DN0BJ/HpzJHF3D8XttfQXUEsDBAoAAAAIAKuJ
fkhPq5jeAQIAAFQFAABSAAkANmNjMmE1MzdkMzkwNTc4YmMyMzVjMDA5OTZmNWI5MzgtYmZiZTBj
NGU5MTFmNWVjMzczOTNlMzgxMDM2OWJlZjVhZTE1ZmVmOS9pbmRleC5qc1VUBQABomv8Vr1UTWvb
QBC9+1dMT7umtmQ7hoKNT6G09/QWQthII2uLtCvvh0hx/N87q5UciZC2UFoMNsy8ffPmzXhaYQCf
G4PWwgEMnrw0yFkfYvP9rCWEVl9R5GgmGK2WZYyyeYeqtTkKNYbESGDpAKJpKNtzc4pSIPEWecRx
lmPL5gPaEkhqFWqeLxQrvMocBcBmxj99/iaOnHjmcJ7Bq8AQWsAVymMawJXSJgZr3WJEchYYgjSA
C31fxgVQ5TerLXGdFtARfrdaRSpZQIgnfev3TBZLRVbUwmUle4DD4QCs0JoRHNIUrCiEkSSJDCn0
cyeGKBOLrpew6PH7UU7ld044bznJiBIBK4uRMiuNrnHKdCuyEpe3Wjmjq0BZe+uWBltRyVw4nNK/
Xzo0yrtuu6rBljCkY3iShjgbuzsYFK0JQ8u0V44mNgzvPnh18mh+JDJ/gJcXWAfid9KH/v3HiApe
94Tk6nqY5b9p+tzSOEnTDtaXseVTEZtBxNsd+TOCmyvBZIv3f9FZ3JQtbUrfidJuF5r0Kme/kLL9
X4ZuJiJ+79+An4Xf65FgKVXqj0fXtMz442MujRI1zgdkJa1DRf+b1ertHcho5XSFSaWPnN2hoYpA
TMZhTicEGm0chJcf4IuGVlrpoHSu2aXpevMpWdFnvQt5cJo0N0bnPkO6LQhP/pgEB4Lin1BLAwQK
AAAACACriX5IFrG4uMsAAABNAQAAVgAJADZjYzJhNTM3ZDM5MDU3OGJjMjM1YzAwOTk2ZjViOTM4
LWJmYmUwYzRlOTExZjVlYzM3MzkzZTM4MTAzNjliZWY1YWUxNWZlZjkvcGFja2FnZS5qc29uVVQF
AAGia/xWTZBLagMxDED3cwrjdW0yaaBQSkn2IXdQPWrG7YxkZKcJhNw9/kzabgx6erI+104pTTCj
flVaMAibCJ8g3hCmM8u3+Tgd9VOxflCiZypib1d21eiA0YkPack0OIOvkacBL/YrNtrEmBPXHBaQ
QFLxiAdUv3JO3moBnNLIUoQDT0BqD+fIpN6oRNv6ThVZx/N7azJ5hxTrOrsAbkSz/hs1YO5BzuO/
IfASBGMBemP7Z7upclmC5QjLui/LHxkzmRFhyMd4XKKvE3e37g5QSwECAAAKAAAAAACriX5IAAAA
AAAAAAAAAAAASgAJAAAAAAAAABAAAAAAAAAANmNjMmE1MzdkMzkwNTc4YmMyMzVjMDA5OTZmNWI5
MzgtYmZiZTBjNGU5MTFmNWVjMzczOTNlMzgxMDM2OWJlZjVhZTE1ZmVmOS9VVAUAAaJr/FZQSwEC
AAAKAAAACACriX5IxV+Um5oAAADbAAAAVAAJAAAAAAABAAAAAABxAAAANmNjMmE1MzdkMzkwNTc4
YmMyMzVjMDA5OTZmNWI5MzgtYmZiZTBjNGU5MTFmNWVjMzczOTNlMzgxMDM2OWJlZjVhZTE1ZmVm
OS9fcmVhZG1lLm1kVVQFAAGia/xWUEsBAgAACgAAAAgAq4l+SDkK6ekuAgAAngQAAFQACQAAAAAA
AQAAAAAAhgEAADZjYzJhNTM3ZDM5MDU3OGJjMjM1YzAwOTk2ZjViOTM4LWJmYmUwYzRlOTExZjVl
YzM3MzkzZTM4MTAzNjliZWY1YWUxNWZlZjkvaW5kZXguaHRtbFVUBQABomv8VlBLAQIAAAoAAAAI
AKuJfkhPq5jeAQIAAFQFAABSAAkAAAAAAAEAAAAAAC8EAAA2Y2MyYTUzN2QzOTA1NzhiYzIzNWMw
MDk5NmY1YjkzOC1iZmJlMGM0ZTkxMWY1ZWMzNzM5M2UzODEwMzY5YmVmNWFlMTVmZWY5L2luZGV4
LmpzVVQFAAGia/xWUEsBAgAACgAAAAgAq4l+SBaxuLjLAAAATQEAAFYACQAAAAAAAQAAAAAAqQYA
ADZjYzJhNTM3ZDM5MDU3OGJjMjM1YzAwOTk2ZjViOTM4LWJmYmUwYzRlOTExZjVlYzM3MzkzZTM4
MTAzNjliZWY1YWUxNWZlZjkvcGFja2FnZS5qc29uVVQFAAGia/xWUEsFBgAAAAAFAAUArQIAAPEH
AAAoAGJmYmUwYzRlOTExZjVlYzM3MzkzZTM4MTAzNjliZWY1YWUxNWZlZjk=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>275586</attachid>
            <date>2016-04-04 15:59:40 -0700</date>
            <delta_ts>2016-04-05 09:50:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-156048-20160404155945.patch</filename>
            <type>text/plain</type>
            <size>7975</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk5MDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2U5NjYzYzIxNDUzM2Zk
MTJmNzU0ZTY5YjllNDFjN2M2NWIyZTE2MS4uMTE0ZjExNjM2MjExOTBiYjE1Y2ZjYzA0ZDUzOGU0
N2IwZjM0ZDQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE2LTA0LTA0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgV2Ugc29tZXRpbWVzIGZhaWwg
dG8gcmVtb3ZlIG91dGRhdGVkIGVudHJ5IGZyb20gdGhlIGRpc2sgY2FjaGUgYWZ0ZXIgcmV2YWxp
ZGF0aW9uIGFuZCB3aGVuIHRoZSByZXNvdXJjZSBpcyBubyBsb25nZXIgY2FjaGVhYmxlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTYwNDgKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzI1NTE0NDgwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlIHdvdWxkIHNvbWV0aW1lcyBmYWlsIHRvIHJlbW92ZSBv
dXRkYXRlZCBlbnRyeSBmcm9tIHRoZSBkaXNrIGNhY2hlCisgICAgICAgIGFmdGVyIHJldmFsaWRh
dGlvbiBhbmQgd2hlbiB0aGUgcmVzb3VyY2UgaXMgbm8gbG9uZ2VyIGNhY2hlYWJsZS4gVGhpcwor
ICAgICAgICB3YXMgZHVlIHRvIFN0b3JhZ2U6OnJlbW92ZUZyb21QZW5kaW5nV3JpdGVPcGVyYXRp
b25zKCkgb25seSByZW1vdmluZworICAgICAgICB0aGUgZmlyc3QgcGVuZGluZyB3cml0ZSBvcGVy
YXRpb24gd2l0aCBhIGdpdmVuIGtleSBpbnN0ZWFkIG9mIGFjdHVhbGx5CisgICAgICAgIHJlbW92
aW5nIGFsbCBvZiB0aGUgb3BlcmF0aW9ucyB3aXRoIHRoaXMga2V5LgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6U3RvcmFnZTo6cmVtb3ZlRnJvbVBlbmRpbmdXcml0ZU9wZXJhdGlv
bnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2Uu
aDoKKwogMjAxNi0wNC0wNCAgSm9vbmdodW4gUGFyayAgPGpoNzE4LnBhcmtAc2Ftc3VuZy5jb20+
CiAKICAgICAgICAgW0VGTF0gRml4IGJ1aWxkIGJyZWFrIHNpbmNlIHIxOTg4MDAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3Jh
Z2UuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RvcmFnZS5jcHAKaW5kZXggOTRhYjNmMWI5Njk5MzBiYjg5OGM2MjllMWFhNGQ4ZjdiM2M3ODMw
My4uMWY2NTBiZmQxODgwODJjYjE4MzQ4ZDFmMzEwNDQxMDA4NjY1MTg3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RvcmFnZS5jcHAKQEAgLTUyMywxNiArNTIzLDE4IEBAIERhdGEgU3RvcmFnZTo6ZW5jb2RlUmVj
b3JkKGNvbnN0IFJlY29yZCYgcmVjb3JkLCBPcHRpb25hbDxCbG9iU3RvcmFnZTo6QmxvYj4gYmxv
CiAgICAgcmV0dXJuIHsgaGVhZGVyRGF0YSB9OwogfQogCi1ib29sIFN0b3JhZ2U6OnJlbW92ZUZy
b21QZW5kaW5nV3JpdGVPcGVyYXRpb25zKGNvbnN0IEtleSYga2V5KQordm9pZCBTdG9yYWdlOjpy
ZW1vdmVGcm9tUGVuZGluZ1dyaXRlT3BlcmF0aW9ucyhjb25zdCBLZXkmIGtleSkKIHsKLSAgICBh
dXRvIGVuZCA9IG1fcGVuZGluZ1dyaXRlT3BlcmF0aW9ucy5lbmQoKTsKLSAgICBmb3IgKGF1dG8g
aXQgPSBtX3BlbmRpbmdXcml0ZU9wZXJhdGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
Ci0gICAgICAgIGlmICgoKml0KS0+cmVjb3JkLmtleSA9PSBrZXkpIHsKLSAgICAgICAgICAgIG1f
cGVuZGluZ1dyaXRlT3BlcmF0aW9ucy5yZW1vdmUoaXQpOwotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIH0KKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBhdXRvIGZvdW5kID0g
bV9wZW5kaW5nV3JpdGVPcGVyYXRpb25zLmZpbmRJZihbJmtleV0oY29uc3Qgc3RkOjp1bmlxdWVf
cHRyPFdyaXRlT3BlcmF0aW9uPiYgb3BlcmF0aW9uKSB7CisgICAgICAgICAgICByZXR1cm4gb3Bl
cmF0aW9uLT5yZWNvcmQua2V5ID09IGtleTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaWYgKGZv
dW5kID09IG1fcGVuZGluZ1dyaXRlT3BlcmF0aW9ucy5lbmQoKSkKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIG1fcGVuZGluZ1dyaXRlT3BlcmF0aW9ucy5yZW1vdmUoZm91bmQpOwogICAg
IH0KLSAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgU3RvcmFnZTo6cmVtb3ZlKGNvbnN0IEtl
eSYga2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3RvcmFnZS5oIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCmluZGV4IGNhOGRhOGZiNGFkZmNjMGRkNmViNTZiZjgx
OGVkMWQxN2YwMDJhZTMuLmM0ZGQ2ZGU3YmZmZmI5M2E5NDhkN2Y3ZDc5ZjljZTZiM2YzMGQ1ZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdG9yYWdlLmgKQEAgLTEyMiw3ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgcmVhZFJlY29yZChSZWFkT3BlcmF0aW9uJiwgY29uc3QgRGF0YSYpOwogCiAgICAgdm9pZCB1
cGRhdGVGaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIHBhdGgpOwotICAgIGJvb2wg
cmVtb3ZlRnJvbVBlbmRpbmdXcml0ZU9wZXJhdGlvbnMoY29uc3QgS2V5Jik7CisgICAgdm9pZCBy
ZW1vdmVGcm9tUGVuZGluZ1dyaXRlT3BlcmF0aW9ucyhjb25zdCBLZXkmKTsKIAogICAgIFdvcmtR
dWV1ZSYgaW9RdWV1ZSgpIHsgcmV0dXJuIG1faW9RdWV1ZS5nZXQoKTsgfQogICAgIFdvcmtRdWV1
ZSYgYmFja2dyb3VuZElPUXVldWUoKSB7IHJldHVybiBtX2JhY2tncm91bmRJT1F1ZXVlLmdldCgp
OyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggOWRjMWRmMGRkZjMyMWE0NGYxZWY1MDQyYjVjNzM1ZjUyNzgwNmQ2ZC4uNDM2
YTNhMmNiYjBiNjFmM2NiOTIzMGFmMzNmNDhkMWJhY2ViMjViMCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDE2LTA0LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgV2Ugc29tZXRpbWVzIGZhaWwgdG8gcmVtb3ZlIG91dGRhdGVkIGVudHJ5IGZyb20gdGhlIGRp
c2sgY2FjaGUgYWZ0ZXIgcmV2YWxpZGF0aW9uIGFuZCB3aGVuIHRoZSByZXNvdXJjZSBpcyBubyBs
b25nZXIgY2FjaGVhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTYwNDgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI1NTE0NDgwPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0IGNvdmVy
YWdlIGZvciB0aGUgYnVnLgorCisgICAgICAgICogaHR0cC90ZXN0cy9jYWNoZS9kaXNrLWNhY2hl
L2Rpc2stY2FjaGUtcmVtb3ZlLXNldmVyYWwtcGVuZGluZy13cml0ZXMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2NhY2hlL2Rpc2stY2FjaGUvZGlzay1jYWNoZS1y
ZW1vdmUtc2V2ZXJhbC1wZW5kaW5nLXdyaXRlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2NhY2hlL2Rpc2stY2FjaGUvcmVzb3VyY2VzL2pzb24ucGhwOiBBZGRlZC4KKwogMjAx
Ni0wNC0wNCAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBN
YXJraW5nIHBsdWdpbnMvZm9jdXMuaHRtbCBhcyBmbGFreSBvbiBtYWMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUvZGlzay1jYWNoZS9kaXNrLWNhY2hlLXJlbW92ZS1z
ZXZlcmFsLXBlbmRpbmctd3JpdGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvY2FjaGUvZGlzay1jYWNoZS9kaXNrLWNhY2hlLXJlbW92ZS1zZXZlcmFsLXBlbmRpbmctd3Jp
dGVzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYWRkNjk1MzBhYjliZDc5OTA5ZGRhMTgzNjYz
NGVkNTkwNjcwYWFkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
YWNoZS9kaXNrLWNhY2hlL2Rpc2stY2FjaGUtcmVtb3ZlLXNldmVyYWwtcGVuZGluZy13cml0ZXMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK01ha2Ugc3VyZSB0aGF0IHdlIHByb3Blcmx5
IHJlbW92ZSBjYWNoZWQgZW50cnkgaWYgdGhlIGVudHJ5IGlzIG5vIGxvbmdlciBjYWNoZWFibGUg
YWZ0ZXIgcmV2YWxpZGF0aW9uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCisyMDA6
IHsidmVyc2lvbiI6MX0KKzIwMDogeyJ2ZXJzaW9uIjoxfQorNDA0OiB7Im5vdCI6ImZvdW5kIn0K
KzIwMDogeyJ2ZXJzaW9uIjoyfQorMjAwOiB7InZlcnNpb24iOjJ9CitQQVNTIGJ1Z1JlcHJvZHVj
ZWQgaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2NhY2hlL2Rpc2stY2Fj
aGUvZGlzay1jYWNoZS1yZW1vdmUtc2V2ZXJhbC1wZW5kaW5nLXdyaXRlcy5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9jYWNoZS9kaXNrLWNhY2hlL2Rpc2stY2FjaGUtcmVtb3ZlLXNldmVy
YWwtcGVuZGluZy13cml0ZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTZjMWFjMjc0ODU3NWI2OGM5ZDA5
YTRjYWM3YWY4NzgwY2I0MzIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9jYWNoZS9kaXNrLWNhY2hlL2Rpc2stY2FjaGUtcmVtb3ZlLXNldmVyYWwtcGVuZGluZy13
cml0ZXMuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIk1ha2Ugc3VyZSB0aGF0IHdlIHByb3Blcmx5IHJlbW92ZSBj
YWNoZWQgZW50cnkgaWYgdGhlIGVudHJ5IGlzIG5vIGxvbmdlciBjYWNoZWFibGUgYWZ0ZXIgcmV2
YWxpZGF0aW9uIik7Citqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIGlkID0gTWF0aC5mbG9v
cigoTWF0aC5yYW5kb20oKSAqIDEwMDAwMDAwMDAwMDApKTsKK3ZhciBidWdSZXByb2R1Y2VkID0g
dHJ1ZTsKKworZnVuY3Rpb24gZmV0Y2godXJsKSB7CisgIHJldHVybiBuZXcgUHJvbWlzZShmdW5j
dGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVz
dCh1cmwpOworICAgIHhoci5vbmVycm9yID0gcmVqZWN0OworICAgIHhoci5vbmxvYWQgPSBmdW5j
dGlvbiAoKSB7CisgICAgICByZXNvbHZlKHtzdGF0dXM6IHhoci5zdGF0dXMsIGJvZHk6IEpTT04u
cGFyc2UoeGhyLnJlc3BvbnNlVGV4dCl9KTsKKyAgICB9OworICAgIHhoci5vcGVuKCdHRVQnLCB1
cmwpOworICAgIHhoci5zZW5kKCk7CisgIH0pCit9CisKK2Z1bmN0aW9uIGZldGNoUmVzb3VyY2Uo
KSB7CisgIHJldHVybiBmZXRjaCgncmVzb3VyY2VzL2pzb24ucGhwP2lkPScgKyBpZCkudGhlbihm
dW5jdGlvbiAocmVzcCkgeworICAgIGlmIChyZXNwLmJvZHkudmVyc2lvbiA9PT0gMikgeworICAg
ICAgYnVnUmVwcm9kdWNlZCA9IGZhbHNlOworICAgIH0KKyAgICBkZWJ1ZyhyZXNwLnN0YXR1cyAr
ICc6ICcgKyBKU09OLnN0cmluZ2lmeShyZXNwLmJvZHkpKTsKKyAgfSk7Cit9CisKK29ubG9hZCA9
IGZ1bmN0aW9uKCkgeworICBmZXRjaFJlc291cmNlKCkKKyAgICAudGhlbihmZXRjaFJlc291cmNl
KQorICAgIC50aGVuKGZldGNoUmVzb3VyY2UpCisgICAgLnRoZW4oZmV0Y2hSZXNvdXJjZSkKKyAg
ICAudGhlbihmZXRjaFJlc291cmNlKQorICAgIC50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgIHNo
b3VsZEJlRmFsc2UoImJ1Z1JlcHJvZHVjZWQiKTsKKyAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
IH0pCisgICAgLmNhdGNoKGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSkpOworfQorCis8L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvY2FjaGUv
ZGlzay1jYWNoZS9yZXNvdXJjZXMvanNvbi5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Nh
Y2hlL2Rpc2stY2FjaGUvcmVzb3VyY2VzL2pzb24ucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4YTU3YzQzMDYz
ZWQwZTk0NDQzYzA4NGVkOTQ0ZTc4ZGU2NzI3MTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2NhY2hlL2Rpc2stY2FjaGUvcmVzb3VyY2VzL2pzb24ucGhwCkBAIC0w
LDAgKzEsNDIgQEAKKzw/cGhwCisKK2Z1bmN0aW9uIHNlbmQzMDQoKQoreworICAgIGhlYWRlcigi
SFRUUC8xLjEgMzA0IE5vdCBNb2RpZmllZCIpOworICAgIGhlYWRlcigiRVRhZzogZm9vIik7Cit9
CisKKyRpZCA9ICRfR0VUWyJpZCJdOworJGNvdW50ID0gMTsKK2lmIChpc3NldCgkX0NPT0tJRVsk
aWRdKSkgeworICAgICRjb3VudCA9ICRfQ09PS0lFWyRpZF07Cit9CisKK3NldGNvb2tpZSgkaWQs
ICRjb3VudCArIDEpOworCitpZiAoJGNvdW50ID09IDEpIHsKKyAgICBoZWFkZXIoIkNhY2hlLUNv
bnRyb2w6IG11c3QtcmV2YWxpZGF0ZSIpOworICAgIGhlYWRlcigiRVRhZzogZm9vIik7CisgICAg
aGVhZGVyKCJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iKTsKKyAgICBlY2hvICd7InZl
cnNpb24iOiAxfSc7Cit9IGVsc2UgaWYgKCRjb3VudCA9PSAyKSB7CisgICAgc2VuZDMwNCgpOwor
fSBlbHNlIGlmICgkY291bnQgPT0gMykgeworICAgIGhlYWRlcigiSFRUUC8xLjEgNDA0IE5vdCBG
b3VuZCIpOworICAgIGhlYWRlcigiQ2FjaGUtQ29udHJvbDogbXVzdC1yZXZhbGlkYXRlIik7Cisg
ICAgaGVhZGVyKCJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24iKTsKKyAgICBlY2hvICd7
Im5vdCI6ICJmb3VuZCJ9JzsKK30gZWxzZSBpZiAoJGNvdW50ID09IDQpIHsKKyAgICBpZiAoJF9T
RVJWRVJbIkhUVFBfSUZfTk9ORV9NQVRDSCJdID09ICJmb28iKSB7CisgICAgICAgIHNlbmQzMDQo
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IG11c3QtcmV2
YWxpZGF0ZSIpOworICAgICAgICBoZWFkZXIoIkVUYWc6IGZvbyIpOworICAgICAgICBoZWFkZXIo
IkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbiIpOworICAgICAgICBlY2hvICd7InZlcnNp
b24iOiAyfSc7CisgICAgfQorfSBlbHNlIHsKKyAgICBzZW5kMzA0KCk7Cit9CisKKz8+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>