<?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>179539</bug_id>
          
          <creation_ts>2017-11-10 12:00:24 -0800</creation_ts>
          <short_desc>Call willPerformHTTPRedirection on WebCoreNSURLSession&apos;s delegate</short_desc>
          <delta_ts>2017-11-15 10:18:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>jer.noble</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1370437</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-11-10 12:00:24 -0800</bug_when>
    <thetext>Call willPerformHTTPRedirection on WebCoreNSURLSession&apos;s delegate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370439</commentid>
    <comment_count>1</comment_count>
      <attachid>326613</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-11-10 12:04:16 -0800</bug_when>
    <thetext>Created attachment 326613
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1370591</commentid>
    <comment_count>2</comment_count>
      <attachid>326613</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-11-10 16:45:57 -0800</bug_when>
    <thetext>Comment on attachment 326613
Patch

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

r=me, with nits.

&gt; Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm:617
&gt; +    [self.session addDelegateOperation:[strongSelf = RetainPtr&lt;WebCoreNSURLSessionDataTask&gt;(self), response = RetainPtr&lt;NSURLResponse&gt;(response.nsURLResponse()), request = WTFMove(request), completionHandler = WTFMove(completionHandler)] () mutable {

Can&apos;t these &quot;RetainPtr&lt;...&gt;(...)&quot; calls just be &quot;retainPtr(...)&quot; calls?

&gt; Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm:619
&gt; +        RetainPtr&lt;NSURLRequest&gt; nsRequest = request.nsURLRequest(DoNotUpdateHTTPBody);

auto?  Or maybe no need for this variable at all.

&gt; Source/WebCore/platform/network/cocoa/WebCoreNSURLSession.mm:621
&gt; +            [dataDelegate URLSession:(NSURLSession *)strongSelf.get().session task:(NSURLSessionTask *)strongSelf.get() willPerformHTTPRedirection:(NSHTTPURLResponse *)response.get() newRequest:nsRequest.get() completionHandler:BlockPtr&lt;void(NSURLRequest *)&gt;::fromCallable([completionHandler = WTFMove(completionHandler)](NSURLRequest *newRequest) mutable {

This is ... kinda ugly.  There should be some kind of templated &quot;blockPtr()&quot; which derives the BlockPtr template type from the signature of the callable, so that this could be written &quot;completionHandler:blockPtr([...] { ... })&quot;;  Also, you&apos;re creating a block, wrapping it in a BlockPtr, just to call the completionHandler with the same signature as the BlockPtr and the block.  That&apos;s screaming for some simplification.

Also, why does response.get() have to be casted to a (NSHTTPURLResponse *)?  response is a RetainPtr&lt;NSURLResponse&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371095</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-11-13 14:59:17 -0800</bug_when>
    <thetext>(In reply to Jer Noble from comment #2)
&gt; This is ... kinda ugly.  There should be some kind of templated &quot;blockPtr()&quot;
&gt; which derives the BlockPtr template type from the signature of the callable,
&gt; so that this could be written &quot;completionHandler:blockPtr([...] { ... })&quot;; 
&gt; Also, you&apos;re creating a block, wrapping it in a BlockPtr, just to call the
&gt; completionHandler with the same signature as the BlockPtr and the block. 
&gt; That&apos;s screaming for some simplification.
We do the same thing in our ObjC API.  I&apos;ve made it two separate statements to be more clear.

&gt; Also, why does response.get() have to be casted to a (NSHTTPURLResponse *)? 
&gt; response is a RetainPtr&lt;NSURLResponse&gt;.
This API requires an NSHTTPURLResponse.  Not all NSURLResponses are NSHTTPURLResponses.  Ours should be, but I&apos;ll add an early return and an assert if it isn&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371099</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-11-13 15:00:54 -0800</bug_when>
    <thetext>http://trac.webkit.org/r224786</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371986</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 09:44:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/35562336&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372004</commentid>
    <comment_count>6</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2017-11-15 10:18:18 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #3)
&gt; (In reply to Jer Noble from comment #2)
&gt; &gt; Also, why does response.get() have to be casted to a (NSHTTPURLResponse *)? 
&gt; &gt; response is a RetainPtr&lt;NSURLResponse&gt;.
&gt; This API requires an NSHTTPURLResponse.  Not all NSURLResponses are
&gt; NSHTTPURLResponses.  Ours should be, but I&apos;ll add an early return and an
&gt; assert if it isn&apos;t.

Duh. Of course.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326613</attachid>
            <date>2017-11-10 12:04:16 -0800</date>
            <delta_ts>2017-11-10 16:45:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179539-20171110120415.patch</filename>
            <type>text/plain</type>
            <size>8608</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNDcwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE3LTExLTEwICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ2FsbCB3aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbiBvbiBXZWJDb3JlTlNVUkxTZXNzaW9uJ3MgZGVsZWdhdGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTUzOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMg
bm93IHBvc3NpYmxlIQorICAgICAgICBUaGlzIHdpbGwgYWxsb3cgQVZGb3VuZGF0aW9uIHRvIGZp
eCByZWRpcmVjdC1yZWxhdGVkIGJ1Z3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL1dlYkNvcmVOU1VSTFNlc3Npb24ubW06CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Np
b24gYWRkRGVsZWdhdGVPcGVyYXRpb246XSk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Np
b24gcmVzZXRXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dlYkNvcmVOU1VS
TFNlc3Npb24gZmx1c2hXaXRoQ29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2tDbGllbnQ6OnJlZGlyZWN0UmVjZWl2ZWQpOgor
ICAgICAgICAoLVtXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2sgcmVzb3VyY2U6c2hvdWxkQ2Fj
aGVSZXNwb25zZTpdKToKKyAgICAgICAgKC1bV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrIHJl
c291cmNlOnJlY2VpdmVkRGF0YTpsZW5ndGg6XSk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNl
c3Npb25EYXRhVGFzayByZXNvdXJjZTpyZWNlaXZlZFJlZGlyZWN0OnJlcXVlc3Q6Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayByZXNv
dXJjZTpyZWNlaXZlZFJlZGlyZWN0OnJlcXVlc3Q6XSk6IERlbGV0ZWQuCisKIDIwMTctMTEtMTAg
IE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgVEVD
IGRlY29kZXJzIHRoYXQgZHVwbGljYXRlIElDVSBkZWNvZGVycwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvV2ViQ29yZU5TVVJM
U2Vzc2lvbi5tbQkocmV2aXNpb24gMjI0Njk5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jb2NvYS9XZWJDb3JlTlNVUkxTZXNzaW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW1wb3J0ICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKICNpbXBvcnQg
IlBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlci5oIgogI2ltcG9ydCAiU3VicmVzb3VyY2VMb2Fk
ZXIuaCIKKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNDEsNyArNDIsNyBAQCBA
aW50ZXJmYWNlIFdlYkNvcmVOU1VSTFNlc3Npb24gKCkKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIFBs
YXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlciYgbG9hZGVyOwogQHByb3BlcnR5IChyZWFkd3JpdGUs
IHJldGFpbikgaWQ8TlNVUkxTZXNzaW9uVGFza0RlbGVnYXRlPiBkZWxlZ2F0ZTsKIC0gKHZvaWQp
dGFza0NvbXBsZXRlZDooV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrICopdGFzazsKLS0gKHZv
aWQpYWRkRGVsZWdhdGVPcGVyYXRpb246KHZvaWQgKF4pKHZvaWQpKW9wZXJhdGlvbjsKKy0gKHZv
aWQpYWRkRGVsZWdhdGVPcGVyYXRpb246KEZ1bmN0aW9uPHZvaWQoKT4mJilvcGVyYXRpb247CiAt
ICh2b2lkKXRhc2s6KFdlYkNvcmVOU1VSTFNlc3Npb25EYXRhVGFzayAqKXRhc2sgZGlkUmVjZWl2
ZUNPUlNBY2Nlc3NDaGVja1Jlc3VsdDooQk9PTClyZXN1bHQ7CiBAZW5kCiAKQEAgLTU4LDcgKzU5
LDcgQEAgLSAodm9pZClyZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlJgogLSAodm9pZCly
ZXNvdXJjZTooUGxhdGZvcm1NZWRpYVJlc291cmNlJilyZXNvdXJjZSByZWNlaXZlZFJlc3BvbnNl
Oihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJilyZXNwb25zZTsKIC0gKEJPT0wpcmVzb3VyY2U6KFBs
YXRmb3JtTWVkaWFSZXNvdXJjZSYpcmVzb3VyY2Ugc2hvdWxkQ2FjaGVSZXNwb25zZTooY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2U7CiAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1l
ZGlhUmVzb3VyY2UmKXJlc291cmNlIHJlY2VpdmVkRGF0YTooY29uc3QgY2hhciopZGF0YSBsZW5n
dGg6KGludClsZW5ndGg7Ci0tICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2Um
KXJlc291cmNlIHJlY2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKXJlc3Bv
bnNlIHJlcXVlc3Q6KFJlc291cmNlUmVxdWVzdCYpcmVxdWVzdDsKKy0gKHZvaWQpcmVzb3VyY2U6
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpcmVzb3VyY2UgcmVjZWl2ZWRSZWRpcmVjdDooY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgcmVxdWVzdDooUmVzb3VyY2VSZXF1ZXN0JiYpcmVx
dWVzdCBjb21wbGV0aW9uSGFuZGxlcjooQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJl
cXVlc3QmJik+JiYpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmKXJlc291cmNlIGFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZFdpdGhFcnJv
cjooY29uc3QgUmVzb3VyY2VFcnJvciYpZXJyb3I7CiAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9y
bU1lZGlhUmVzb3VyY2UmKXJlc291cmNlIGxvYWRGYWlsZWRXaXRoRXJyb3I6KGNvbnN0IFJlc291
cmNlRXJyb3ImKWVycm9yOwogLSAodm9pZClyZXNvdXJjZUZpbmlzaGVkOihQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmKXJlc291cmNlOwpAQCAtMTI3LDEwICsxMjgsMTAgQEAgLSAodm9pZCl0YXNrQ29t
cGxldGVkOihXZWJDb3JlTlNVUkxTZXNzaQogICAgIH1dOwogfQogCi0tICh2b2lkKWFkZERlbGVn
YXRlT3BlcmF0aW9uOih2b2lkICheKSh2b2lkKSlibG9jaworLSAodm9pZClhZGREZWxlZ2F0ZU9w
ZXJhdGlvbjooRnVuY3Rpb248dm9pZCgpPiYmKWZ1bmN0aW9uCiB7CiAgICAgUmV0YWluUHRyPFdl
YkNvcmVOU1VSTFNlc3Npb24+IHN0cm9uZ1NlbGYgeyBzZWxmIH07Ci0gICAgUmV0YWluUHRyPE5T
QmxvY2tPcGVyYXRpb24+IG9wZXJhdGlvbiA9IFtOU0Jsb2NrT3BlcmF0aW9uIGJsb2NrT3BlcmF0
aW9uV2l0aEJsb2NrOmJsb2NrXTsKKyAgICBSZXRhaW5QdHI8TlNCbG9ja09wZXJhdGlvbj4gb3Bl
cmF0aW9uID0gW05TQmxvY2tPcGVyYXRpb24gYmxvY2tPcGVyYXRpb25XaXRoQmxvY2s6QmxvY2tQ
dHI8dm9pZCgpPjo6ZnJvbUNhbGxhYmxlKFdURk1vdmUoZnVuY3Rpb24pKS5nZXQoKV07CiAgICAg
ZGlzcGF0Y2hfYXN5bmMoX2ludGVybmFsUXVldWUuZ2V0KCksIFtzdHJvbmdTZWxmLCBvcGVyYXRp
b25dIHsKICAgICAgICAgW3N0cm9uZ1NlbGYuZ2V0KCkuZGVsZWdhdGVRdWV1ZSBhZGRPcGVyYXRp
b246b3BlcmF0aW9uLmdldCgpXTsKICAgICAgICAgW29wZXJhdGlvbiB3YWl0VW50aWxGaW5pc2hl
ZF07CkBAIC0yMTYsMTMgKzIxNywxNyBAQCAtICh2b2lkKWludmFsaWRhdGVBbmRDYW5jZWwKIC0g
KHZvaWQpcmVzZXRXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRp
b25IYW5kbGVyCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgY2Fubm90IGN1cnJlbnRseSBiZSBpbXBs
ZW1lbnRlZC4gV2UgY2Fubm90IGd1YXJhbnRlZSB0aGF0IHRoZSBuZXh0IGNvbm5lY3Rpb24gd2ls
bCBoYXBwZW4gb24gYSBuZXcgc29ja2V0LgotICAgIFtzZWxmIGFkZERlbGVnYXRlT3BlcmF0aW9u
OmNvbXBsZXRpb25IYW5kbGVyXTsKKyAgICBbc2VsZiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbY29t
cGxldGlvbkhhbmRsZXIgPSBCbG9ja1B0cjx2b2lkKCk+KGNvbXBsZXRpb25IYW5kbGVyKV0gewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH1dOwogfQogCiAtICh2b2lkKWZsdXNo
V2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgog
ewogICAgIC8vIEZJWE1FOiBUaGlzIGNhbm5vdCBjdXJyZW50bHkgYmUgaW1wbGVtZW50ZWQuIFdl
IGNhbm5vdCBndWFyYW50ZWUgdGhhdCB0aGUgbmV4dCBjb25uZWN0aW9uIHdpbGwgaGFwcGVuIG9u
IGEgbmV3IHNvY2tldC4KLSAgICBbc2VsZiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpjb21wbGV0aW9u
SGFuZGxlcl07CisgICAgW3NlbGYgYWRkRGVsZWdhdGVPcGVyYXRpb246W2NvbXBsZXRpb25IYW5k
bGVyID0gQmxvY2tQdHI8dm9pZCgpPihjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKKyAgICB9XTsKIH0KIAogLSAodm9pZClnZXRUYXNrc1dpdGhDb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1VSTFNlc3Npb25EYXRhVGFzayAqPiAq
ZGF0YVRhc2tzLCBOU0FycmF5PE5TVVJMU2Vzc2lvblVwbG9hZFRhc2sgKj4gKnVwbG9hZFRhc2tz
LCBOU0FycmF5PE5TVVJMU2Vzc2lvbkRvd25sb2FkVGFzayAqPiAqZG93bmxvYWRUYXNrcykpY29t
cGxldGlvbkhhbmRsZXIKQEAgLTM4NCw4ICszODksNyBAQCB2b2lkIFdlYkNvcmVOU1VSTFNlc3Np
b25EYXRhVGFza0NsaWVudDo6CiAKIHZvaWQgV2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrQ2xp
ZW50OjpyZWRpcmVjdFJlY2VpdmVkKFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYgcmVzb3VyY2UsIFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKLSAgICBbbV90YXNrIHJlc291cmNlOnJlc291cmNlIHJlY2VpdmVkUmVkaXJl
Y3Q6cmVzcG9uc2UgcmVxdWVzdDpyZXF1ZXN0XTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJlcXVlc3QpKTsKKyAgICBbbV90YXNrIHJlc291cmNlOnJlc291cmNlIHJlY2VpdmVkUmVk
aXJlY3Q6cmVzcG9uc2UgcmVxdWVzdDpXVEZNb3ZlKHJlcXVlc3QpIGNvbXBsZXRpb25IYW5kbGVy
OldURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXTsKIH0KIAogdm9pZCBXZWJDb3JlTlNVUkxTZXNz
aW9uRGF0YVRhc2tDbGllbnQ6OmFjY2Vzc0NvbnRyb2xDaGVja0ZhaWxlZChQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTU4Nyw3
ICs1OTEsNiBAQCAtICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmCiAtIChC
T09MKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKXJlc291cmNlIHNob3VsZENhY2hl
UmVzcG9uc2U6KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKXJlc3BvbnNlCiB7CiAgICAgQVNTRVJU
X1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IF9yZXNvdXJjZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKHJlc3BvbnNlKTsKIAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTU5OCw4
ICs2MDEsNiBAQCAtIChCT09MKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmCiAtICh2
b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmKXJlc291cmNlIHJlY2VpdmVkRGF0
YTooY29uc3QgY2hhciopZGF0YSBsZW5ndGg6KGludClsZW5ndGgKIHsKICAgICBBU1NFUlRfVU5V
U0VEKHJlc291cmNlLCAmcmVzb3VyY2UgPT0gX3Jlc291cmNlKTsKLSAgICBVTlVTRURfUEFSQU0o
ZGF0YSk7Ci0gICAgVU5VU0VEX1BBUkFNKGxlbmd0aCk7CiAgICAgUmV0YWluUHRyPE5TRGF0YT4g
bnNEYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlczpkYXRhIGxlbmd0
aDpsZW5ndGhdKTsKICAgICBSZXRhaW5QdHI8V2ViQ29yZU5TVVJMU2Vzc2lvbkRhdGFUYXNrPiBz
dHJvbmdTZWxmIHsgc2VsZiB9OwogICAgIFtzZWxmLnNlc3Npb24gYWRkRGVsZWdhdGVPcGVyYXRp
b246W3N0cm9uZ1NlbGYsIGxlbmd0aCwgbnNEYXRhXSB7CkBAIC02MTAsMTcgKzYxMSwxOSBAQCAt
ICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmCiAgICAgfV07CiB9CiAKLS0g
KHZvaWQpcmVzb3VyY2U6KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYpcmVzb3VyY2UgcmVjZWl2ZWRS
ZWRpcmVjdDooY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpcmVzcG9uc2UgcmVxdWVzdDooUmVzb3Vy
Y2VSZXF1ZXN0JilyZXF1ZXN0CistICh2b2lkKXJlc291cmNlOihQbGF0Zm9ybU1lZGlhUmVzb3Vy
Y2UmKXJlc291cmNlIHJlY2VpdmVkUmVkaXJlY3Q6KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKXJl
c3BvbnNlIHJlcXVlc3Q6KFJlc291cmNlUmVxdWVzdCYmKXJlcXVlc3QgY29tcGxldGlvbkhhbmRs
ZXI6KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmKWNvbXBsZXRp
b25IYW5kbGVyCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgJnJlc291cmNlID09IF9y
ZXNvdXJjZSk7Ci0gICAgVU5VU0VEX1BBUkFNKHJlc3BvbnNlKTsKLSAgICBVTlVTRURfUEFSQU0o
cmVxdWVzdCk7Ci0gICAgLy8gRklYTUU6IFRoaXMgY2Fubm90IGN1cnJlbnRseSBiZSBpbXBsZW1l
bnRlZCwgYXMgdGhlIGNhbGxiYWNrIGlzIHN5bmNocm9ub3VzCi0gICAgLy8gb24gdGhlIG1haW4g
dGhyZWFkLCBhbmQgdGhlIE5TVVJMU2Vzc2lvbiBkZWxlZ2F0ZSBtdXN0IGJlIGNhbGxlZCBiYWNr
IG9uIGEKLSAgICAvLyBiYWNrZ3JvdW5kIHF1ZXVlLCBhbmQgd2UgZG8gbm90IHdhbnQgdG8gYmxv
Y2sgdGhlIG1haW4gdGhyZWFkIHVudGlsIHRoZQotICAgIC8vIGRlbGVnYXRlIGhhbmRsZXMgdGhl
IGNhbGxiYWNrIGFuZCByZXNwb25kcyB2aWEgYSBjb21wbGV0aW9uIGhhbmRsZXIuIElmLCBpbgot
ICAgIC8vIHRoZSBmdXR1cmUsIHRoZSBSZXNvdXJjZUxvYWRlciBleHBvc2VzIGEgY2FsbGJhY2st
YmFzZWQgd2lsbFNlbmRSZXNwb25zZQotICAgIC8vIEFQSSwgdGhpcyBjYW4gYmUgaW1wbGVtZW50
ZWQuCisgICAgW3NlbGYuc2Vzc2lvbiBhZGREZWxlZ2F0ZU9wZXJhdGlvbjpbc3Ryb25nU2VsZiA9
IFJldGFpblB0cjxXZWJDb3JlTlNVUkxTZXNzaW9uRGF0YVRhc2s+KHNlbGYpLCByZXNwb25zZSA9
IFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPihyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCkpLCByZXF1
ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlkPE5TVVJMU2Vzc2lvbkRhdGFE
ZWxlZ2F0ZT4gZGF0YURlbGVnYXRlID0gKGlkPE5TVVJMU2Vzc2lvbkRhdGFEZWxlZ2F0ZT4pc3Ry
b25nU2VsZi5nZXQoKS5zZXNzaW9uLmRlbGVnYXRlOworICAgICAgICBSZXRhaW5QdHI8TlNVUkxS
ZXF1ZXN0PiBuc1JlcXVlc3QgPSByZXF1ZXN0Lm5zVVJMUmVxdWVzdChEb05vdFVwZGF0ZUhUVFBC
b2R5KTsKKyAgICAgICAgaWYgKFtkYXRhRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3RvcihVUkxTZXNzaW9uOnRhc2s6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246bmV3UmVxdWVz
dDpjb21wbGV0aW9uSGFuZGxlcjopXSkgeworICAgICAgICAgICAgW2RhdGFEZWxlZ2F0ZSBVUkxT
ZXNzaW9uOihOU1VSTFNlc3Npb24gKilzdHJvbmdTZWxmLmdldCgpLnNlc3Npb24gdGFzazooTlNV
UkxTZXNzaW9uVGFzayAqKXN0cm9uZ1NlbGYuZ2V0KCkgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b246KE5TSFRUUFVSTFJlc3BvbnNlICopcmVzcG9uc2UuZ2V0KCkgbmV3UmVxdWVzdDpuc1JlcXVl
c3QuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6QmxvY2tQdHI8dm9pZChOU1VSTFJlcXVlc3QgKik+
Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKE5TVVJMUmVxdWVzdCAqbmV3UmVxdWVzdCkgbXV0YWJsZSB7CisgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobmV3UmVxdWVzdCk7CisgICAgICAgICAgICB9KS5nZXQoKV07
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShy
ZXF1ZXN0KSk7CisgICAgfV07CiB9CiAKIC0gKHZvaWQpX3Jlc291cmNlOihQbGF0Zm9ybU1lZGlh
UmVzb3VyY2UmKXJlc291cmNlIGxvYWRGaW5pc2hlZFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9y
Cg==
</data>
<flag name="review"
          id="345906"
          type_id="1"
          status="+"
          setter="jer.noble"
    />
          </attachment>
      

    </bug>

</bugzilla>