<?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>29975</bug_id>
          
          <creation_ts>2009-10-01 12:21:41 -0700</creation_ts>
          <short_desc>[Qt] Inform the application when a new request is created.</short_desc>
          <delta_ts>2009-11-24 06:48:08 -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>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>29799</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yael">yael</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ariya.hidayat</cc>
    
    <cc>benjamin</cc>
    
    <cc>ben</cc>
    
    <cc>hausmann</cc>
    
    <cc>jedrzej.nowacki</cc>
    
    <cc>jturcotte</cc>
    
    <cc>jwieczorek</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>robert</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>vestbo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>151655</commentid>
    <comment_count>0</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2009-10-01 12:21:41 -0700</bug_when>
    <thetext>Informing the application when each request is created would allow applications to associate the request with the frame that initiated it, and add any other needed attributes to the request.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151664</commentid>
    <comment_count>1</comment_count>
      <attachid>40468</attachid>
    <who name="Yael">yael</who>
    <bug_when>2009-10-01 12:31:47 -0700</bug_when>
    <thetext>Created attachment 40468
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151844</commentid>
    <comment_count>2</comment_count>
      <attachid>40515</attachid>
    <who name="Yael">yael</who>
    <bug_when>2009-10-02 08:16:15 -0700</bug_when>
    <thetext>Created attachment 40515
Patch

Rename the signal, as agreed on IRC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>151847</commentid>
    <comment_count>3</comment_count>
      <attachid>40518</attachid>
    <who name="Yael">yael</who>
    <bug_when>2009-10-02 08:30:52 -0700</bug_when>
    <thetext>Created attachment 40518
Patch

More doc changes as discussed on IRC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152167</commentid>
    <comment_count>4</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2009-10-04 08:40:55 -0700</bug_when>
    <thetext>*** Bug 28884 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152297</commentid>
    <comment_count>5</comment_count>
      <attachid>40518</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-10-05 08:13:21 -0700</bug_when>
    <thetext>Comment on attachment 40518
Patch

r=me, but please fix &quot;signel&quot; typo when landing and add \preliminary to the API docs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152345</commentid>
    <comment_count>6</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2009-10-05 10:39:14 -0700</bug_when>
    <thetext>Committed r49100: &lt;http://trac.webkit.org/changeset/49100&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152634</commentid>
    <comment_count>7</comment_count>
      <attachid>40518</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-10-06 03:10:53 -0700</bug_when>
    <thetext>Comment on attachment 40518
Patch

Clearing review after landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152638</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-10-06 03:23:24 -0700</bug_when>
    <thetext>After resubscribing everyone I&apos;d like to re-open the discussion about this signal / topic. We had a 1.5 hours discussion around various alternate solutions to this API, that appears a little bit out of place in QWebPage. And we always came back to the one question:

    * What exactly is the use-case that requires an assocation of network requests with frames?

Yael, Robert, you were the first ones asking for this API, perhaps you can help us with these questions?

Could you explain your use-case here in Bugzilla in detail?
Why does it have to be per-frame?
Is the assocation all you need to implement your use-case or is it just a tool on the way?
Are you both perhaps looking for a way to filter network requests?
What kind of filtering are you looking for?
Do you need a convenient way to just accept or reject a request or do you have to change individual properties of the requests that are somehow associated with the frame?


Please help us, so that we can help you to find the right API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152677</commentid>
    <comment_count>9</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2009-10-06 05:14:32 -0700</bug_when>
    <thetext>&gt; Could you explain your use-case here in Bugzilla in detail?
&gt; Why does it have to be per-frame?

In our web runtime, each frame could have its own origin, hence its own security context. We need to know which frame initiated the request, so that we can decide if to allow the request or not.
Once we know the frame, there is a lot of preprocessing we can do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152678</commentid>
    <comment_count>10</comment_count>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2009-10-06 05:24:03 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; In our web runtime, each frame could have its own origin, hence its own
&gt; security context. We need to know which frame initiated the request, so that we
&gt; can decide if to allow the request or not.
&gt; Once we know the frame, there is a lot of preprocessing we can do.

So each frame is independent, am I right? Why you don&apos;t use different QWebPage for different contents?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152680</commentid>
    <comment_count>11</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2009-10-06 05:30:34 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; So each frame is independent, am I right? Why you don&apos;t use different QWebPage
&gt; for different contents?

I was talking about iframes in one QWebPage, not sure how to do what you are suggesting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152712</commentid>
    <comment_count>12</comment_count>
    <who name="Benjamin Meyer">ben</who>
    <bug_when>2009-10-06 07:16:36 -0700</bug_when>
    <thetext>    * What exactly is the use-case that requires an assocation of network
requests with frames?

When you get the unsupportedContent signal you want to know what frame it came from so you should know how to handle the error.   If it is the main frame then you load up a large error page.  If it is a subframe then you do something different.

In the existing Wallet support of Arora we must wait until the createRequest comes through to QNetworkAccessManager to be able to read the outgoingData which contains the final form data.  At this point in time We only have a QNetworkRequest and need a way to make a request-&gt;qwebframe to find the form in the frame.  Not only do we want the frame, but we want the QWebPage::NavigationType.

On the status bar Arora currently only shows a percentage of the webpage that was loaded.  If we had a way to see what frame requests came from we could provide better information about what a page is downloading.

All of the QNetworkAccessManager signals that bring up a dialog currently only give you a QNetworkReply

void authenticationRequired ( QNetworkReply * reply, QAuthenticator * authenticator )
void finished ( QNetworkReply * reply )
void proxyAuthenticationRequired ( const QNetworkProxy &amp; proxy, QAuthenticator * authenticator )
void sslErrors ( QNetworkReply * reply, const QList&lt;QSslError&gt; &amp; errors )

Because of this if you have multiple QWebPages you must block the entire application rather then just the QWebPage that need to prompt the user for something.

QtWebKit actively encourages that application have only 1 QNetworkAccessManager that is shared among all of the existing QWebPages.  There are a number of valid reasons for this
- Only X number of connections to a host at a time
- QNetworkCookieJar and QNetworkDiskCache syncing issues
- Memory and cpu usage of running multiple of these of course

While you can go through and setup a QNetworkAccessManager that is a proxy for each QWebPage this has many downsides such as more confusing code, memory overhead for each manager/cookiejar object.  You can see this approach in Arora today here: http://github.com/Arora/arora/tree/master/src/utils/

Talking with Thiago back in the day about this he mentioned how QNetworkAccessManager and QNetworkRequest were designed so that it was QNetworkRequest that had the ability for developers to add data to that would be sent through the system using QNetworkRequest::User http://doc.trolltech.com/4.5/qnetworkrequest.html#Attribute-enum

Having a QNetworkAccessManager proxy is working around the fact that QtWebKit currently actively doesn&apos;t let you set anything in QNetworkRequests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152719</commentid>
    <comment_count>13</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-10-06 07:42:12 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt;     * What exactly is the use-case that requires an assocation of network
&gt; requests with frames?
&gt; 
&gt; When you get the unsupportedContent signal you want to know what frame it came
&gt; from so you should know how to handle the error.   If it is the main frame then
&gt; you load up a large error page.  If it is a subframe then you do something
&gt; different.

In 4.6 errors should be handled before unsupportedContent is called. There was a bug before preventing this from happening.

This is not the right place to handle errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>152789</commentid>
    <comment_count>14</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2009-10-06 10:52:33 -0700</bug_when>
    <thetext>&gt; 
&gt;     * What exactly is the use-case that requires an assocation of network
&gt; requests with frames?
&gt; 
&gt; Could you explain your use-case here in Bugzilla in detail?
&gt; Why does it have to be per-frame?

When a qnetworkreply/qnetworkrequest encounters an SSL error, I need to know from which qwebframe the request originated so I can display the error there. The SSL error is displayed as a HTML page with proceed/cancel buttons within the frame.

Ideally the qwebpage information would be available explicitly too, but it is easy enough to get at once you have the frame pointer.

&gt; Is the assocation all you need to implement your use-case or is it just a tool
&gt; on the way?
&gt; Are you both perhaps looking for a way to filter network requests?
&gt; What kind of filtering are you looking for?
&gt; Do you need a convenient way to just accept or reject a request or do you have
&gt; to change individual properties of the requests that are somehow associated
&gt; with the frame?

In my case the answer to all of the above is &apos;no&apos;, since the request is aborted by default and you have to emit reply-&gt;ignoreSslErrors() if you want to ignore the error.

Yael&apos;s patch is enough for me.

&gt; 
&gt; 
&gt; Please help us, so that we can help you to find the right API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153017</commentid>
    <comment_count>15</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-10-07 05:47:36 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; 
&gt; &gt;     * What exactly is the use-case that requires an assocation of network
&gt; &gt; requests with frames?
&gt; &gt; 
&gt; &gt; Could you explain your use-case here in Bugzilla in detail?
&gt; &gt; Why does it have to be per-frame?
&gt; 
&gt; When a qnetworkreply/qnetworkrequest encounters an SSL error, I need to know
&gt; from which qwebframe the request originated so I can display the error there.
&gt; The SSL error is displayed as a HTML page with proceed/cancel buttons within
&gt; the frame.
&gt; 
&gt; Ideally the qwebpage information would be available explicitly too, but it is
&gt; easy enough to get at once you have the frame pointer.

Is your specific use-case also covered by Kenneth&apos;s QWebPage::ErrorPageExtension?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153018</commentid>
    <comment_count>16</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-10-07 05:51:27 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; So each frame is independent, am I right? Why you don&apos;t use different QWebPage
&gt; &gt; for different contents?
&gt; 
&gt; I was talking about iframes in one QWebPage, not sure how to do what you are
&gt; suggesting.

So in your setup you have one QWebPage that places different iframes into layout you define and each iframe shows external content with different origins, right?

What is the reason for combining all documents through iframes into one QWebPage as opposed to using one QWebPage per document? Is it reduced memory usage or do you for example need to allow some documents to share the same security origin so that they can exchange data?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153019</commentid>
    <comment_count>17</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2009-10-07 05:55:49 -0700</bug_when>
    <thetext>
&gt; So in your setup you have one QWebPage that places different iframes into
&gt; layout you define and each iframe shows external content with different
&gt; origins, right?
&gt; 
&gt; What is the reason for combining all documents through iframes into one
&gt; QWebPage as opposed to using one QWebPage per document? Is it reduced memory
&gt; usage or do you for example need to allow some documents to share the same
&gt; security origin so that they can exchange data?

Every other webkit based browser behaves this way. There is one page that contains multiple frames. I see no reason to change that model, just to avoid adding this signal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153020</commentid>
    <comment_count>18</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-10-07 06:01:24 -0700</bug_when>
    <thetext>(In reply to comment #12)
[...]
&gt; In the existing Wallet support of Arora we must wait until the createRequest
&gt; comes through to QNetworkAccessManager to be able to read the outgoingData
&gt; which contains the final form data.  At this point in time We only have a
&gt; QNetworkRequest and need a way to make a request-&gt;qwebframe to find the form in
&gt; the frame.  Not only do we want the frame, but we want the
&gt; QWebPage::NavigationType.

That is a good example! So in an ideal world you&apos;d have the QWebFrame pointer as an argument in the virtual createRequest function in QNetworkAccessManager, right?

We might be able to fix that, but what about the navigation type? By the time we create the QNetworkRequest we do not know the underlying Navigation type.

Can you explain how you would use the NavigationType?

What we otherwise thought of was to have an extension in QWebPage, similar to Robert&apos;s proposal, that would change the current call chain from QNetworkReplyHandler -&gt; QNetworkAccessManager::createRequest() to
QNetworkReplyHandler -&gt; QWebPage::CreateNetworkRequestExtension-with-same-arguments-as-createRequest-and-a-QWebFrame-pointer -&gt; QNetworkAccessManager::createRequest(), where you could hook into the middle part.

&gt; On the status bar Arora currently only shows a percentage of the webpage that
&gt; was loaded.  If we had a way to see what frame requests came from we could
&gt; provide better information about what a page is downloading.

Can you elaborate on what you would display?
 
&gt; All of the QNetworkAccessManager signals that bring up a dialog currently only
&gt; give you a QNetworkReply
&gt; 
&gt; void authenticationRequired ( QNetworkReply * reply, QAuthenticator *
&gt; authenticator )
&gt; void finished ( QNetworkReply * reply )
&gt; void proxyAuthenticationRequired ( const QNetworkProxy &amp; proxy, QAuthenticator
&gt; * authenticator )
&gt; void sslErrors ( QNetworkReply * reply, const QList&lt;QSslError&gt; &amp; errors )
&gt; 
&gt; Because of this if you have multiple QWebPages you must block the entire
&gt; application rather then just the QWebPage that need to prompt the user for
&gt; something.

That is a very good point!
 
&gt; QtWebKit actively encourages that application have only 1 QNetworkAccessManager
&gt; that is shared among all of the existing QWebPages.  There are a number of
&gt; valid reasons for this
&gt; - Only X number of connections to a host at a time
&gt; - QNetworkCookieJar and QNetworkDiskCache syncing issues
&gt; - Memory and cpu usage of running multiple of these of course
&gt; 
&gt; While you can go through and setup a QNetworkAccessManager that is a proxy for
&gt; each QWebPage this has many downsides such as more confusing code, memory
&gt; overhead for each manager/cookiejar object.  You can see this approach in Arora
&gt; today here: http://github.com/Arora/arora/tree/master/src/utils/

That is also a very good point. It should not be necessary to write such a proxy. Avoiding it should be a goal of the API. Thanks for the elaborate explanation!
 
&gt; Talking with Thiago back in the day about this he mentioned how
&gt; QNetworkAccessManager and QNetworkRequest were designed so that it was
&gt; QNetworkRequest that had the ability for developers to add data to that would
&gt; be sent through the system using QNetworkRequest::User
&gt; http://doc.trolltech.com/4.5/qnetworkrequest.html#Attribute-enum
&gt; 
&gt; Having a QNetworkAccessManager proxy is working around the fact that QtWebKit
&gt; currently actively doesn&apos;t let you set anything in QNetworkRequests.

I admit I like the idea of adding properties or attributes to QNetworkRequest &quot;on the way&quot; as it is passed through the software stack, but I am concerned about storing a pointer to a QObject in this value based class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153024</commentid>
    <comment_count>19</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-10-07 06:05:08 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; &gt; So in your setup you have one QWebPage that places different iframes into
&gt; &gt; layout you define and each iframe shows external content with different
&gt; &gt; origins, right?
&gt; &gt; 
&gt; &gt; What is the reason for combining all documents through iframes into one
&gt; &gt; QWebPage as opposed to using one QWebPage per document? Is it reduced memory
&gt; &gt; usage or do you for example need to allow some documents to share the same
&gt; &gt; security origin so that they can exchange data?
&gt; 
&gt; Every other webkit based browser behaves this way. There is one page that
&gt; contains multiple frames. I see no reason to change that model, just to avoid
&gt; adding this signal.

Yael, I&apos;m not trying to say that your use-case is wrong, I&apos;m just trying to understand what you&apos;re doing :-).

Let me ask differently: Are you showing different widsets in the web runtime within the same page by using iframes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153027</commentid>
    <comment_count>20</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-10-07 06:29:05 -0700</bug_when>
    <thetext>(In reply to comment #12)
[...]
&gt; QtWebKit actively encourages that application have only 1 QNetworkAccessManager
&gt; that is shared among all of the existing QWebPages.  There are a number of
&gt; valid reasons for this
&gt; - Only X number of connections to a host at a time
&gt; - QNetworkCookieJar and QNetworkDiskCache syncing issues
&gt; - Memory and cpu usage of running multiple of these of course

I think these are very very valid points, but I also think they are technically bugs in the QNetworkAccessManager implementation. Multiple QNAMs should share the connection count. The implementation should allow for sharing CookieJar and DiskCache, just as the API suggest that this is possible.

Do you agree Benjamin?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153028</commentid>
    <comment_count>21</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2009-10-07 06:42:20 -0700</bug_when>
    <thetext>(In reply to comment #19)

&gt; Let me ask differently: Are you showing different widsets in the web runtime
&gt; within the same page by using iframes?

Each widget is treated the same as a web page, and has its own QWebPage. The use case is mashups, where a widget is getting content from multiple sources into multiple iframes. Each iframe has its own origin and security context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153049</commentid>
    <comment_count>22</comment_count>
    <who name="Benjamin Meyer">ben</who>
    <bug_when>2009-10-07 08:25:07 -0700</bug_when>
    <thetext>&gt;&gt; QtWebKit actively encourages that application have only 1 QNetworkAccessManager
&gt;&gt; that is shared among all of the existing QWebPages.  There are a number of
&gt;&gt; valid reasons for this
&gt;&gt; - Only X number of connections to a host at a time
&gt;&gt; - QNetworkCookieJar and QNetworkDiskCache syncing issues
&gt;&gt; - Memory and cpu usage of running multiple of these of course
&gt;
&gt; I think these are very very valid points, but I also think they are technically
&gt; bugs in the QNetworkAccessManager implementation. Multiple QNAMs should share
&gt; the connection count. The implementation should allow for sharing CookieJar and
&gt; DiskCache, just as the API suggest that this is possible.

I guess what I was meant to say way  &quot;QtWebKit actively encourages that application have only 1 QNetworkAccessManager, 1 CookieJar and 1 cache that is shared among all of the existing QWebPages.&quot;

You can have multiple QNetworkAccessManagers and they could share the objects, but it is not encouraged.  For example when you set a cookie jar on a QNetworkAccessManagers it sets the parent to itself.  So it is technically possible the network code is not designed to work with this without some extra work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153189</commentid>
    <comment_count>23</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2009-10-07 14:46:36 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; &gt; 
&gt; &gt; Ideally the qwebpage information would be available explicitly too, but it is
&gt; &gt; easy enough to get at once you have the frame pointer.
&gt; 
&gt; Is your specific use-case also covered by Kenneth&apos;s
&gt; QWebPage::ErrorPageExtension?

It looks like the natural place to put some of the client-specific things I do so potentially, yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153646</commentid>
    <comment_count>24</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-10-09 04:08:19 -0700</bug_when>
    <thetext>Ok, I sat down with Lars and we submitted a patch into Qt 4.6 that adds two methods to QNetworkRequest:

--- a/src/network/access/qnetworkrequest.h
+++ b/src/network/access/qnetworkrequest.h
@@ -120,6 +120,9 @@ public:
     void setSslConfiguration(const QSslConfiguration &amp;configuration);
 #endif
·
+    void setOriginatingObject(QObject *object);
+    QObject *originatingObject() const;


Internally that QObject is stored as a QWeakPointer, so originatingObject() will return a null pointer if the object in question died in the meantime.

What needs to be done now is to extend QtWebKit to use that API and set the QWebFrame as the originating object. Then we can remove the signal from QWebPage again, as it is not necessary anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153668</commentid>
    <comment_count>25</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2009-10-09 06:00:04 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; Ok, I sat down with Lars and we submitted a patch into Qt 4.6 that adds two
&gt; methods to QNetworkRequest:
&gt; 
&gt; --- a/src/network/access/qnetworkrequest.h
&gt; +++ b/src/network/access/qnetworkrequest.h
&gt; @@ -120,6 +120,9 @@ public:
&gt;      void setSslConfiguration(const QSslConfiguration &amp;configuration);
&gt;  #endif
&gt; ·
&gt; +    void setOriginatingObject(QObject *object);
&gt; +    QObject *originatingObject() const;
&gt; 
&gt; 
&gt; Internally that QObject is stored as a QWeakPointer, so originatingObject()
&gt; will return a null pointer if the object in question died in the meantime.
&gt; 
&gt; What needs to be done now is to extend QtWebKit to use that API and set the
&gt; QWebFrame as the originating object. Then we can remove the signal from
&gt; QWebPage again, as it is not necessary anymore.

I am guessing that this will only be available in Qt 4.6, but our release is based on Qt 4.5, so this has to be carefully coordinated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153671</commentid>
    <comment_count>26</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-10-09 06:11:52 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #24)
&gt; &gt; Ok, I sat down with Lars and we submitted a patch into Qt 4.6 that adds two
&gt; &gt; methods to QNetworkRequest:
&gt; &gt; 
&gt; &gt; --- a/src/network/access/qnetworkrequest.h
&gt; &gt; +++ b/src/network/access/qnetworkrequest.h
&gt; &gt; @@ -120,6 +120,9 @@ public:
&gt; &gt;      void setSslConfiguration(const QSslConfiguration &amp;configuration);
&gt; &gt;  #endif
&gt; &gt; ·
&gt; &gt; +    void setOriginatingObject(QObject *object);
&gt; &gt; +    QObject *originatingObject() const;
&gt; &gt; 
&gt; &gt; 
&gt; &gt; Internally that QObject is stored as a QWeakPointer, so originatingObject()
&gt; &gt; will return a null pointer if the object in question died in the meantime.
&gt; &gt; 
&gt; &gt; What needs to be done now is to extend QtWebKit to use that API and set the
&gt; &gt; QWebFrame as the originating object. Then we can remove the signal from
&gt; &gt; QWebPage again, as it is not necessary anymore.
&gt; 
&gt; I am guessing that this will only be available in Qt 4.6, but our release is
&gt; based on Qt 4.5, so this has to be carefully coordinated.

Yes. Would it be feasible for you to apply the patch in question against your Qt 4.5 version?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153674</commentid>
    <comment_count>27</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2009-10-09 06:26:00 -0700</bug_when>
    <thetext>(In reply to comment #26)

&gt; Yes. Would it be feasible for you to apply the patch in question against your
&gt; Qt 4.5 version?

Probably yes, this is more of a coordination issue :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160047</commentid>
    <comment_count>28</comment_count>
      <attachid>42375</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-11-03 06:40:58 -0800</bug_when>
    <thetext>Created attachment 42375
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>160054</commentid>
    <comment_count>29</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-11-03 06:52:05 -0800</bug_when>
    <thetext>Committed r50454: &lt;http://trac.webkit.org/changeset/50454&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>166058</commentid>
    <comment_count>30</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2009-11-24 06:48:08 -0800</bug_when>
    <thetext>*** Bug 25166 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40468</attachid>
            <date>2009-10-01 12:31:47 -0700</date>
            <delta_ts>2009-10-02 08:16:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>29975.patch</filename>
            <type>text/plain</type>
            <size>4505</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCShyZXZpc2lv
biA0ODk3NikKKysrIFdlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMjIsNiArMjIyLDkgQEAKIAogdm9pZCB0c3RfUVdlYlBhZ2U6Omxv
YWRGaW5pc2hlZCgpCiB7CisgICAgcVJlZ2lzdGVyTWV0YVR5cGU8UVdlYkZyYW1lKj4oIlFXZWJG
cmFtZSoiKTsKKyAgICBxUmVnaXN0ZXJNZXRhVHlwZTxRTmV0d29ya1JlcXVlc3QqPigiUU5ldHdv
cmtSZXF1ZXN0KiIpOworICAgIFFTaWduYWxTcHkgc3B5UmVxdWVzdENyZWF0ZWQobV9wYWdlLCBT
SUdOQUwocmVxdWVzdENyZWF0ZWQoUVdlYkZyYW1lKiwgUU5ldHdvcmtSZXF1ZXN0KikpKTsKICAg
ICBRU2lnbmFsU3B5IHNweUxvYWRTdGFydGVkKG1fdmlldywgU0lHTkFMKGxvYWRTdGFydGVkKCkp
KTsKICAgICBRU2lnbmFsU3B5IHNweUxvYWRGaW5pc2hlZChtX3ZpZXcsIFNJR05BTChsb2FkRmlu
aXNoZWQoYm9vbCkpKTsKIApAQCAtMjMyLDYgKzIzNSw3IEBACiAKICAgICBRVGVzdDo6cVdhaXQo
MzAwMCk7CiAKKyAgICBRVkVSSUZZKHNweVJlcXVlc3RDcmVhdGVkLmNvdW50KCkgPiAxKTsKICAg
ICBRVkVSSUZZKHNweUxvYWRTdGFydGVkLmNvdW50KCkgPiAxKTsKICAgICBRVkVSSUZZKHNweUxv
YWRGaW5pc2hlZC5jb3VudCgpID4gMSk7CiAKSW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNDg5ODcpCisrKyBXZWJL
aXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMTAt
MDEgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gSW5mb3JtIHRoZSBhcHBsaWNh
dGlvbiB3aGVuIGEgbmV3IHJlcXVlc3QgaXMgY3JlYXRlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5OTc1CisKKyAgICAgICAgQWRkIGEgc2lnbmVs
IHRvIFFXZWJQYWdlLCB0byBpbmZvcm0gdGhlIGFwcGxpY2F0aW9uIHdoZW4gYSByZXF1ZXN0IGlz
IGNyZWF0ZWQuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAqIEFwaS9x
d2VicGFnZS5oOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6Cisg
ICAgICAgICh0c3RfUVdlYlBhZ2U6OmxvYWRGaW5pc2hlZCk6CisKIDIwMDktMTAtMDEgIFNpbW9u
IEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFRvciBBcm5lIFZlc3Riw7guCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5oCShyZXZpc2lvbiA0ODk3NikKKysr
IFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBA
QAogICAgIGNsYXNzIEluc3BlY3RvckNsaWVudFF0OwogICAgIGNsYXNzIFJlc291cmNlSGFuZGxl
OwogICAgIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CisgICAgY2xhc3MgUU5ldHdvcmtSZXBseUhhbmRs
ZXI7CiAKICAgICBzdHJ1Y3QgRnJhbWVMb2FkUmVxdWVzdDsKIH0KQEAgLTM0NSw2ICszNDYsOCBA
QAogICAgIHZvaWQgc2F2ZUZyYW1lU3RhdGVSZXF1ZXN0ZWQoUVdlYkZyYW1lKiBmcmFtZSwgUVdl
Ykhpc3RvcnlJdGVtKiBpdGVtKTsKICAgICB2b2lkIHJlc3RvcmVGcmFtZVN0YXRlUmVxdWVzdGVk
KFFXZWJGcmFtZSogZnJhbWUpOwogCisgICAgdm9pZCByZXF1ZXN0Q3JlYXRlZChRV2ViRnJhbWUq
IGZyYW1lLCBRTmV0d29ya1JlcXVlc3QqIHJlcXVlc3QpOworCiBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCBRV2ViUGFnZSAqY3JlYXRlV2luZG93KFdlYldpbmRvd1R5cGUgdHlwZSk7CiAgICAgdmly
dHVhbCBRT2JqZWN0ICpjcmVhdGVQbHVnaW4oY29uc3QgUVN0cmluZyAmY2xhc3NpZCwgY29uc3Qg
UVVybCAmdXJsLCBjb25zdCBRU3RyaW5nTGlzdCAmcGFyYW1OYW1lcywgY29uc3QgUVN0cmluZ0xp
c3QgJnBhcmFtVmFsdWVzKTsKQEAgLTM3OSw2ICszODIsNyBAQAogICAgIGZyaWVuZCBjbGFzcyBX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OwogICAgIGZyaWVuZCBjbGFzcyBXZWJDb3JlOjpJ
bnNwZWN0b3JDbGllbnRRdDsKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6UmVzb3VyY2VIYW5k
bGU7CisgICAgZnJpZW5kIGNsYXNzIFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5kbGVyOwogfTsK
IAogUV9ERUNMQVJFX09QRVJBVE9SU19GT1JfRkxBR1MoUVdlYlBhZ2U6OkZpbmRGbGFncykKSW5k
ZXg6IFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9B
cGkvcXdlYnBhZ2UuY3BwCShyZXZpc2lvbiA0ODk3NikKKysrIFdlYktpdC9xdC9BcGkvcXdlYnBh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzQ5LDYgKzMzNDksMTQgQEAKICovCiAKIC8qIQor
ICBcc2luY2UgNC42CisgIFxmbiB2b2lkIFFXZWJQYWdlOjpyZXF1ZXN0Q3JlYXRlZChRV2ViRnJh
bWUqIGZyYW1lLCBRTmV0d29ya1JlcXVlc3QqIHJlcXVlc3QpOworCisgIFRoaXMgc2lnbmFsIGlz
IGVtaXR0ZWQgd2hlbiBhIFxhIHJlcXVlc3QgaXMgY3JlYXRlZC4gVGhlIGFwcGxpY2F0aW9uIG1h
eSB3YW50IHRvIGUuZy4gc3RvcmUgdGhlIFxhIGZyYW1lIHRoYXQgaW5pdGlhdGVkIAorICB0aGUg
XGEgcmVxdWVzdCBhcyBhbiBhdHRyaWJ1dGUuCisqLworCisvKiEKICAgXGZuIFFXZWJQYWdlUHJp
dmF0ZSogUVdlYlBhZ2U6OmhhbmRsZSgpIGNvbnN0CiAgIFxpbnRlcm5hbAogKi8KSW5kZXg6IFdl
YkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biA0ODk4NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMDktMTAtMDEgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gSW5m
b3JtIHRoZSBhcHBsaWNhdGlvbiB3aGVuIGEgbmV3IHJlcXVlc3QgaXMgY3JlYXRlZC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5OTc1CisKKyAgICAg
ICAgRW1pdCBhIHNpZ25hbCBlYWNoIHRpbWUgYSByZXF1ZXN0IGlzIGNyZWF0ZWQsIHdpdGggdGhl
IHJlcXVlc3QgYW5kIHRoZSBmcmFtZQorICAgICAgICB0aGF0IGNyZWF0ZWQgaXQuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzdGFydCk6CisKIDIwMDktMTAtMDEg
IFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0
L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCShyZXZpc2lvbiA0ODk3NikKKysr
IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3OSw2ICszNzksOCBAQAogCiAgICAgUU5ldHdvcmtBY2Nlc3NNYW5h
Z2VyKiBtYW5hZ2VyID0gZC0+bV9mcmFtZS0+cGFnZSgpLT5uZXR3b3JrQWNjZXNzTWFuYWdlcigp
OwogCisgICAgZW1pdCBkLT5tX2ZyYW1lLT5wYWdlKCktPnJlcXVlc3RDcmVhdGVkKGQtPm1fZnJh
bWUsICZtX3JlcXVlc3QpOworCiAgICAgY29uc3QgUVVybCB1cmwgPSBtX3JlcXVlc3QudXJsKCk7
CiAgICAgY29uc3QgUVN0cmluZyBzY2hlbWUgPSB1cmwuc2NoZW1lKCk7CiAgICAgLy8gUG9zdCBy
ZXF1ZXN0cyBvbiBmaWxlcyBhbmQgZGF0YSBkb24ndCByZWFsbHkgbWFrZSBzZW5zZSwgYnV0IGZv
cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40515</attachid>
            <date>2009-10-02 08:16:15 -0700</date>
            <delta_ts>2009-10-02 08:30:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>29975.patch</filename>
            <type>text/plain</type>
            <size>5040</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCShyZXZpc2lv
biA0OTAyMSkKKysrIFdlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMjIsNiArMjIyLDkgQEAKIAogdm9pZCB0c3RfUVdlYlBhZ2U6Omxv
YWRGaW5pc2hlZCgpCiB7CisgICAgcVJlZ2lzdGVyTWV0YVR5cGU8UVdlYkZyYW1lKj4oIlFXZWJG
cmFtZSoiKTsKKyAgICBxUmVnaXN0ZXJNZXRhVHlwZTxRTmV0d29ya1JlcXVlc3QqPigiUU5ldHdv
cmtSZXF1ZXN0KiIpOworICAgIFFTaWduYWxTcHkgc3B5TmV0d29ya1JlcXVlc3RTdGFydGVkKG1f
cGFnZSwgU0lHTkFMKG5ldHdvcmtSZXF1ZXN0U3RhcnRlZChRV2ViRnJhbWUqLCBRTmV0d29ya1Jl
cXVlc3QqKSkpOwogICAgIFFTaWduYWxTcHkgc3B5TG9hZFN0YXJ0ZWQobV92aWV3LCBTSUdOQUwo
bG9hZFN0YXJ0ZWQoKSkpOwogICAgIFFTaWduYWxTcHkgc3B5TG9hZEZpbmlzaGVkKG1fdmlldywg
U0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSkpOwogCkBAIC0yMzIsNiArMjM1LDcgQEAKIAogICAg
IFFUZXN0OjpxV2FpdCgzMDAwKTsKIAorICAgIFFWRVJJRlkoc3B5TmV0d29ya1JlcXVlc3RTdGFy
dGVkLmNvdW50KCkgPiAxKTsKICAgICBRVkVSSUZZKHNweUxvYWRTdGFydGVkLmNvdW50KCkgPiAx
KTsKICAgICBRVkVSSUZZKHNweUxvYWRGaW5pc2hlZC5jb3VudCgpID4gMSk7CiAKSW5kZXg6IFdl
YktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2
aXNpb24gNDkwMjEpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMDktMTAtMDIgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtR
dF0gSW5mb3JtIHRoZSBhcHBsaWNhdGlvbiB3aGVuIGEgbmV3IHJlcXVlc3QgaXMgY3JlYXRlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk5NzUKKwor
ICAgICAgICBBZGQgYSBzaWduZWwgdG8gUVdlYlBhZ2UsIHRvIGluZm9ybSB0aGUgYXBwbGljYXRp
b24gd2hlbiBhIHJlcXVlc3QgaXMgY3JlYXRlZC4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5j
cHA6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2Uv
dHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6bG9hZEZpbmlzaGVkKToK
KwogMjAwOS0xMC0wMiAgUHJhc2FudGggVWxsYXR0aWwgIDxwcmFzYW50aC51bGxhdHRpbEBub2tp
YS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBXZWJL
aXQvcXQvQXBpL3F3ZWJwYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZS5oCShyZXZpc2lvbiA0OTAyMSkKKysrIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQAogICAgIGNsYXNzIEluc3BlY3RvckNsaWVudFF0Owog
ICAgIGNsYXNzIFJlc291cmNlSGFuZGxlOwogICAgIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CisgICAg
Y2xhc3MgUU5ldHdvcmtSZXBseUhhbmRsZXI7CiAKICAgICBzdHJ1Y3QgRnJhbWVMb2FkUmVxdWVz
dDsKIH0KQEAgLTM0NSw2ICszNDYsOCBAQAogICAgIHZvaWQgc2F2ZUZyYW1lU3RhdGVSZXF1ZXN0
ZWQoUVdlYkZyYW1lKiBmcmFtZSwgUVdlYkhpc3RvcnlJdGVtKiBpdGVtKTsKICAgICB2b2lkIHJl
c3RvcmVGcmFtZVN0YXRlUmVxdWVzdGVkKFFXZWJGcmFtZSogZnJhbWUpOwogCisgICAgdm9pZCBu
ZXR3b3JrUmVxdWVzdFN0YXJ0ZWQoUVdlYkZyYW1lKiBmcmFtZSwgUU5ldHdvcmtSZXF1ZXN0KiBy
ZXF1ZXN0KTsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgUVdlYlBhZ2UgKmNyZWF0ZVdpbmRv
dyhXZWJXaW5kb3dUeXBlIHR5cGUpOwogICAgIHZpcnR1YWwgUU9iamVjdCAqY3JlYXRlUGx1Z2lu
KGNvbnN0IFFTdHJpbmcgJmNsYXNzaWQsIGNvbnN0IFFVcmwgJnVybCwgY29uc3QgUVN0cmluZ0xp
c3QgJnBhcmFtTmFtZXMsIGNvbnN0IFFTdHJpbmdMaXN0ICZwYXJhbVZhbHVlcyk7CkBAIC0zNzks
NiArMzgyLDcgQEAKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDsKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ7CiAgICAgZnJp
ZW5kIGNsYXNzIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOworICAgIGZyaWVuZCBjbGFzcyBXZWJD
b3JlOjpRTmV0d29ya1JlcGx5SGFuZGxlcjsKIH07CiAKIFFfREVDTEFSRV9PUEVSQVRPUlNfRk9S
X0ZMQUdTKFFXZWJQYWdlOjpGaW5kRmxhZ3MpCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNpb24g
NDkwMjEpCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzM1OSw2ICszMzU5LDE0IEBACiAqLwogCiAvKiEKKyAgXHNpbmNlIDQuNgorICBcZm4gdm9pZCBR
V2ViUGFnZTo6bmV0d29ya1JlcXVlc3RTdGFydGVkKFFXZWJGcmFtZSogZnJhbWUsIFFOZXR3b3Jr
UmVxdWVzdCogcmVxdWVzdCk7CisKKyAgVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIGEgXGEg
ZnJhbWUgcmVxdWVzdHMgYSB3ZWIgcmVzb3VyY2UuIFRoZSBhcHBsaWNhdGlvbiBtYXkgd2FudCB0
byBlLmcuIHN0b3JlIHRoZSBcYSBmcmFtZSB0aGF0IGluaXRpYXRlZCAKKyAgdGhlIFxhIHJlcXVl
c3QgYXMgYW4gYXR0cmlidXRlLgorKi8KKworLyohCiAgIFxmbiBRV2ViUGFnZVByaXZhdGUqIFFX
ZWJQYWdlOjpoYW5kbGUoKSBjb25zdAogICBcaW50ZXJuYWwKICovCkluZGV4OiBXZWJDb3JlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNDkwMjEp
CisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisy
MDA5LTEwLTAyICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIEluZm9ybSB0aGUg
YXBwbGljYXRpb24gd2hlbiBhIG5ldyByZXF1ZXN0IGlzIGNyZWF0ZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5OTc1CisKKyAgICAgICAgRW1pdCBh
IHNpZ25hbCBlYWNoIHRpbWUgYSByZXF1ZXN0IGlzIGNyZWF0ZWQsIHdpdGggdGhlIHJlcXVlc3Qg
YW5kIHRoZSBmcmFtZQorICAgICAgICB0aGF0IGNyZWF0ZWQgaXQuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzZW5kUmVzcG9uc2VJZk5lZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFuZGxlcjo6c3RhcnQpOgorCiAyMDA5LTEwLTAyICBQ
aGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBHdXN0YXZvIE5vcm9uaGEuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQv
UU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAJKHJldmlzaW9uIDQ4OTc2KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzM5LDYgKzMzOSw5IEBACiAgICAgICAgIGNsaWVudC0+d2lsbFNlbmRS
ZXF1ZXN0KG1fcmVzb3VyY2VIYW5kbGUsIG5ld1JlcXVlc3QsIHJlc3BvbnNlKTsKICAgICAgICAg
bV9yZWRpcmVjdGVkID0gdHJ1ZTsKICAgICAgICAgbV9yZXF1ZXN0ID0gbmV3UmVxdWVzdC50b05l
dHdvcmtSZXF1ZXN0KCk7CisKKyAgICAgICAgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbCogZCA9IG1f
cmVzb3VyY2VIYW5kbGUtPmdldEludGVybmFsKCk7CisgICAgICAgIGVtaXQgZC0+bV9mcmFtZS0+
cGFnZSgpLT5uZXR3b3JrUmVxdWVzdFN0YXJ0ZWQoZC0+bV9mcmFtZSwgJm1fcmVxdWVzdCk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UobV9yZXNvdXJj
ZUhhbmRsZSwgcmVzcG9uc2UpOwogICAgIH0KQEAgLTM3OSw2ICszODIsOCBAQAogCiAgICAgUU5l
dHdvcmtBY2Nlc3NNYW5hZ2VyKiBtYW5hZ2VyID0gZC0+bV9mcmFtZS0+cGFnZSgpLT5uZXR3b3Jr
QWNjZXNzTWFuYWdlcigpOwogCisgICAgZW1pdCBkLT5tX2ZyYW1lLT5wYWdlKCktPm5ldHdvcmtS
ZXF1ZXN0U3RhcnRlZChkLT5tX2ZyYW1lLCAmbV9yZXF1ZXN0KTsKKwogICAgIGNvbnN0IFFVcmwg
dXJsID0gbV9yZXF1ZXN0LnVybCgpOwogICAgIGNvbnN0IFFTdHJpbmcgc2NoZW1lID0gdXJsLnNj
aGVtZSgpOwogICAgIC8vIFBvc3QgcmVxdWVzdHMgb24gZmlsZXMgYW5kIGRhdGEgZG9uJ3QgcmVh
bGx5IG1ha2Ugc2Vuc2UsIGJ1dCBmb3IK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40518</attachid>
            <date>2009-10-02 08:30:52 -0700</date>
            <delta_ts>2009-11-03 06:40:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>29975.patch</filename>
            <type>text/plain</type>
            <size>5111</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCShyZXZpc2lv
biA0OTAyMSkKKysrIFdlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMjIsNiArMjIyLDkgQEAKIAogdm9pZCB0c3RfUVdlYlBhZ2U6Omxv
YWRGaW5pc2hlZCgpCiB7CisgICAgcVJlZ2lzdGVyTWV0YVR5cGU8UVdlYkZyYW1lKj4oIlFXZWJG
cmFtZSoiKTsKKyAgICBxUmVnaXN0ZXJNZXRhVHlwZTxRTmV0d29ya1JlcXVlc3QqPigiUU5ldHdv
cmtSZXF1ZXN0KiIpOworICAgIFFTaWduYWxTcHkgc3B5TmV0d29ya1JlcXVlc3RTdGFydGVkKG1f
cGFnZSwgU0lHTkFMKG5ldHdvcmtSZXF1ZXN0U3RhcnRlZChRV2ViRnJhbWUqLCBRTmV0d29ya1Jl
cXVlc3QqKSkpOwogICAgIFFTaWduYWxTcHkgc3B5TG9hZFN0YXJ0ZWQobV92aWV3LCBTSUdOQUwo
bG9hZFN0YXJ0ZWQoKSkpOwogICAgIFFTaWduYWxTcHkgc3B5TG9hZEZpbmlzaGVkKG1fdmlldywg
U0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSkpOwogCkBAIC0yMzIsNiArMjM1LDcgQEAKIAogICAg
IFFUZXN0OjpxV2FpdCgzMDAwKTsKIAorICAgIFFWRVJJRlkoc3B5TmV0d29ya1JlcXVlc3RTdGFy
dGVkLmNvdW50KCkgPiAxKTsKICAgICBRVkVSSUZZKHNweUxvYWRTdGFydGVkLmNvdW50KCkgPiAx
KTsKICAgICBRVkVSSUZZKHNweUxvYWRGaW5pc2hlZC5jb3VudCgpID4gMSk7CiAKSW5kZXg6IFdl
YktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2
aXNpb24gNDkwMjEpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMDktMTAtMDIgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtR
dF0gSW5mb3JtIHRoZSBhcHBsaWNhdGlvbiB3aGVuIGEgbmV3IHJlcXVlc3QgaXMgY3JlYXRlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk5NzUKKwor
ICAgICAgICBBZGQgYSBzaWduZWwgdG8gUVdlYlBhZ2UsIHRvIGluZm9ybSB0aGUgYXBwbGljYXRp
b24gd2hlbiBhIHJlcXVlc3QgaXMgY3JlYXRlZC4KKworICAgICAgICAqIEFwaS9xd2VicGFnZS5j
cHA6CisgICAgICAgICogQXBpL3F3ZWJwYWdlLmg6CisgICAgICAgICogdGVzdHMvcXdlYnBhZ2Uv
dHN0X3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKHRzdF9RV2ViUGFnZTo6bG9hZEZpbmlzaGVkKToK
KwogMjAwOS0xMC0wMiAgUHJhc2FudGggVWxsYXR0aWwgIDxwcmFzYW50aC51bGxhdHRpbEBub2tp
YS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBXZWJL
aXQvcXQvQXBpL3F3ZWJwYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2VicGFn
ZS5oCShyZXZpc2lvbiA0OTAyMSkKKysrIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQAogICAgIGNsYXNzIEluc3BlY3RvckNsaWVudFF0Owog
ICAgIGNsYXNzIFJlc291cmNlSGFuZGxlOwogICAgIGNsYXNzIEhpdFRlc3RSZXN1bHQ7CisgICAg
Y2xhc3MgUU5ldHdvcmtSZXBseUhhbmRsZXI7CiAKICAgICBzdHJ1Y3QgRnJhbWVMb2FkUmVxdWVz
dDsKIH0KQEAgLTM0NSw2ICszNDYsOCBAQAogICAgIHZvaWQgc2F2ZUZyYW1lU3RhdGVSZXF1ZXN0
ZWQoUVdlYkZyYW1lKiBmcmFtZSwgUVdlYkhpc3RvcnlJdGVtKiBpdGVtKTsKICAgICB2b2lkIHJl
c3RvcmVGcmFtZVN0YXRlUmVxdWVzdGVkKFFXZWJGcmFtZSogZnJhbWUpOwogCisgICAgdm9pZCBu
ZXR3b3JrUmVxdWVzdFN0YXJ0ZWQoUVdlYkZyYW1lKiBmcmFtZSwgUU5ldHdvcmtSZXF1ZXN0KiBy
ZXF1ZXN0KTsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgUVdlYlBhZ2UgKmNyZWF0ZVdpbmRv
dyhXZWJXaW5kb3dUeXBlIHR5cGUpOwogICAgIHZpcnR1YWwgUU9iamVjdCAqY3JlYXRlUGx1Z2lu
KGNvbnN0IFFTdHJpbmcgJmNsYXNzaWQsIGNvbnN0IFFVcmwgJnVybCwgY29uc3QgUVN0cmluZ0xp
c3QgJnBhcmFtTmFtZXMsIGNvbnN0IFFTdHJpbmdMaXN0ICZwYXJhbVZhbHVlcyk7CkBAIC0zNzks
NiArMzgyLDcgQEAKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDsKICAgICBmcmllbmQgY2xhc3MgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ7CiAgICAgZnJp
ZW5kIGNsYXNzIFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOworICAgIGZyaWVuZCBjbGFzcyBXZWJD
b3JlOjpRTmV0d29ya1JlcGx5SGFuZGxlcjsKIH07CiAKIFFfREVDTEFSRV9PUEVSQVRPUlNfRk9S
X0ZMQUdTKFFXZWJQYWdlOjpGaW5kRmxhZ3MpCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNpb24g
NDkwMjEpCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzM1OSw2ICszMzU5LDE1IEBACiAqLwogCiAvKiEKKyAgXHNpbmNlIDQuNgorICBcZm4gdm9pZCBR
V2ViUGFnZTo6bmV0d29ya1JlcXVlc3RTdGFydGVkKFFXZWJGcmFtZSogZnJhbWUsIFFOZXR3b3Jr
UmVxdWVzdCogcmVxdWVzdCk7CisKKyAgVGhpcyBzaWduYWwgaXMgZW1pdHRlZCB3aGVuIGEgXGEg
ZnJhbWUgb2YgdGhlIGN1cnJlbnQgcGFnZSByZXF1ZXN0cyBhIHdlYiByZXNvdXJjZS4gVGhlIGFw
cGxpY2F0aW9uCisgIG1heSB3YW50IHRvIGFzc29jaWF0ZSB0aGUgXGEgcmVxdWVzdCB3aXRoIHRo
ZSBcYSBmcmFtZSB0aGF0IGluaXRpYXRlZCBpdCBieSBzdG9yaW5nIHRoZSBcYSBmcmFtZQorICBh
cyBhbiBhdHRyaWJ1dGUgb2YgdGhlIFxhIHJlcXVlc3QuCisqLworCisvKiEKICAgXGZuIFFXZWJQ
YWdlUHJpdmF0ZSogUVdlYlBhZ2U6OmhhbmRsZSgpIGNvbnN0CiAgIFxpbnRlcm5hbAogKi8KSW5k
ZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA0OTAyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMDktMTAtMDIgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtR
dF0gSW5mb3JtIHRoZSBhcHBsaWNhdGlvbiB3aGVuIGEgbmV3IHJlcXVlc3QgaXMgY3JlYXRlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjk5NzUKKwor
ICAgICAgICBFbWl0IGEgc2lnbmFsIGVhY2ggdGltZSBhIHJlcXVlc3QgaXMgY3JlYXRlZCwgd2l0
aCB0aGUgcmVxdWVzdCBhbmQgdGhlIGZyYW1lCisgICAgICAgIHRoYXQgY3JlYXRlZCBpdC4KKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI6OnNlbmRSZXNwb25zZUlmTmVl
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzdGFydCk6CisK
IDIwMDktMTAtMDIgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYS4KSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAkocmV2aXNp
b24gNDg5NzYpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhh
bmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzksNiArMzM5LDkgQEAKICAgICAgICAgY2xp
ZW50LT53aWxsU2VuZFJlcXVlc3QobV9yZXNvdXJjZUhhbmRsZSwgbmV3UmVxdWVzdCwgcmVzcG9u
c2UpOwogICAgICAgICBtX3JlZGlyZWN0ZWQgPSB0cnVlOwogICAgICAgICBtX3JlcXVlc3QgPSBu
ZXdSZXF1ZXN0LnRvTmV0d29ya1JlcXVlc3QoKTsKKworICAgICAgICBSZXNvdXJjZUhhbmRsZUlu
dGVybmFsKiBkID0gbV9yZXNvdXJjZUhhbmRsZS0+Z2V0SW50ZXJuYWwoKTsKKyAgICAgICAgZW1p
dCBkLT5tX2ZyYW1lLT5wYWdlKCktPm5ldHdvcmtSZXF1ZXN0U3RhcnRlZChkLT5tX2ZyYW1lLCAm
bV9yZXF1ZXN0KTsKICAgICB9IGVsc2UgewogICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVSZXNw
b25zZShtX3Jlc291cmNlSGFuZGxlLCByZXNwb25zZSk7CiAgICAgfQpAQCAtMzc5LDYgKzM4Miw4
IEBACiAKICAgICBRTmV0d29ya0FjY2Vzc01hbmFnZXIqIG1hbmFnZXIgPSBkLT5tX2ZyYW1lLT5w
YWdlKCktPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCk7CiAKKyAgICBlbWl0IGQtPm1fZnJhbWUtPnBh
Z2UoKS0+bmV0d29ya1JlcXVlc3RTdGFydGVkKGQtPm1fZnJhbWUsICZtX3JlcXVlc3QpOworCiAg
ICAgY29uc3QgUVVybCB1cmwgPSBtX3JlcXVlc3QudXJsKCk7CiAgICAgY29uc3QgUVN0cmluZyBz
Y2hlbWUgPSB1cmwuc2NoZW1lKCk7CiAgICAgLy8gUG9zdCByZXF1ZXN0cyBvbiBmaWxlcyBhbmQg
ZGF0YSBkb24ndCByZWFsbHkgbWFrZSBzZW5zZSwgYnV0IGZvcgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42375</attachid>
            <date>2009-11-03 06:40:58 -0800</date>
            <delta_ts>2009-11-03 06:44:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-29975-20091103154055.patch</filename>
            <type>text/plain</type>
            <size>9217</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YjNlMTM0Ny4uMDhmYTUyNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAwOS0xMS0wMyAgU2ltb24gSGF1c21h
bm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEV4dGVuZGVkIHRoZSBjb252ZXJzaW9uIG9mIHRoZSBXZWJDb3Jl
IFJlc291cmNlUmVxdWVzdCB0byB0aGUKKyAgICAgICAgUU5ldHdvcmtSZXF1ZXN0IHdpdGggYSBt
YW5kYXRvcnkgb3JpZ2luYXRpbmcgb2JqZWN0IGFyZ3VtZW50LAorICAgICAgICB3aGljaCBpcyBt
ZWFudCB0byBiZSB0aGUgUVdlYkZyYW1lIHRoZSByZXF1ZXN0IGJlbG9uZ3MgdG8uCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5kbGVyOjpRTmV0d29ya1JlcGx5SGFuZGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpRTmV0d29ya1JlcGx5SGFuZGxlcjo6c2VuZFJlc3BvbnNlSWZO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI6OnN0YXJ0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0UXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojp0b05ldHdvcmtSZXF1ZXN0KToKKwogMjAwOS0xMS0w
MiAgRGFyaW4gRmlzaGVyICA8ZGFyaW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeGluZyBK
U0MgYnVpbGQgYnVzdGFnZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9x
dC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQv
UU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCmluZGV4IGQ5NjUzZjEuLmJiZjU1MjUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNw
cApAQCAtMTQ3LDcgKzE0Nyw3IEBAIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpRTmV0d29ya1JlcGx5
SGFuZGxlcihSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBMb2FkTW9kZSBsb2FkCiAgICAgZWxzZQog
ICAgICAgICBtX21ldGhvZCA9IFFOZXR3b3JrQWNjZXNzTWFuYWdlcjo6VW5rbm93bk9wZXJhdGlv
bjsKIAotICAgIG1fcmVxdWVzdCA9IHIudG9OZXR3b3JrUmVxdWVzdCgpOworICAgIG1fcmVxdWVz
dCA9IHIudG9OZXR3b3JrUmVxdWVzdChtX3Jlc291cmNlSGFuZGxlLT5nZXRJbnRlcm5hbCgpLT5t
X2ZyYW1lKTsKIAogICAgIGlmIChtX2xvYWRNb2RlID09IExvYWROb3JtYWwpCiAgICAgICAgIHN0
YXJ0KCk7CkBAIC0zMjcsMTAgKzMyNyw3IEBAIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6OnNl
bmRSZXNwb25zZUlmTmVlZGVkKCkKIAogICAgICAgICBjbGllbnQtPndpbGxTZW5kUmVxdWVzdCht
X3Jlc291cmNlSGFuZGxlLCBuZXdSZXF1ZXN0LCByZXNwb25zZSk7CiAgICAgICAgIG1fcmVkaXJl
Y3RlZCA9IHRydWU7Ci0gICAgICAgIG1fcmVxdWVzdCA9IG5ld1JlcXVlc3QudG9OZXR3b3JrUmVx
dWVzdCgpOwotCi0gICAgICAgIFJlc291cmNlSGFuZGxlSW50ZXJuYWwqIGQgPSBtX3Jlc291cmNl
SGFuZGxlLT5nZXRJbnRlcm5hbCgpOwotICAgICAgICBlbWl0IGQtPm1fZnJhbWUtPnBhZ2UoKS0+
bmV0d29ya1JlcXVlc3RTdGFydGVkKGQtPm1fZnJhbWUsICZtX3JlcXVlc3QpOworICAgICAgICBt
X3JlcXVlc3QgPSBuZXdSZXF1ZXN0LnRvTmV0d29ya1JlcXVlc3QobV9yZXNvdXJjZUhhbmRsZS0+
Z2V0SW50ZXJuYWwoKS0+bV9mcmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM3
Miw4ICszNjksNiBAQCB2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzdGFydCgpCiAKICAgICBR
TmV0d29ya0FjY2Vzc01hbmFnZXIqIG1hbmFnZXIgPSBkLT5tX2ZyYW1lLT5wYWdlKCktPm5ldHdv
cmtBY2Nlc3NNYW5hZ2VyKCk7CiAKLSAgICBlbWl0IGQtPm1fZnJhbWUtPnBhZ2UoKS0+bmV0d29y
a1JlcXVlc3RTdGFydGVkKGQtPm1fZnJhbWUsICZtX3JlcXVlc3QpOwotCiAgICAgY29uc3QgUVVy
bCB1cmwgPSBtX3JlcXVlc3QudXJsKCk7CiAgICAgY29uc3QgUVN0cmluZyBzY2hlbWUgPSB1cmwu
c2NoZW1lKCk7CiAgICAgLy8gUG9zdCByZXF1ZXN0cyBvbiBmaWxlcyBhbmQgZGF0YSBkb24ndCBy
ZWFsbHkgbWFrZSBzZW5zZSwgYnV0IGZvcgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0
L1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IDkzZGFjZjMuLjYwZDMyZGQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTMxLDYgKzMxLDcgQEAK
IAogUVRfQkVHSU5fTkFNRVNQQUNFCiBjbGFzcyBRTmV0d29ya1JlcXVlc3Q7CitjbGFzcyBRT2Jq
ZWN0OwogUVRfRU5EX05BTUVTUEFDRQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01OSw3ICs2
MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogCiAjaWYgUVRfVkVSU0lPTiA+
PSAweDA0MDQwMAotICAgICAgICBRTmV0d29ya1JlcXVlc3QgdG9OZXR3b3JrUmVxdWVzdCgpIGNv
bnN0OworICAgICAgICBRTmV0d29ya1JlcXVlc3QgdG9OZXR3b3JrUmVxdWVzdChRT2JqZWN0KiBv
cmlnaW5hdGluZ09iamVjdCkgY29uc3Q7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1ZXN0UXQuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdFF0LmNwcAppbmRleCBj
OGY2YWQ1Li5jODY2YTU0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQv
UmVzb3VyY2VSZXF1ZXN0UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9S
ZXNvdXJjZVJlcXVlc3RRdC5jcHAKQEAgLTI4LDEwICsyOCwxMyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVFOZXR3b3JrUmVxdWVzdCBSZXNvdXJjZVJlcXVlc3Q6OnRvTmV0d29ya1JlcXVl
c3QoKSBjb25zdAorUU5ldHdvcmtSZXF1ZXN0IFJlc291cmNlUmVxdWVzdDo6dG9OZXR3b3JrUmVx
dWVzdChRT2JqZWN0KiBvcmlnaW5hdGluZ0ZyYW1lKSBjb25zdAogewogICAgIFFOZXR3b3JrUmVx
dWVzdCByZXF1ZXN0OwogICAgIHJlcXVlc3Quc2V0VXJsKHVybCgpKTsKKyNpZiBRVF9WRVJTSU9O
ID49IFFUX1ZFUlNJT05fQ0hFQ0soNCwgNiwgMCkKKyAgICByZXF1ZXN0LnNldE9yaWdpbmF0aW5n
T2JqZWN0KG9yaWdpbmF0aW5nRnJhbWUpOworI2VuZGlmCiAKICAgICBjb25zdCBIVFRQSGVhZGVy
TWFwICZoZWFkZXJzID0gaHR0cEhlYWRlckZpZWxkcygpOwogICAgIGZvciAoSFRUUEhlYWRlck1h
cDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFkZXJzLmJlZ2luKCksIGVuZCA9IGhlYWRlcnMuZW5k
KCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmggYi9XZWJLaXQvcXQvQXBp
L3F3ZWJwYWdlLmgKaW5kZXggZjJiYmRlMC4uZjM5MjA5YyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0
L0FwaS9xd2VicGFnZS5oCisrKyBiL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuaApAQCAtMzQ3LDgg
KzM0Nyw2IEBAIFFfU0lHTkFMUzoKICAgICB2b2lkIHNhdmVGcmFtZVN0YXRlUmVxdWVzdGVkKFFX
ZWJGcmFtZSogZnJhbWUsIFFXZWJIaXN0b3J5SXRlbSogaXRlbSk7CiAgICAgdm9pZCByZXN0b3Jl
RnJhbWVTdGF0ZVJlcXVlc3RlZChRV2ViRnJhbWUqIGZyYW1lKTsKIAotICAgIHZvaWQgbmV0d29y
a1JlcXVlc3RTdGFydGVkKFFXZWJGcmFtZSogZnJhbWUsIFFOZXR3b3JrUmVxdWVzdCogcmVxdWVz
dCk7Ci0KIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIFFXZWJQYWdlICpjcmVhdGVXaW5kb3coV2Vi
V2luZG93VHlwZSB0eXBlKTsKICAgICB2aXJ0dWFsIFFPYmplY3QgKmNyZWF0ZVBsdWdpbihjb25z
dCBRU3RyaW5nICZjbGFzc2lkLCBjb25zdCBRVXJsICZ1cmwsIGNvbnN0IFFTdHJpbmdMaXN0ICZw
YXJhbU5hbWVzLCBjb25zdCBRU3RyaW5nTGlzdCAmcGFyYW1WYWx1ZXMpOwpkaWZmIC0tZ2l0IGEv
V2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggYWQxNzI4Ny4u
NTJhNGZmNCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDktMTEtMDMgIFNpbW9uIEhhdXNtYW5uICA8
aGF1c21hbm5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZXBsYWNlIHRoZSBRV2ViUGFnZTo6bmV0d29ya1JlcXVlc3RTdGFydGVk
KCkgc2lnbmFsIHdpdGggdGhlIG9yaWdpbmF0aW5nT2JqZWN0CisgICAgICAgIHByb3BlcnR5IHNl
dCB0byB0aGUgUVdlYkZyYW1lIHRoYXQgYmVsb25ncyB0byB0aGUgcmVxdWVzdC4KKworICAgICAg
ICAqIEFwaS9xd2VicGFnZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnN0YXJ0RG93bmxv
YWQpOgorICAgICAgICAqIHRlc3RzL3F3ZWJwYWdlL3RzdF9xd2VicGFnZS5jcHA6CisgICAgICAg
ICh0c3RfUVdlYlBhZ2U6OmxvYWRGaW5pc2hlZCk6CisgICAgICAgIChUZXN0TmV0d29ya01hbmFn
ZXI6OmNyZWF0ZVJlcXVlc3QpOgorICAgICAgICAodHN0X1FXZWJQYWdlOjpvcmlnaW5hdGluZ09i
amVjdEluTmV0d29ya1JlcXVlc3RzKToKKwogMjAwOS0xMS0wMiAgSmVkcnplaiBOb3dhY2tpICA8
amVkcnplai5ub3dhY2tpQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJh
cnRoLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuY3BwIGIvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
Y3BwCmluZGV4IDAzYjExODMuLjI3OGRiYTkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKQEAgLTk0Niw3ICs5NDYsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KEZyYW1lUG9saWN5RnVuYwogI2lmIFFUX1ZFUlNJT04gPCAweDA0MDQwMAogICAgIFFXZWJOZXR3
b3JrUmVxdWVzdCByKHJlcXVlc3QpOwogI2Vsc2UKLSAgICBRTmV0d29ya1JlcXVlc3QgcihyZXF1
ZXN0LnRvTmV0d29ya1JlcXVlc3QoKSk7CisgICAgUU5ldHdvcmtSZXF1ZXN0IHIocmVxdWVzdC50
b05ldHdvcmtSZXF1ZXN0KG1fd2ViRnJhbWUpKTsKICNlbmRpZgogICAgIFFXZWJQYWdlKiBwYWdl
ID0gbV93ZWJGcmFtZS0+cGFnZSgpOwogCkBAIC05NzEsNyArOTcxLDcgQEAgdm9pZCBGcmFtZUxv
YWRlckNsaWVudFF0OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oRnJh
bWVQb2xpY3lGdW4KICNpZiBRVF9WRVJTSU9OIDwgMHgwNDA0MDAKICAgICBRV2ViTmV0d29ya1Jl
cXVlc3QgcihyZXF1ZXN0KTsKICNlbHNlCi0gICAgUU5ldHdvcmtSZXF1ZXN0IHIocmVxdWVzdC50
b05ldHdvcmtSZXF1ZXN0KCkpOworICAgIFFOZXR3b3JrUmVxdWVzdCByKHJlcXVlc3QudG9OZXR3
b3JrUmVxdWVzdChtX3dlYkZyYW1lKSk7CiAjZW5kaWYKICAgICBRV2ViUGFnZSpwYWdlID0gbV93
ZWJGcmFtZS0+cGFnZSgpOwogCkBAIC0xMDAxLDcgKzEwMDEsNyBAQCB2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50UXQ6OnN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQogICAgIGlmICghbV93ZWJGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZW1p
dCBtX3dlYkZyYW1lLT5wYWdlKCktPmRvd25sb2FkUmVxdWVzdGVkKHJlcXVlc3QudG9OZXR3b3Jr
UmVxdWVzdCgpKTsKKyAgICBlbWl0IG1fd2ViRnJhbWUtPnBhZ2UoKS0+ZG93bmxvYWRSZXF1ZXN0
ZWQocmVxdWVzdC50b05ldHdvcmtSZXF1ZXN0KG1fd2ViRnJhbWUpKTsKICNlbmRpZgogfQogCmRp
ZmYgLS1naXQgYS9XZWJLaXQvcXQvdGVzdHMvcXdlYnBhZ2UvdHN0X3F3ZWJwYWdlLmNwcCBiL1dl
YktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCmluZGV4IDBjZjg1ZWUuLmJk
YzZlOGUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2Uu
Y3BwCisrKyBiL1dlYktpdC9xdC90ZXN0cy9xd2VicGFnZS90c3RfcXdlYnBhZ2UuY3BwCkBAIC0x
MjksNiArMTI5LDggQEAgcHJpdmF0ZSBzbG90czoKICAgICB2b2lkIHNjcmVlbnNob3RfZGF0YSgp
OwogICAgIHZvaWQgc2NyZWVuc2hvdCgpOwogCisgICAgdm9pZCBvcmlnaW5hdGluZ09iamVjdElu
TmV0d29ya1JlcXVlc3RzKCk7CisKIHByaXZhdGU6CiAgICAgUVdlYlZpZXcqIG1fdmlldzsKICAg
ICBRV2ViUGFnZSogbV9wYWdlOwpAQCAtMjM0LDcgKzIzNiw2IEBAIHZvaWQgdHN0X1FXZWJQYWdl
Ojpsb2FkRmluaXNoZWQoKQogewogICAgIHFSZWdpc3Rlck1ldGFUeXBlPFFXZWJGcmFtZSo+KCJR
V2ViRnJhbWUqIik7CiAgICAgcVJlZ2lzdGVyTWV0YVR5cGU8UU5ldHdvcmtSZXF1ZXN0Kj4oIlFO
ZXR3b3JrUmVxdWVzdCoiKTsKLSAgICBRU2lnbmFsU3B5IHNweU5ldHdvcmtSZXF1ZXN0U3RhcnRl
ZChtX3BhZ2UsIFNJR05BTChuZXR3b3JrUmVxdWVzdFN0YXJ0ZWQoUVdlYkZyYW1lKiwgUU5ldHdv
cmtSZXF1ZXN0KikpKTsKICAgICBRU2lnbmFsU3B5IHNweUxvYWRTdGFydGVkKG1fdmlldywgU0lH
TkFMKGxvYWRTdGFydGVkKCkpKTsKICAgICBRU2lnbmFsU3B5IHNweUxvYWRGaW5pc2hlZChtX3Zp
ZXcsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpKTsKIApAQCAtMjQ1LDcgKzI0Niw2IEBAIHZv
aWQgdHN0X1FXZWJQYWdlOjpsb2FkRmluaXNoZWQoKQogCiAgICAgUVRlc3Q6OnFXYWl0KDMwMDAp
OwogCi0gICAgUVZFUklGWShzcHlOZXR3b3JrUmVxdWVzdFN0YXJ0ZWQuY291bnQoKSA+IDEpOwog
ICAgIFFWRVJJRlkoc3B5TG9hZFN0YXJ0ZWQuY291bnQoKSA+IDEpOwogICAgIFFWRVJJRlkoc3B5
TG9hZEZpbmlzaGVkLmNvdW50KCkgPiAxKTsKIApAQCAtMzQ2LDkgKzM0NiwxMSBAQCBwdWJsaWM6
CiAgICAgVGVzdE5ldHdvcmtNYW5hZ2VyKFFPYmplY3QqIHBhcmVudCkgOiBRTmV0d29ya0FjY2Vz
c01hbmFnZXIocGFyZW50KSB7fQogCiAgICAgUUxpc3Q8UVVybD4gcmVxdWVzdGVkVXJsczsKKyAg
ICBRTGlzdDxRTmV0d29ya1JlcXVlc3Q+IHJlcXVlc3RzOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCBRTmV0d29ya1JlcGx5KiBjcmVhdGVSZXF1ZXN0KE9wZXJhdGlvbiBvcCwgY29uc3QgUU5l
dHdvcmtSZXF1ZXN0ICZyZXF1ZXN0LCBRSU9EZXZpY2UqIG91dGdvaW5nRGF0YSkgeworICAgICAg
ICByZXF1ZXN0cy5hcHBlbmQocmVxdWVzdCk7CiAgICAgICAgIHJlcXVlc3RlZFVybHMuYXBwZW5k
KHJlcXVlc3QudXJsKCkpOwogICAgICAgICByZXR1cm4gUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyOjpj
cmVhdGVSZXF1ZXN0KG9wLCByZXF1ZXN0LCBvdXRnb2luZ0RhdGEpOwogICAgIH0KQEAgLTE2MDks
NSArMTYxMSwyNSBAQCB2b2lkIHRzdF9RV2ViUGFnZTo6c2NyZWVuc2hvdCgpCiAgICAgUURpcjo6
c2V0Q3VycmVudChRQXBwbGljYXRpb246OmFwcGxpY2F0aW9uRGlyUGF0aCgpKTsKIH0KIAordm9p
ZCB0c3RfUVdlYlBhZ2U6Om9yaWdpbmF0aW5nT2JqZWN0SW5OZXR3b3JrUmVxdWVzdHMoKQorewor
ICAgIFRlc3ROZXR3b3JrTWFuYWdlciogbmV0d29ya01hbmFnZXIgPSBuZXcgVGVzdE5ldHdvcmtN
YW5hZ2VyKG1fcGFnZSk7CisgICAgbV9wYWdlLT5zZXROZXR3b3JrQWNjZXNzTWFuYWdlcihuZXR3
b3JrTWFuYWdlcik7CisgICAgbmV0d29ya01hbmFnZXItPnJlcXVlc3RzLmNsZWFyKCk7CisKKyAg
ICBtX3ZpZXctPnNldEh0bWwoUVN0cmluZygiZGF0YTp0ZXh0L2h0bWwsPGZyYW1lc2V0IGNvbHM9
XCIyNSUsNzUlXCI+PGZyYW1lIHNyYz1cImRhdGE6dGV4dC9odG1sLCIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiPGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0ncmVmcmVzaCcgY29udGVudD0n
MSc+PC9oZWFkPmZvbyBcIj4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxmcmFtZSBz
cmM9XCJkYXRhOnRleHQvaHRtbCxiYXJcIj48L2ZyYW1lc2V0PiIpLCBRVXJsKCkpOworICAgIFFW
RVJJRlkoOjp3YWl0Rm9yU2lnbmFsKG1fdmlldywgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSkp
KTsKKworICAgIFFDT01QQVJFKG5ldHdvcmtNYW5hZ2VyLT5yZXF1ZXN0cy5jb3VudCgpLCAyKTsK
KworICAgIFFMaXN0PFFXZWJGcmFtZSo+IGNoaWxkRnJhbWVzID0gbV9wYWdlLT5tYWluRnJhbWUo
KS0+Y2hpbGRGcmFtZXMoKTsKKyAgICBRQ09NUEFSRShjaGlsZEZyYW1lcy5jb3VudCgpLCAyKTsK
KworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgKytpKQorICAgICAgICBRVkVSSUZZKHFvYmpl
Y3RfY2FzdDxRV2ViRnJhbWUqPihuZXR3b3JrTWFuYWdlci0+cmVxdWVzdHMuYXQoaSkub3JpZ2lu
YXRpbmdPYmplY3QoKSkgPT0gY2hpbGRGcmFtZXMuYXQoaSkpOworfQorCiBRVEVTVF9NQUlOKHRz
dF9RV2ViUGFnZSkKICNpbmNsdWRlICJ0c3RfcXdlYnBhZ2UubW9jIg==
</data>
<flag name="review"
          id="23894"
          type_id="1"
          status="+"
          setter="vestbo"
    />
          </attachment>
      

    </bug>

</bugzilla>