<?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>35706</bug_id>
          
          <creation_ts>2010-03-03 15:17:50 -0800</creation_ts>
          <short_desc>[GStreamer] Buffering logic is not correct, and does not work very well</short_desc>
          <delta_ts>2010-03-09 10:52:19 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gustavo Noronha (kov)">gustavo</reporter>
          <assigned_to name="Gustavo Noronha (kov)">gustavo</assigned_to>
          <cc>pnormand</cc>
    
    <cc>slomo</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>195783</commentid>
    <comment_count>0</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-03-03 15:17:50 -0800</bug_when>
    <thetext>The main problem is this:

        if (m_fillTimeoutId) {
            m_networkState = MediaPlayer::Loading;
            // Buffering has just started, we should now have enough
            // data to restart playback if it was internally paused by
            // GStreamer.
            if (m_paused &amp;&amp; !m_startedPlaying)
                gst_element_set_state(m_playBin, GST_STATE_PLAYING);
        }

This pretty much guarantees that the pipeline is playing while buffering, which is not the behavior we want, nor what GStreamer expects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195789</commentid>
    <comment_count>1</comment_count>
      <attachid>49955</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-03-03 15:22:38 -0800</bug_when>
    <thetext>Created attachment 49955
proposed change

This works much better to me (I have quite a bit of latency, though I do have quite a bit of bandwidth too). Specially watching Youtube videos using my HTML5 extension.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195925</commentid>
    <comment_count>2</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-04 00:26:53 -0800</bug_when>
    <thetext>This patch breaks on-disk buffering... Just try an apple trailer for instance:

&lt;video preload controls src=&quot;http://movies.apple.com/movies/paramount/ironman2/ironman2-z7r459-tlr1_480p.mov&quot;/&gt;

Without the patch you can see the download in-progress filling the dark progressbar of the controls.

So maybe the patch fixes live buffering when you play youtube videos but it&apos;d be nice to keep the on-disk buffering feature working as well ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>195931</commentid>
    <comment_count>3</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-04 00:50:46 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; The main problem is this:
&gt; 
&gt;         if (m_fillTimeoutId) {
&gt;             m_networkState = MediaPlayer::Loading;
&gt;             // Buffering has just started, we should now have enough
&gt;             // data to restart playback if it was internally paused by
&gt;             // GStreamer.
&gt;             if (m_paused &amp;&amp; !m_startedPlaying)
&gt;                 gst_element_set_state(m_playBin, GST_STATE_PLAYING);
&gt;         }
&gt; 
&gt; This pretty much guarantees that the pipeline is playing while buffering, which
&gt; is not the behavior we want, nor what GStreamer expects.

This code is executed only in the case of on-disk buffering. I didn&apos;t know youtube had enabled this, or is your extension setting the preload attribute on the video?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197198</commentid>
    <comment_count>4</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-03-08 09:45:28 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #0)
&gt; &gt; The main problem is this:
&gt; &gt; 
&gt; &gt;         if (m_fillTimeoutId) {
&gt; &gt;             m_networkState = MediaPlayer::Loading;
&gt; &gt;             // Buffering has just started, we should now have enough
&gt; &gt;             // data to restart playback if it was internally paused by
&gt; &gt;             // GStreamer.
&gt; &gt;             if (m_paused &amp;&amp; !m_startedPlaying)
&gt; &gt;                 gst_element_set_state(m_playBin, GST_STATE_PLAYING);
&gt; &gt;         }
&gt; &gt; 
&gt; &gt; This pretty much guarantees that the pipeline is playing while buffering, which
&gt; &gt; is not the behavior we want, nor what GStreamer expects.
&gt; 
&gt; This code is executed only in the case of on-disk buffering. I didn&apos;t know
&gt; youtube had enabled this, or is your extension setting the preload attribute on
&gt; the video?

Not really. It is executed for any buffering GStreamer decides to perform, which it does decide to perform for many videos, even without the preload attribute. I am becoming pretty sure that our state tracking needs a complete rewrite, to be honest. 

And yeah, this patch of mine is not really correct =(.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197209</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-08 09:56:00 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #0)
&gt; &gt; &gt; The main problem is this:
&gt; &gt; &gt; 
&gt; &gt; &gt;         if (m_fillTimeoutId) {
&gt; &gt; &gt;             m_networkState = MediaPlayer::Loading;
&gt; &gt; &gt;             // Buffering has just started, we should now have enough
&gt; &gt; &gt;             // data to restart playback if it was internally paused by
&gt; &gt; &gt;             // GStreamer.
&gt; &gt; &gt;             if (m_paused &amp;&amp; !m_startedPlaying)
&gt; &gt; &gt;                 gst_element_set_state(m_playBin, GST_STATE_PLAYING);
&gt; &gt; &gt;         }
&gt; &gt; &gt; 
&gt; &gt; &gt; This pretty much guarantees that the pipeline is playing while buffering, which
&gt; &gt; &gt; is not the behavior we want, nor what GStreamer expects.
&gt; &gt; 
&gt; &gt; This code is executed only in the case of on-disk buffering. I didn&apos;t know
&gt; &gt; youtube had enabled this, or is your extension setting the preload attribute on
&gt; &gt; the video?
&gt; 
&gt; Not really. It is executed for any buffering GStreamer decides to perform,
&gt; which it does decide to perform for many videos, even without the preload
&gt; attribute.

Err no, the fillTimer is started only if the buffering mode is GST_BUFFERING_DOWNLOAD (see processBufferingStats) or did I miss some case?

&gt; I am becoming pretty sure that our state tracking needs a complete
&gt; rewrite, to be honest. 
&gt; 
&gt; And yeah, this patch of mine is not really correct =(.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197275</commentid>
    <comment_count>6</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-03-08 12:44:11 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; Not really. It is executed for any buffering GStreamer decides to perform,
&gt; &gt; which it does decide to perform for many videos, even without the preload
&gt; &gt; attribute.
&gt; 
&gt; Err no, the fillTimer is started only if the buffering mode is
&gt; GST_BUFFERING_DOWNLOAD (see processBufferingStats) or did I miss some case?

Nope, you&apos;re right, sorry for being confused =D. So the problem really is we are not handling other kinds of buffering requests correctly. New patch to come, which makes it work fine for me, while keeping the other use cases working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197276</commentid>
    <comment_count>7</comment_count>
      <attachid>50242</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-03-08 12:51:41 -0800</bug_when>
    <thetext>Created attachment 50242
fix buffering logic to also consider non-download cases

So it turns out that the real problem was in using the on-disk-buffering logic to pause/play the pipeline. GStreamer uses a buffering-percent value in the struct that is sent to the bus in the buffering message to provide information on how much of the immediate buffering it needs to play is actually complete. That is the information we need to use to decide when to restart playing the pipeline that got paused for buffering, not the fact that the on-disk buffering has started.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197509</commentid>
    <comment_count>8</comment_count>
      <attachid>50242</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-09 02:49:28 -0800</bug_when>
    <thetext>Comment on attachment 50242
fix buffering logic to also consider non-download cases


&gt;     g_object_set(m_playBin, &quot;uri&quot;, url.utf8().data(), NULL);
&gt;-    pause();
&gt;+
&gt;+    // GStreamer needs to have the pipeline set to a paused state to
&gt;+    // start providing anything useful.
&gt;+    gst_element_set_state(m_playBin, GST_STATE_PAUSED);

Why that change?

+    const GstStructure *structure = gst_message_get_structure(message);

Should be GstStructure* structure no? I wonder why the style bot didn&apos;t complain. Or maybe it&apos;s not a strong rule ;) 
What about using gst_message_parse_buffering instead of reading directly the structure?

The rest of the patch is fine by me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197575</commentid>
    <comment_count>9</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-03-09 07:39:06 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 50242 [details])
&gt; 
&gt; &gt;     g_object_set(m_playBin, &quot;uri&quot;, url.utf8().data(), NULL);
&gt; &gt;-    pause();
&gt; &gt;+
&gt; &gt;+    // GStreamer needs to have the pipeline set to a paused state to
&gt; &gt;+    // start providing anything useful.
&gt; &gt;+    gst_element_set_state(m_playBin, GST_STATE_PAUSED);
&gt; 
&gt; Why that change?

I want to make sure the setting of the state for GStreamer is not a real &quot;pause&quot; on the player. This change is to guarantee that we don&apos;t get side-effects if we change the pause method to, say, change m_paused, or change some other flag. This is just an implementation detail for GStreamer, so I think it should not be confused with the actual actions in the player.

This could go in separately, before the other changes, what do you think?

&gt; +    const GstStructure *structure = gst_message_get_structure(message);
&gt; 
&gt; Should be GstStructure* structure no? I wonder why the style bot didn&apos;t
&gt; complain. Or maybe it&apos;s not a strong rule ;) 

It should be that indeed. Not sure why the style bot didn&apos;t catch it.

&gt; What about using gst_message_parse_buffering instead of reading directly the
&gt; structure?

Sounds like a good idea as well. I&apos;ll fix these both when I come back from lunch, thanks for your comments!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197586</commentid>
    <comment_count>10</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2010-03-09 07:53:43 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (From update of attachment 50242 [details] [details])
&gt; &gt; 
&gt; &gt; &gt;     g_object_set(m_playBin, &quot;uri&quot;, url.utf8().data(), NULL);
&gt; &gt; &gt;-    pause();
&gt; &gt; &gt;+
&gt; &gt; &gt;+    // GStreamer needs to have the pipeline set to a paused state to
&gt; &gt; &gt;+    // start providing anything useful.
&gt; &gt; &gt;+    gst_element_set_state(m_playBin, GST_STATE_PAUSED);
&gt; &gt; 
&gt; &gt; Why that change?
&gt; 
&gt; I want to make sure the setting of the state for GStreamer is not a real
&gt; &quot;pause&quot; on the player. This change is to guarantee that we don&apos;t get
&gt; side-effects if we change the pause method to, say, change m_paused, or change
&gt; some other flag. This is just an implementation detail for GStreamer, so I
&gt; think it should not be confused with the actual actions in the player.
&gt; 
&gt; This could go in separately, before the other changes, what do you think?
&gt; 

Hum ok then, but still, a state change will trigger an updateStates() call because we get a state-changed message on the bus and this might update some internal variables of the player. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197620</commentid>
    <comment_count>11</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-03-09 09:21:54 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Hum ok then, but still, a state change will trigger an updateStates() call
&gt; because we get a state-changed message on the bus and this might update some
&gt; internal variables of the player. :)

Right. But this already happens currently. We currently call pause(), which changes the state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197633</commentid>
    <comment_count>12</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-03-09 09:39:15 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; Hum ok then, but still, a state change will trigger an updateStates() call
&gt; &gt; because we get a state-changed message on the bus and this might update some
&gt; &gt; internal variables of the player. :)
&gt; 
&gt; Right. But this already happens currently. We currently call pause(), which
&gt; changes the state.

FWIW, this is required (which is why  is done currently) because, as the comment I added implies, GStreamer will not start doing its thing before it is put in the paused state. What we could investigate is moving this to the prepareToPlay() implementation instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197634</commentid>
    <comment_count>13</comment_count>
      <attachid>50317</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-03-09 09:41:45 -0800</bug_when>
    <thetext>Created attachment 50317
set GStreamer state directly instead of using pause()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197635</commentid>
    <comment_count>14</comment_count>
      <attachid>50318</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-03-09 09:42:48 -0800</bug_when>
    <thetext>Created attachment 50318
handle all cases of buffering</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197646</commentid>
    <comment_count>15</comment_count>
      <attachid>50318</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-03-09 10:14:42 -0800</bug_when>
    <thetext>Comment on attachment 50318
handle all cases of buffering

lgtm r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197662</commentid>
    <comment_count>16</comment_count>
      <attachid>50317</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-03-09 10:36:18 -0800</bug_when>
    <thetext>Comment on attachment 50317
set GStreamer state directly instead of using pause()

Landed as r55732. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197666</commentid>
    <comment_count>17</comment_count>
      <attachid>50318</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-03-09 10:44:13 -0800</bug_when>
    <thetext>Comment on attachment 50318
handle all cases of buffering

Landed as r55733.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49955</attachid>
            <date>2010-03-03 15:22:38 -0800</date>
            <delta_ts>2010-03-08 12:51:41 -0800</delta_ts>
            <desc>proposed change</desc>
            <filename>0001-Fix-buffering-logic.patch</filename>
            <type>text/plain</type>
            <size>5560</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">RnJvbSA0MTQwOWE5YzcwMWEzY2UzNjVlZmFlNDM2NDRkMGU3MDVjZGI0ZjE3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+
CkRhdGU6IFdlZCwgMyBNYXIgMjAxMCAyMDoyMDozMSAtMDMwMApTdWJqZWN0OiBbUEFUQ0hdIEZp
eCBidWZmZXJpbmcgbG9naWMKCi0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDIxICsrKysrKysrKwogLi4uL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwICAgICAgfCAgIDQ4ICsrKysrKysrKy0tLS0tLS0tLS0t
CiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oICAgICAgICB8ICAg
IDIgKy0KIDMgZmlsZXMgY2hhbmdlZCwgNDMgaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0p
CgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA3MTk4OWNjLi4yMzQ5NmQzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEwLTAzLTAzICBHdXN0YXZvIE5v
cm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvLnVrPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHU3RyZWFtZXJdIEJ1ZmZl
cmluZyBsb2dpYyBpcyBub3QgY29ycmVjdCwgYW5kIGRvZXMgbm90IHdvcmsgdmVyeSB3ZWxsCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTcwNgorCisg
ICAgICAgIEZpeCBidWZmZXJpbmcgbG9naWMsIHRvIHBhdXNlLCBhbmQgcGxheSB0aGUgcGlwZWxp
bmUgd2hlbiByZXF1aXJlZAorICAgICAgICBieSBHU3RyZWFtZXIuIFRoZSBjYWxjdWxhdGlvbiBv
ZiBob3cgbXVjaCB3YXMgYnVmZmVyZWQgd2FzIGFsc28KKyAgICAgICAgd3JvbmcsIGFuZCBjYXVz
ZWQgdGhlIHBsYXlpbmcgdG8gc3RhcnQgcHJlbWF0dXJlbHkuCisKKyAgICAgICAgSGFyZCB0byB0
ZXN0LCBzaW5jZSB0aGlzIGRlcGVuZHMgb24gR1N0cmVhbWVyIHRoaW5raW5nIGl0IG5lZWRzIHRv
CisgICAgICAgIGJ1ZmZlci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlOjpNZWRpYVBsYXllclByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlOjpwcm9jZXNzQnVmZmVyaW5nU3RhdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpxdWVyeUJ1ZmZlcmluZ1N0YXRzKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6dXBkYXRlU3RhdGVzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6
CisKIDIwMTAtMDMtMDMgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBCdWlsZCBmaXguCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBm
ZTRiMmY5Li4xNzFiN2RlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
QEAgLTMxMyw3ICszMTMsNyBAQCBNZWRpYVBsYXllclByaXZhdGU6Ok1lZGlhUGxheWVyUHJpdmF0
ZShNZWRpYVBsYXllciogcGxheWVyKQogICAgICwgbV9zdGFydGVkQnVmZmVyaW5nKGZhbHNlKQog
ICAgICwgbV9maWxsVGltZW91dElkKDApCiAgICAgLCBtX21heFRpbWVMb2FkZWQoMCkKLSAgICAs
IG1fZmlsbFN0YXR1cygwKQorICAgICwgbV9maWxsU3RhdHVzKC0xKQogewogICAgIGlmIChkb0dz
dEluaXQoKSkKICAgICAgICAgY3JlYXRlR1NUUGxheUJpbigpOwpAQCAtNjgyLDEwICs2ODIsMTcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OnByb2Nlc3NCdWZmZXJpbmdTdGF0cyhHc3RNZXNz
YWdlKiBtZXNzYWdlKQogICAgIEdzdEJ1ZmZlcmluZ01vZGUgbW9kZTsKIAogICAgIGdzdF9tZXNz
YWdlX3BhcnNlX2J1ZmZlcmluZ19zdGF0cyhtZXNzYWdlLCAmbW9kZSwgMCwgMCwgMCk7Ci0gICAg
aWYgKG1vZGUgIT0gR1NUX0JVRkZFUklOR19ET1dOTE9BRCkKKyAgICBpZiAobW9kZSA9PSBHU1Rf
QlVGRkVSSU5HX0xJVkUpCiAgICAgICAgIHJldHVybjsKIAorICAgIGNvbnN0IEdzdFN0cnVjdHVy
ZSAqc3RydWN0dXJlID0gZ3N0X21lc3NhZ2VfZ2V0X3N0cnVjdHVyZShtZXNzYWdlKTsKKyAgICBn
c3Rfc3RydWN0dXJlX2dldF9pbnQoc3RydWN0dXJlLCAiYnVmZmVyLXBlcmNlbnQiLCAmbV9maWxs
U3RhdHVzKTsKKworICAgIExPR19WRVJCT1NFKE1lZGlhLCAiQnVmZmVyIGZpbGwgcGVyY2VudGFn
ZTogJWQlJSIsIG1fZmlsbFN0YXR1cyk7CisKICAgICBpZiAoIW1fc3RhcnRlZEJ1ZmZlcmluZykg
eworICAgICAgICBMT0dfVkVSQk9TRShNZWRpYSwgIkJ1ZmZlcmluZyBzdGFydGVkLiIpOworCiAg
ICAgICAgIG1fc3RhcnRlZEJ1ZmZlcmluZyA9IHRydWU7CiAKICAgICAgICAgaWYgKG1fZmlsbFRp
bWVvdXRJZCA+IDApCkBAIC02OTcsMjQgKzcwNCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
Ojpwcm9jZXNzQnVmZmVyaW5nU3RhdHMoR3N0TWVzc2FnZSogbWVzc2FnZSkKIAogYm9vbCBNZWRp
YVBsYXllclByaXZhdGU6OnF1ZXJ5QnVmZmVyaW5nU3RhdHMoKQogewotICAgIEdzdFF1ZXJ5KiBx
dWVyeSA9IGdzdF9xdWVyeV9uZXdfYnVmZmVyaW5nKEdTVF9GT1JNQVRfUEVSQ0VOVCk7Ci0KLSAg
ICBpZiAoIWdzdF9lbGVtZW50X3F1ZXJ5KG1fcGxheUJpbiwgcXVlcnkpKSB7Ci0gICAgICAgIGdz
dF9xdWVyeV91bnJlZihxdWVyeSk7Ci0gICAgICAgIHJldHVybiBUUlVFOwotICAgIH0KLQotICAg
IGdpbnQ2NCBzdGFydCwgc3RvcDsKLQotICAgIGdzdF9xdWVyeV9wYXJzZV9idWZmZXJpbmdfcmFu
Z2UocXVlcnksIDAsICZzdGFydCwgJnN0b3AsIDApOwotICAgIGdzdF9xdWVyeV91bnJlZihxdWVy
eSk7Ci0KLSAgICBpZiAoc3RvcCAhPSAtMSkKLSAgICAgICAgbV9maWxsU3RhdHVzID0gMTAwLjAg
KiBzdG9wIC8gR1NUX0ZPUk1BVF9QRVJDRU5UX01BWDsKLSAgICBlbHNlCi0gICAgICAgIG1fZmls
bFN0YXR1cyA9IDEwMC4wOwotCi0gICAgTE9HX1ZFUkJPU0UoTWVkaWEsICJEb3dubG9hZCBidWZm
ZXIgZmlsbGVkIHVwIHRvICVmJSUiLCBtX2ZpbGxTdGF0dXMpOworICAgIExPR19WRVJCT1NFKE1l
ZGlhLCAiUXVlcnkgYnVmZmVyaW5nOiBkb3dubG9hZCBidWZmZXIgZmlsbGVkIHVwIHRvICVkJSUi
LCBtX2ZpbGxTdGF0dXMpOwogCiAgICAgaWYgKCFtX21lZGlhRHVyYXRpb24pCiAgICAgICAgIGR1
cmF0aW9uQ2hhbmdlZCgpOwpAQCAtNzI2LDcgKzcxNiw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2
YXRlOjpxdWVyeUJ1ZmZlcmluZ1N0YXRzKCkKICAgICAgICAgTE9HX1ZFUkJPU0UoTWVkaWEsICJV
cGRhdGVkIG1heFRpbWVMb2FkZWQ6ICVmIiwgbV9tYXhUaW1lTG9hZGVkKTsKICAgICB9CiAKLSAg
ICBpZiAobV9maWxsU3RhdHVzICE9IDEwMC4wKSB7CisgICAgaWYgKG1fZmlsbFN0YXR1cyAhPSAx
MDApIHsKICAgICAgICAgdXBkYXRlU3RhdGVzKCk7CiAgICAgICAgIHJldHVybiBUUlVFOwogICAg
IH0KQEAgLTg1MCwxMyArODQwLDE3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjp1cGRhdGVT
dGF0ZXMoKQogICAgICAgICAgICAgbV9wYXVzZWQgPSB0cnVlOwogCiAgICAgICAgIC8vIElzIG9u
LWRpc2sgYnVmZmVyaW5nIGluIHByb2dyZXNzPwotICAgICAgICBpZiAobV9maWxsVGltZW91dElk
KSB7CisgICAgICAgIGlmIChtX2ZpbGxUaW1lb3V0SWQgJiYgKG1fZmlsbFN0YXR1cyA9PSAtMSkp
IHsKKyAgICAgICAgICAgIG1fZmlsbFN0YXR1cyA9IDA7CiAgICAgICAgICAgICBtX25ldHdvcmtT
dGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkaW5nOwotICAgICAgICAgICAgLy8gQnVmZmVyaW5nIGhh
cyBqdXN0IHN0YXJ0ZWQsIHdlIHNob3VsZCBub3cgaGF2ZSBlbm91Z2gKLSAgICAgICAgICAgIC8v
IGRhdGEgdG8gcmVzdGFydCBwbGF5YmFjayBpZiBpdCB3YXMgaW50ZXJuYWxseSBwYXVzZWQgYnkK
LSAgICAgICAgICAgIC8vIEdTdHJlYW1lci4KLSAgICAgICAgICAgIGlmIChtX3BhdXNlZCAmJiAh
bV9zdGFydGVkUGxheWluZykKLSAgICAgICAgICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUo
bV9wbGF5QmluLCBHU1RfU1RBVEVfUExBWUlORyk7CisgICAgICAgICAgICAvLyBCdWZmZXJpbmcg
aGFzIGp1c3Qgc3RhcnRlZCwgd2UgbmVlZCB0byBwYXVzZSB0aGUgcGlwZWxpbmUuCisgICAgICAg
ICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9wbGF5QmluLCBHU1RfU1RBVEVfUEFVU0VEKTsK
KyAgICAgICAgfSBlbHNlIGlmIChtX2ZpbGxTdGF0dXMgPT0gMTAwKSB7CisgICAgICAgICAgICBt
X2ZpbGxTdGF0dXMgPSAtMTsKKyAgICAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3Bs
YXlCaW4sIEdTVF9TVEFURV9QTEFZSU5HKTsKKyAgICAgICAgICAgIG1fcGF1c2VkID0gZmFsc2U7
CisgICAgICAgICAgICB1cGRhdGVTdGF0ZXMoKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChtYXhUaW1lTG9hZGVkKCkgPT0gZHVyYXRpb24oKSkgewpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAppbmRleCA0MDFkZDY1Li4xNTdmNTA5IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMTY2LDcgKzE2Niw3IEBAIGNsYXNz
IE1lZGlhUGxheWVyUHJpdmF0ZSA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2Ug
ewogICAgICAgICAgICAgYm9vbCBtX3N0YXJ0ZWRCdWZmZXJpbmc7CiAgICAgICAgICAgICBndWlu
dCBtX2ZpbGxUaW1lb3V0SWQ7CiAgICAgICAgICAgICBmbG9hdCBtX21heFRpbWVMb2FkZWQ7Ci0g
ICAgICAgICAgICBnZG91YmxlIG1fZmlsbFN0YXR1czsKKyAgICAgICAgICAgIGludCBtX2ZpbGxT
dGF0dXM7CiAgICAgfTsKIH0KIAotLSAKMS43LjAKCg==
</data>
<flag name="commit-queue"
          id="32967"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50242</attachid>
            <date>2010-03-08 12:51:41 -0800</date>
            <delta_ts>2010-03-09 09:41:45 -0800</delta_ts>
            <desc>fix buffering logic to also consider non-download cases</desc>
            <filename>0001-Fix-immediate-buffering-handling.patch</filename>
            <type>text/plain</type>
            <size>11293</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">RnJvbSA1MTYzN2UwMzk4OTQ1MDc5OGFkYmViY2Y1NDFmNDlhZTA3NDEzZDhlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+
CkRhdGU6IE1vbiwgOCBNYXIgMjAxMCAxNzo0Njo0NiAtMDMwMApTdWJqZWN0OiBbUEFUQ0hdIEZp
eCBpbW1lZGlhdGUgYnVmZmVyaW5nIGhhbmRsaW5nCgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMyArKysrCiAuLi4vZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgICAgICB8ICAxMTEgKysrKysrKysrKysr
LS0tLS0tLQogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCAgICAg
ICAgfCAgICAzICstCiAzIGZpbGVzIGNoYW5nZWQsIDk1IGluc2VydGlvbnMoKyksIDQyIGRlbGV0
aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggOTJkNzZhOS4uM2MyZWE4ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMC0wMy0wOCAgR3Vz
dGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9yYS5jby51az4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1N0cmVhbWVy
XSBCdWZmZXJpbmcgbG9naWMgaXMgbm90IGNvcnJlY3QsIGFuZCBkb2VzIG5vdCB3b3JrIHZlcnkg
d2VsbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU3
MDYKKworICAgICAgICBGaXggYnVmZmVyaW5nIHRvIG1hdGNoIEdTdHJlYW1lciBleHBlY3RhbmNp
ZXMgcmVnYXJkaW5nIHRoZQorICAgICAgICBwaXBlbGluZSBzdGF0ZSwgc28gdGhhdCB2aWRlb3Mg
d2hpY2ggcmVhbGx5IG5lZWQgYnVmZmVyaW5nIHRvIHBsYXkKKyAgICAgICAgY29ycmVjdGx5IGFs
c28gd29yaywgd2hpbGUgbWFpbnRhaW5pbmcgdGhlIGNvbnZlbmllbmNlIG9mCisgICAgICAgIG9u
LWRpc2stYnVmZmVyaW5nLiBUaGlzIHJlcXVpcmVkIGEgYml0IG9mIHNodWZmbGluZyBvZiBzdGF0
ZQorICAgICAgICBjaGFuZ2UgaGFuZGxpbmcuCisKKyAgICAgICAgTm8gYmVoYXZpb3VyIGNoYW5n
ZSBleHBlY3RlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlOjpNZWRpYVBsYXllclByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZTo6cHJvY2Vzc0J1ZmZlcmluZ1N0YXRzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZTo6ZmlsbFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlOjp1cGRhdGVTdGF0ZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaDoKKwogMjAxMC0wMy0wNCAgUGhpbGlw
cGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA4
ODE0MGJkLi5kYTE2NmUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAK
QEAgLTI3Niw3ICsyNzYsNiBAQCBNZWRpYVBsYXllclByaXZhdGU6Ok1lZGlhUGxheWVyUHJpdmF0
ZShNZWRpYVBsYXllciogcGxheWVyKQogICAgICwgbV9lbmRUaW1lKG51bWVyaWNfbGltaXRzPGZs
b2F0Pjo6aW5maW5pdHkoKSkKICAgICAsIG1fbmV0d29ya1N0YXRlKE1lZGlhUGxheWVyOjpFbXB0
eSkKICAgICAsIG1fcmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmcpCi0gICAgLCBt
X3N0YXJ0ZWRQbGF5aW5nKGZhbHNlKQogICAgICwgbV9pc1N0cmVhbWluZyhmYWxzZSkKICAgICAs
IG1fc2l6ZShJbnRTaXplKCkpCiAgICAgLCBtX2J1ZmZlcigwKQpAQCAtMjg1LDYgKzI4NCw3IEBA
IE1lZGlhUGxheWVyUHJpdmF0ZTo6TWVkaWFQbGF5ZXJQcml2YXRlKE1lZGlhUGxheWVyKiBwbGF5
ZXIpCiAgICAgLCBtX3Jlc2V0UGlwZWxpbmUoZmFsc2UpCiAgICAgLCBtX3BhdXNlZCh0cnVlKQog
ICAgICwgbV9zZWVraW5nKGZhbHNlKQorICAgICwgbV9idWZmZXJpbmcoZmFsc2UpCiAgICAgLCBt
X3BsYXliYWNrUmF0ZSgxKQogICAgICwgbV9lcnJvck9jY3VyZWQoZmFsc2UpCiAgICAgLCBtX21l
ZGlhRHVyYXRpb24oMCkKQEAgLTI5Miw2ICsyOTIsNyBAQCBNZWRpYVBsYXllclByaXZhdGU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZShNZWRpYVBsYXllciogcGxheWVyKQogICAgICwgbV9maWxsVGltZXIo
dGhpcywgJk1lZGlhUGxheWVyUHJpdmF0ZTo6ZmlsbFRpbWVyRmlyZWQpCiAgICAgLCBtX21heFRp
bWVMb2FkZWQoMCkKICAgICAsIG1fZmlsbFN0YXR1cygwKQorICAgICwgbV9idWZmZXJpbmdQZXJj
ZW50YWdlKDApCiB7CiAgICAgaWYgKGRvR3N0SW5pdCgpKQogICAgICAgICBjcmVhdGVHU1RQbGF5
QmluKCk7CkBAIC0zNDUsNyArMzQ2LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpsb2Fk
KGNvbnN0IFN0cmluZyYgdXJsKQogICAgIH0KIAogICAgIGdfb2JqZWN0X3NldChtX3BsYXlCaW4s
ICJ1cmkiLCB1cmwudXRmOCgpLmRhdGEoKSwgTlVMTCk7Ci0gICAgcGF1c2UoKTsKKworICAgIC8v
IEdTdHJlYW1lciBuZWVkcyB0byBoYXZlIHRoZSBwaXBlbGluZSBzZXQgdG8gYSBwYXVzZWQgc3Rh
dGUgdG8KKyAgICAvLyBzdGFydCBwcm92aWRpbmcgYW55dGhpbmcgdXNlZnVsLgorICAgIGdzdF9l
bGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4sIEdTVF9TVEFURV9QQVVTRUQpOwogfQogCiBib29s
IE1lZGlhUGxheWVyUHJpdmF0ZTo6Y2hhbmdlUGlwZWxpbmVTdGF0ZShHc3RTdGF0ZSBuZXdTdGF0
ZSkKQEAgLTY0NCwxMyArNjQ4LDI2IEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQbGF5
ZXJQcml2YXRlOjpidWZmZXJlZCgpIGNvbnN0CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpw
cm9jZXNzQnVmZmVyaW5nU3RhdHMoR3N0TWVzc2FnZSogbWVzc2FnZSkKIHsKLSAgICBHc3RCdWZm
ZXJpbmdNb2RlIG1vZGU7CisgICAgLy8gVGhpcyBpcyB0aGUgaW1tZWRpYXRlIGJ1ZmZlcmluZyB0
aGF0IG5lZWRzIHRvIGhhcHBlbiBzbyB3ZSBoYXZlCisgICAgLy8gZW5vdWdoIHRvIHBsYXkgcmln
aHQgbm93LgorICAgIG1fYnVmZmVyaW5nID0gdHJ1ZTsKKyAgICBjb25zdCBHc3RTdHJ1Y3R1cmUg
KnN0cnVjdHVyZSA9IGdzdF9tZXNzYWdlX2dldF9zdHJ1Y3R1cmUobWVzc2FnZSk7CisgICAgZ3N0
X3N0cnVjdHVyZV9nZXRfaW50KHN0cnVjdHVyZSwgImJ1ZmZlci1wZXJjZW50IiwgJm1fYnVmZmVy
aW5nUGVyY2VudGFnZSk7CiAKKyAgICBMT0dfVkVSQk9TRShNZWRpYSwgIltCdWZmZXJpbmddIEJ1
ZmZlcmluZzogJWQlJS4iLCBtX2J1ZmZlcmluZ1BlcmNlbnRhZ2UpOworCisgICAgR3N0QnVmZmVy
aW5nTW9kZSBtb2RlOwogICAgIGdzdF9tZXNzYWdlX3BhcnNlX2J1ZmZlcmluZ19zdGF0cyhtZXNz
YWdlLCAmbW9kZSwgMCwgMCwgMCk7Ci0gICAgaWYgKG1vZGUgIT0gR1NUX0JVRkZFUklOR19ET1dO
TE9BRCkKKyAgICBpZiAobW9kZSAhPSBHU1RfQlVGRkVSSU5HX0RPV05MT0FEKSB7CisgICAgICAg
IHVwZGF0ZVN0YXRlcygpOwogICAgICAgICByZXR1cm47CisgICAgfQogCisgICAgLy8gVGhpcyBp
cyBvbi1kaXNrIGJ1ZmZlcmluZywgdGhhdCBhbGxvd3MgdXMgdG8gZG93bmxvYWQgbXVjaCBtb3Jl
CisgICAgLy8gdGhhbiBuZWVkZWQgZm9yIHJpZ2h0IG5vdy4KICAgICBpZiAoIW1fc3RhcnRlZEJ1
ZmZlcmluZykgeworICAgICAgICBMT0dfVkVSQk9TRShNZWRpYSwgIltCdWZmZXJpbmddIFN0YXJ0
aW5nIG9uLWRpc2sgYnVmZmVyaW5nLiIpOworCiAgICAgICAgIG1fc3RhcnRlZEJ1ZmZlcmluZyA9
IHRydWU7CiAKICAgICAgICAgaWYgKG1fZmlsbFRpbWVyLmlzQWN0aXZlKCkpCkBAIC02NzksNyAr
Njk2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmZpbGxUaW1lckZpcmVkKFRpbWVyPE1l
ZGlhUGxheWVyUHJpdmF0ZT4qKQogICAgIGVsc2UKICAgICAgICAgbV9maWxsU3RhdHVzID0gMTAw
LjA7CiAKLSAgICBMT0dfVkVSQk9TRShNZWRpYSwgIkRvd25sb2FkIGJ1ZmZlciBmaWxsZWQgdXAg
dG8gJWYlJSIsIG1fZmlsbFN0YXR1cyk7CisgICAgTE9HX1ZFUkJPU0UoTWVkaWEsICJbQnVmZmVy
aW5nXSBEb3dubG9hZCBidWZmZXIgZmlsbGVkIHVwIHRvICVmJSUiLCBtX2ZpbGxTdGF0dXMpOwog
CiAgICAgaWYgKCFtX21lZGlhRHVyYXRpb24pCiAgICAgICAgIGR1cmF0aW9uQ2hhbmdlZCgpOwpA
QCAtNjg4LDcgKzcwNSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpmaWxsVGltZXJGaXJl
ZChUaW1lcjxNZWRpYVBsYXllclByaXZhdGU+KikKICAgICAvLyBhdmFpbGFibGUuIE90aGVyd2lz
ZSB3ZSBjYW4ndCBjb21wdXRlIGl0LgogICAgIGlmIChtX21lZGlhRHVyYXRpb24pIHsKICAgICAg
ICAgbV9tYXhUaW1lTG9hZGVkID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KChtX2ZpbGxTdGF0dXMgKiBt
X21lZGlhRHVyYXRpb24pIC8gMTAwLjApOwotICAgICAgICBMT0dfVkVSQk9TRShNZWRpYSwgIlVw
ZGF0ZWQgbWF4VGltZUxvYWRlZDogJWYiLCBtX21heFRpbWVMb2FkZWQpOworICAgICAgICBMT0df
VkVSQk9TRShNZWRpYSwgIltCdWZmZXJpbmddIFVwZGF0ZWQgbWF4VGltZUxvYWRlZDogJWYiLCBt
X21heFRpbWVMb2FkZWQpOwogICAgIH0KIAogICAgIGlmIChtX2ZpbGxTdGF0dXMgIT0gMTAwLjAp
IHsKQEAgLTc2OSwxMCArNzg2LDYgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmNhbmNlbExv
YWQoKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6dXBkYXRlU3RhdGVzKCkKIHsKLSAgICAv
LyBUaGVyZSBpcyBubyAoa25vd24pIHdheSB0byBnZXQgc3VjaCBsZXZlbCBvZiBpbmZvcm1hdGlv
biBhYm91dAotICAgIC8vIHRoZSBzdGF0ZSBvZiBHU3RyZWFtZXIsIHRoZXJlZm9yZSwgd2hlbiBp
biBQQVVTRUQgc3RhdGUsCi0gICAgLy8gd2UgYXJlIHN1cmUgd2UgY2FuIGRpc3BsYXkgdGhlIGZp
cnN0IGZyYW1lIGFuZCBnbyB0byBwbGF5Ci0KICAgICBpZiAoIW1fcGxheUJpbikKICAgICAgICAg
cmV0dXJuOwogCkBAIC03OTYsNDQgKzgwOSw2NCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6
dXBkYXRlU3RhdGVzKCkKIAogICAgICAgICBtX3Jlc2V0UGlwZWxpbmUgPSBzdGF0ZSA8PSBHU1Rf
U1RBVEVfUkVBRFk7CiAKLSAgICAgICAgaWYgKHN0YXRlID09IEdTVF9TVEFURV9SRUFEWSkKKyAg
ICAgICAgLy8gVHJ5IHRvIGZpZ3VyZSBvdXQgcmVhZHkgYW5kIG5ldHdvcmsgc3RhdGVzLgorICAg
ICAgICBpZiAoc3RhdGUgPT0gR1NUX1NUQVRFX1JFQURZKSB7CiAgICAgICAgICAgICBtX3JlYWR5
U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhpbmc7Ci0gICAgICAgIGVsc2UgaWYgKHN0YXRl
ID09IEdTVF9TVEFURV9QQVVTRUQpCisgICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlh
UGxheWVyOjpFbXB0eTsKKyAgICAgICAgfSBlbHNlIGlmIChtYXhUaW1lTG9hZGVkKCkgPT0gZHVy
YXRpb24oKSkgeworICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9h
ZGVkOwogICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVFbm91Z2hE
YXRhOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gY3VycmVu
dFRpbWUoKSA8IG1heFRpbWVMb2FkZWQoKSA/IE1lZGlhUGxheWVyOjpIYXZlRnV0dXJlRGF0YSA6
IE1lZGlhUGxheWVyOjpIYXZlQ3VycmVudERhdGE7CisgICAgICAgICAgICBtX25ldHdvcmtTdGF0
ZSA9IE1lZGlhUGxheWVyOjpMb2FkaW5nOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1fYnVm
ZmVyaW5nICYmIHN0YXRlICE9IEdTVF9TVEFURV9SRUFEWSkgeworICAgICAgICAgICAgbV9yZWFk
eVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVDdXJyZW50RGF0YTsKKyAgICAgICAgICAgIG1fbmV0
d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRpbmc7CisgICAgICAgIH0KIAotICAgICAgICBp
ZiAoc3RhdGUgPT0gR1NUX1NUQVRFX1BMQVlJTkcpIHsKKyAgICAgICAgLy8gTm93IGxldCdzIHRy
eSB0byBnZXQgdGhlIHN0YXRlcyBpbiBtb3JlIGRldGFpbCB1c2luZworICAgICAgICAvLyBpbmZv
cm1hdGlvbiBmcm9tIEdTdHJlYW1lciwgd2hpbGUgd2Ugc3luYyBzdGF0ZXMgd2hlcmUKKyAgICAg
ICAgLy8gbmVlZGVkLgorICAgICAgICBpZiAoc3RhdGUgPT0gR1NUX1NUQVRFX1BBVVNFRCkgewor
ICAgICAgICAgICAgaWYgKG1fYnVmZmVyaW5nICYmIG1fYnVmZmVyaW5nUGVyY2VudGFnZSA9PSAx
MDApIHsKKyAgICAgICAgICAgICAgICBtX2J1ZmZlcmluZyA9IGZhbHNlOworICAgICAgICAgICAg
ICAgIG1fYnVmZmVyaW5nUGVyY2VudGFnZSA9IDA7CisgICAgICAgICAgICAgICAgbV9yZWFkeVN0
YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVFbm91Z2hEYXRhOworCisgICAgICAgICAgICAgICAgTE9H
X1ZFUkJPU0UoTWVkaWEsICJbQnVmZmVyaW5nXSBDb21wbGV0ZS4iKTsKKworICAgICAgICAgICAg
ICAgIGlmICghbV9wYXVzZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgTE9HX1ZFUkJPU0UoTWVk
aWEsICJbQnVmZmVyaW5nXSBSZXN0YXJ0aW5nIHBsYXliYWNrLiIpOworICAgICAgICAgICAgICAg
ICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9wbGF5QmluLCBHU1RfU1RBVEVfUExBWUlORyk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmICghbV9idWZmZXJpbmcp
CisgICAgICAgICAgICAgICAgbV9wYXVzZWQgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKHN0
YXRlID09IEdTVF9TVEFURV9QTEFZSU5HKSB7CiAgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBN
ZWRpYVBsYXllcjo6SGF2ZUVub3VnaERhdGE7CiAgICAgICAgICAgICBtX3BhdXNlZCA9IGZhbHNl
OwotICAgICAgICAgICAgbV9zdGFydGVkUGxheWluZyA9IHRydWU7CisKICAgICAgICAgICAgIGlm
ICghbV9tZWRpYUR1cmF0aW9uKSB7CiAgICAgICAgICAgICAgICAgZmxvYXQgbmV3RHVyYXRpb24g
PSBkdXJhdGlvbigpOwogICAgICAgICAgICAgICAgIGlmICghaXNpbmYobmV3RHVyYXRpb24pKQog
ICAgICAgICAgICAgICAgICAgICBtX21lZGlhRHVyYXRpb24gPSBuZXdEdXJhdGlvbjsKICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1fYnVmZmVyaW5nKSB7CisgICAgICAgICAgICAg
ICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nOworICAgICAgICAgICAg
ICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRpbmc7CisKKyAgICAgICAgICAg
ICAgICBMT0dfVkVSQk9TRShNZWRpYSwgIltCdWZmZXJpbmddIFBhdXNpbmcgc3RyZWFtIGZvciBi
dWZmZXJpbmcuIik7CisKKyAgICAgICAgICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9w
bGF5QmluLCBHU1RfU1RBVEVfUEFVU0VEKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICBtX3BhdXNlZCA9IHRydWU7CiAKICAgICAgICAgLy8gSXMgb24tZGlzayBi
dWZmZXJpbmcgaW4gcHJvZ3Jlc3M/Ci0gICAgICAgIGlmIChtX2ZpbGxUaW1lci5pc0FjdGl2ZSgp
KSB7CisgICAgICAgIGlmIChtX2ZpbGxUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgbV9u
ZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGluZzsKLSAgICAgICAgICAgIC8vIEJ1ZmZl
cmluZyBoYXMganVzdCBzdGFydGVkLCB3ZSBzaG91bGQgbm93IGhhdmUgZW5vdWdoCi0gICAgICAg
ICAgICAvLyBkYXRhIHRvIHJlc3RhcnQgcGxheWJhY2sgaWYgaXQgd2FzIGludGVybmFsbHkgcGF1
c2VkIGJ5Ci0gICAgICAgICAgICAvLyBHU3RyZWFtZXIuCi0gICAgICAgICAgICBpZiAobV9wYXVz
ZWQgJiYgIW1fc3RhcnRlZFBsYXlpbmcpCi0gICAgICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0
X3N0YXRlKG1fcGxheUJpbiwgR1NUX1NUQVRFX1BMQVlJTkcpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKG1heFRpbWVMb2FkZWQoKSA9PSBkdXJhdGlvbigpKSB7Ci0gICAgICAgICAgICBtX25l
dHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkZWQ7Ci0gICAgICAgICAgICBpZiAoc3RhdGUg
PT0gR1NUX1NUQVRFX1JFQURZKQotICAgICAgICAgICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlh
UGxheWVyOjpIYXZlTm90aGluZzsKLSAgICAgICAgICAgIGVsc2UgaWYgKHN0YXRlID09IEdTVF9T
VEFURV9QQVVTRUQpCi0gICAgICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6
OkhhdmVFbm91Z2hEYXRhOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGlmIChzdGF0ZSA9
PSBHU1RfU1RBVEVfUkVBRFkpCi0gICAgICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQ
bGF5ZXI6OkhhdmVOb3RoaW5nOwotICAgICAgICAgICAgZWxzZSBpZiAobV9wYXVzZWQpCi0gICAg
ICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gY3VycmVudFRpbWUoKSA8IG1heFRpbWVMb2FkZWQo
KSA/IE1lZGlhUGxheWVyOjpIYXZlRnV0dXJlRGF0YSA6IE1lZGlhUGxheWVyOjpIYXZlQ3VycmVu
dERhdGE7CiAKICAgICAgICAgaWYgKG1fY2hhbmdpbmdSYXRlKSB7CiAgICAgICAgICAgICBtX3Bs
YXllci0+cmF0ZUNoYW5nZWQoKTsKQEAgLTg4MSwyMCArOTE0LDE2IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlOjp1cGRhdGVTdGF0ZXMoKQogICAgICAgICAgICAgbV9wYXVzZWQgPSB0cnVlOwog
ICAgICAgICAgICAgLy8gTGl2ZSBwaXBlbGluZXMgZ28gaW4gUEFVU0VEIHdpdGhvdXQgcHJlcm9s
bGluZy4KICAgICAgICAgICAgIG1faXNTdHJlYW1pbmcgPSB0cnVlOwotICAgICAgICB9IGVsc2Ug
aWYgKHN0YXRlID09IEdTVF9TVEFURV9QTEFZSU5HKSB7Ci0gICAgICAgICAgICBtX3N0YXJ0ZWRQ
bGF5aW5nID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PSBHU1RfU1RBVEVfUExB
WUlORykKICAgICAgICAgICAgIG1fcGF1c2VkID0gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAg
ICBpZiAobV9wYXVzZWQgJiYgIW1fc3RhcnRlZFBsYXlpbmcpCi0gICAgICAgICAgICBnc3RfZWxl
bWVudF9zZXRfc3RhdGUobV9wbGF5QmluLCBHU1RfU1RBVEVfUExBWUlORyk7CiAKICAgICAgICAg
aWYgKG1fc2Vla2luZykgewogICAgICAgICAgICAgc2hvdWxkVXBkYXRlQWZ0ZXJTZWVrID0gdHJ1
ZTsKICAgICAgICAgICAgIG1fc2Vla2luZyA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKG1fcGF1
c2VkKQorICAgICAgICAgICAgaWYgKCFtX3BhdXNlZCkKICAgICAgICAgICAgICAgICBnc3RfZWxl
bWVudF9zZXRfc3RhdGUobV9wbGF5QmluLCBHU1RfU1RBVEVfUExBWUlORyk7Ci0gICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIGlmICghbV9wYXVzZWQpCisgICAgICAgICAgICBnc3RfZWxlbWVudF9z
ZXRfc3RhdGUobV9wbGF5QmluLCBHU1RfU1RBVEVfUExBWUlORyk7CiAKICAgICAgICAgbV9uZXR3
b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGluZzsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDM5ZjZlNGMuLmY1ODA2NGUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC0xNDksNyArMTQ5LDYgQEAgY2xhc3MgTWVk
aWFQbGF5ZXJQcml2YXRlIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAg
ICAgICAgICAgICBib29sIG1faXNFbmRSZWFjaGVkOwogICAgICAgICAgICAgTWVkaWFQbGF5ZXI6
Ok5ldHdvcmtTdGF0ZSBtX25ldHdvcmtTdGF0ZTsKICAgICAgICAgICAgIE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKLSAgICAgICAgICAgIGJvb2wgbV9zdGFydGVkUGxheWlu
ZzsKICAgICAgICAgICAgIG11dGFibGUgYm9vbCBtX2lzU3RyZWFtaW5nOwogICAgICAgICAgICAg
SW50U2l6ZSBtX3NpemU7CiAgICAgICAgICAgICBHc3RCdWZmZXIqIG1fYnVmZmVyOwpAQCAtMTU4
LDYgKzE1Nyw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZSA6IHB1YmxpYyBNZWRpYVBsYXll
clByaXZhdGVJbnRlcmZhY2UgewogICAgICAgICAgICAgYm9vbCBtX3Jlc2V0UGlwZWxpbmU7CiAg
ICAgICAgICAgICBib29sIG1fcGF1c2VkOwogICAgICAgICAgICAgYm9vbCBtX3NlZWtpbmc7Cisg
ICAgICAgICAgICBib29sIG1fYnVmZmVyaW5nOwogICAgICAgICAgICAgZmxvYXQgbV9wbGF5YmFj
a1JhdGU7CiAgICAgICAgICAgICBib29sIG1fZXJyb3JPY2N1cmVkOwogICAgICAgICAgICAgZ2Zs
b2F0IG1fbWVkaWFEdXJhdGlvbjsKQEAgLTE2NSw2ICsxNjUsNyBAQCBjbGFzcyBNZWRpYVBsYXll
clByaXZhdGUgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlIHsKICAgICAgICAg
ICAgIFRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZT4gbV9maWxsVGltZXI7CiAgICAgICAgICAgICBm
bG9hdCBtX21heFRpbWVMb2FkZWQ7CiAgICAgICAgICAgICBnZG91YmxlIG1fZmlsbFN0YXR1czsK
KyAgICAgICAgICAgIGludCBtX2J1ZmZlcmluZ1BlcmNlbnRhZ2U7CiAgICAgfTsKIH0KIAotLSAK
MS43LjAKCg==
</data>
<flag name="commit-queue"
          id="33317"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50317</attachid>
            <date>2010-03-09 09:41:45 -0800</date>
            <delta_ts>2010-03-09 10:36:18 -0800</delta_ts>
            <desc>set GStreamer state directly instead of using pause()</desc>
            <filename>0001-Do-not-call-pause-but-set-the-GStreamer-state-direct.patch</filename>
            <type>text/plain</type>
            <size>2011</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">RnJvbSBlNDZjMWJjZTJlZGZkN2YxZmJkYjViMGJlMjRkZGYwNTdmMjQ1ZWVkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+
CkRhdGU6IFR1ZSwgOSBNYXIgMjAxMCAxNDoyNjo0MyAtMDMwMApTdWJqZWN0OiBbUEFUQ0ggMS8y
XSBEbyBub3QgY2FsbCBwYXVzZSgpLCBidXQgc2V0IHRoZSBHU3RyZWFtZXIgc3RhdGUgZGlyZWN0
bHkKCi0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDE1ICsrKysrKysrKysrKysrKwogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXIuY3BwICAgICAgfCAgICA1ICsrKystCiAyIGZpbGVzIGNoYW5nZWQsIDE5IGlu
c2VydGlvbnMoKyksIDEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4YmNmZWJhLi40NTgyMDI2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
IEBACisyMDEwLTAzLTA5ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFA
Y29sbGFib3JhLmNvLnVrPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFtHU3RyZWFtZXJdIEJ1ZmZlcmluZyBsb2dpYyBpcyBub3QgY29ycmVjdCwgYW5k
IGRvZXMgbm90IHdvcmsgdmVyeSB3ZWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNTcwNgorCisgICAgICAgIERvIG5vdCBjYWxsIHBhdXNlKCksIGJ1
dCBzZXQgdGhlIEdTdHJlYW1lciBzdGF0ZSBkaXJlY3RseS4gVGhpcyBpcworICAgICAgICBqdXN0
IGEgR1N0cmVhbWVyIGltcGxlbWVudGF0aW9uIGRldGFpbCwgYW5kIHRoaXMgd2lsbCBhdm9pZCBo
YXZpbmcKKyAgICAgICAgc2lkZSBlZmZlY3RzIGluIGNhc2Ugd2UgY2hhbmdlIHRoZSBwYXVzZSBp
bXBsZW1lbnRhdGlvbiBpbiB0aGUKKyAgICAgICAgZnV0dXJlLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGU6OmxvYWQpOgorCiAyMDEwLTAzLTA5
ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cAppbmRleCA1OTczMWI5Li5hYTIwZmE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAKQEAgLTM0NCw3ICszNDQsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6Omxv
YWQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgfQogCiAgICAgZ19vYmplY3Rfc2V0KG1fcGxheUJp
biwgInVyaSIsIHVybC51dGY4KCkuZGF0YSgpLCBOVUxMKTsKLSAgICBwYXVzZSgpOworCisgICAg
Ly8gR1N0cmVhbWVyIG5lZWRzIHRvIGhhdmUgdGhlIHBpcGVsaW5lIHNldCB0byBhIHBhdXNlZCBz
dGF0ZSB0bworICAgIC8vIHN0YXJ0IHByb3ZpZGluZyBhbnl0aGluZyB1c2VmdWwuCisgICAgZ3N0
X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGxheUJpbiwgR1NUX1NUQVRFX1BBVVNFRCk7CiB9CiAKIGJv
b2wgTWVkaWFQbGF5ZXJQcml2YXRlOjpjaGFuZ2VQaXBlbGluZVN0YXRlKEdzdFN0YXRlIG5ld1N0
YXRlKQotLSAKMS43LjAKCg==
</data>
<flag name="commit-queue"
          id="33424"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50318</attachid>
            <date>2010-03-09 09:42:48 -0800</date>
            <delta_ts>2010-03-09 10:44:13 -0800</delta_ts>
            <desc>handle all cases of buffering</desc>
            <filename>0002-Handle-all-cases-of-buffering.patch</filename>
            <type>text/plain</type>
            <size>11012</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">RnJvbSBmOTAyYTgzMjM4NzRmZmRiODM0Y2JmYzNiMDg3NDMxZTljY2RmYjk4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+
CkRhdGU6IFR1ZSwgOSBNYXIgMjAxMCAxNDo0MDo1MSAtMDMwMApTdWJqZWN0OiBbUEFUQ0ggMi8y
XSBIYW5kbGUgYWxsIGNhc2VzIG9mIGJ1ZmZlcmluZwoKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjIgKysrKwogLi4uL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwICAgICAgfCAgMTA2ICsrKysrKysrKysr
Ky0tLS0tLS0tCiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oICAg
ICAgICB8ICAgIDMgKy0KIDMgZmlsZXMgY2hhbmdlZCwgOTAgaW5zZXJ0aW9ucygrKSwgNDEgZGVs
ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA0NTgyMDI2Li40Y2IzMTA4IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtNSw2ICs1LDI4IEBACiAgICAgICAgIFtHU3Ry
ZWFtZXJdIEJ1ZmZlcmluZyBsb2dpYyBpcyBub3QgY29ycmVjdCwgYW5kIGRvZXMgbm90IHdvcmsg
dmVyeSB3ZWxsCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNTcwNgogCisgICAgICAgIEZpeCBidWZmZXJpbmcgdG8gbWF0Y2ggR1N0cmVhbWVyIGV4cGVj
dGFuY2llcyByZWdhcmRpbmcgdGhlCisgICAgICAgIHBpcGVsaW5lIHN0YXRlLCBzbyB0aGF0IHZp
ZGVvcyB3aGljaCByZWFsbHkgbmVlZCBidWZmZXJpbmcgdG8gcGxheQorICAgICAgICBjb3JyZWN0
bHkgYWxzbyB3b3JrLCB3aGlsZSBtYWludGFpbmluZyB0aGUgY29udmVuaWVuY2Ugb2YKKyAgICAg
ICAgb24tZGlzay1idWZmZXJpbmcuIFRoaXMgcmVxdWlyZWQgYSBiaXQgb2Ygc2h1ZmZsaW5nIG9m
IHN0YXRlCisgICAgICAgIGNoYW5nZSBoYW5kbGluZy4KKworICAgICAgICBObyBiZWhhdmlvdXIg
Y2hhbmdlIGV4cGVjdGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGU6Ok1lZGlhUGxheWVyUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGU6OnByb2Nlc3NCdWZmZXJpbmdTdGF0cyk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGU6OmZpbGxUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6dXBkYXRlU3RhdGVzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisKKzIw
MTAtMDMtMDkgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJv
cmEuY28udWs+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgW0dTdHJlYW1lcl0gQnVmZmVyaW5nIGxvZ2ljIGlzIG5vdCBjb3JyZWN0LCBhbmQgZG9lcyBu
b3Qgd29yayB2ZXJ5IHdlbGwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM1NzA2CisKICAgICAgICAgRG8gbm90IGNhbGwgcGF1c2UoKSwgYnV0IHNldCB0
aGUgR1N0cmVhbWVyIHN0YXRlIGRpcmVjdGx5LiBUaGlzIGlzCiAgICAgICAgIGp1c3QgYSBHU3Ry
ZWFtZXIgaW1wbGVtZW50YXRpb24gZGV0YWlsLCBhbmQgdGhpcyB3aWxsIGF2b2lkIGhhdmluZwog
ICAgICAgICBzaWRlIGVmZmVjdHMgaW4gY2FzZSB3ZSBjaGFuZ2UgdGhlIHBhdXNlIGltcGxlbWVu
dGF0aW9uIGluIHRoZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
YWEyMGZhNS4uYjQ2ZTI5YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
CkBAIC0yNzYsNyArMjc2LDYgQEAgTWVkaWFQbGF5ZXJQcml2YXRlOjpNZWRpYVBsYXllclByaXZh
dGUoTWVkaWFQbGF5ZXIqIHBsYXllcikKICAgICAsIG1fZW5kVGltZShudW1lcmljX2xpbWl0czxm
bG9hdD46OmluZmluaXR5KCkpCiAgICAgLCBtX25ldHdvcmtTdGF0ZShNZWRpYVBsYXllcjo6RW1w
dHkpCiAgICAgLCBtX3JlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nKQotICAgICwg
bV9zdGFydGVkUGxheWluZyhmYWxzZSkKICAgICAsIG1faXNTdHJlYW1pbmcoZmFsc2UpCiAgICAg
LCBtX3NpemUoSW50U2l6ZSgpKQogICAgICwgbV9idWZmZXIoMCkKQEAgLTI4NSwxMiArMjg0LDE0
IEBAIE1lZGlhUGxheWVyUHJpdmF0ZTo6TWVkaWFQbGF5ZXJQcml2YXRlKE1lZGlhUGxheWVyKiBw
bGF5ZXIpCiAgICAgLCBtX3Jlc2V0UGlwZWxpbmUoZmFsc2UpCiAgICAgLCBtX3BhdXNlZCh0cnVl
KQogICAgICwgbV9zZWVraW5nKGZhbHNlKQorICAgICwgbV9idWZmZXJpbmcoZmFsc2UpCiAgICAg
LCBtX3BsYXliYWNrUmF0ZSgxKQogICAgICwgbV9lcnJvck9jY3VyZWQoZmFsc2UpCiAgICAgLCBt
X21lZGlhRHVyYXRpb24oMCkKICAgICAsIG1fc3RhcnRlZEJ1ZmZlcmluZyhmYWxzZSkKICAgICAs
IG1fZmlsbFRpbWVyKHRoaXMsICZNZWRpYVBsYXllclByaXZhdGU6OmZpbGxUaW1lckZpcmVkKQog
ICAgICwgbV9tYXhUaW1lTG9hZGVkKDApCisgICAgLCBtX2J1ZmZlcmluZ1BlcmNlbnRhZ2UoMCkK
IHsKICAgICBpZiAoZG9Hc3RJbml0KCkpCiAgICAgICAgIGNyZWF0ZUdTVFBsYXlCaW4oKTsKQEAg
LTY0NiwxMyArNjQ3LDI2IEBAIFBhc3NSZWZQdHI8VGltZVJhbmdlcz4gTWVkaWFQbGF5ZXJQcml2
YXRlOjpidWZmZXJlZCgpIGNvbnN0CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjpwcm9jZXNz
QnVmZmVyaW5nU3RhdHMoR3N0TWVzc2FnZSogbWVzc2FnZSkKIHsKLSAgICBHc3RCdWZmZXJpbmdN
b2RlIG1vZGU7CisgICAgLy8gVGhpcyBpcyB0aGUgaW1tZWRpYXRlIGJ1ZmZlcmluZyB0aGF0IG5l
ZWRzIHRvIGhhcHBlbiBzbyB3ZSBoYXZlCisgICAgLy8gZW5vdWdoIHRvIHBsYXkgcmlnaHQgbm93
LgorICAgIG1fYnVmZmVyaW5nID0gdHJ1ZTsKKyAgICBjb25zdCBHc3RTdHJ1Y3R1cmUgKnN0cnVj
dHVyZSA9IGdzdF9tZXNzYWdlX2dldF9zdHJ1Y3R1cmUobWVzc2FnZSk7CisgICAgZ3N0X3N0cnVj
dHVyZV9nZXRfaW50KHN0cnVjdHVyZSwgImJ1ZmZlci1wZXJjZW50IiwgJm1fYnVmZmVyaW5nUGVy
Y2VudGFnZSk7CisKKyAgICBMT0dfVkVSQk9TRShNZWRpYSwgIltCdWZmZXJpbmddIEJ1ZmZlcmlu
ZzogJWQlJS4iLCBtX2J1ZmZlcmluZ1BlcmNlbnRhZ2UpOwogCisgICAgR3N0QnVmZmVyaW5nTW9k
ZSBtb2RlOwogICAgIGdzdF9tZXNzYWdlX3BhcnNlX2J1ZmZlcmluZ19zdGF0cyhtZXNzYWdlLCAm
bW9kZSwgMCwgMCwgMCk7Ci0gICAgaWYgKG1vZGUgIT0gR1NUX0JVRkZFUklOR19ET1dOTE9BRCkK
KyAgICBpZiAobW9kZSAhPSBHU1RfQlVGRkVSSU5HX0RPV05MT0FEKSB7CisgICAgICAgIHVwZGF0
ZVN0YXRlcygpOwogICAgICAgICByZXR1cm47CisgICAgfQogCisgICAgLy8gVGhpcyBpcyBvbi1k
aXNrIGJ1ZmZlcmluZywgdGhhdCBhbGxvd3MgdXMgdG8gZG93bmxvYWQgbXVjaCBtb3JlCisgICAg
Ly8gdGhhbiBuZWVkZWQgZm9yIHJpZ2h0IG5vdy4KICAgICBpZiAoIW1fc3RhcnRlZEJ1ZmZlcmlu
ZykgeworICAgICAgICBMT0dfVkVSQk9TRShNZWRpYSwgIltCdWZmZXJpbmddIFN0YXJ0aW5nIG9u
LWRpc2sgYnVmZmVyaW5nLiIpOworCiAgICAgICAgIG1fc3RhcnRlZEJ1ZmZlcmluZyA9IHRydWU7
CiAKICAgICAgICAgaWYgKG1fZmlsbFRpbWVyLmlzQWN0aXZlKCkpCkBAIC02ODAsNyArNjk0LDcg
QEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGU6OmZpbGxUaW1lckZpcmVkKFRpbWVyPE1lZGlhUGxh
eWVyUHJpdmF0ZT4qKQogICAgIGlmIChzdG9wICE9IC0xKQogICAgICAgICBmaWxsU3RhdHVzID0g
MTAwLjAgKiBzdG9wIC8gR1NUX0ZPUk1BVF9QRVJDRU5UX01BWDsKIAotICAgIExPR19WRVJCT1NF
KE1lZGlhLCAiRG93bmxvYWQgYnVmZmVyIGZpbGxlZCB1cCB0byAlZiUlIiwgZmlsbFN0YXR1cyk7
CisgICAgTE9HX1ZFUkJPU0UoTWVkaWEsICJbQnVmZmVyaW5nXSBEb3dubG9hZCBidWZmZXIgZmls
bGVkIHVwIHRvICVmJSUiLCBmaWxsU3RhdHVzKTsKIAogICAgIGlmICghbV9tZWRpYUR1cmF0aW9u
KQogICAgICAgICBkdXJhdGlvbkNoYW5nZWQoKTsKQEAgLTY4OSw3ICs3MDMsNyBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZTo6ZmlsbFRpbWVyRmlyZWQoVGltZXI8TWVkaWFQbGF5ZXJQcml2YXRl
PiopCiAgICAgLy8gYXZhaWxhYmxlLiBPdGhlcndpc2Ugd2UgY2FuJ3QgY29tcHV0ZSBpdC4KICAg
ICBpZiAobV9tZWRpYUR1cmF0aW9uKSB7CiAgICAgICAgIG1fbWF4VGltZUxvYWRlZCA9IHN0YXRp
Y19jYXN0PGZsb2F0PigoZmlsbFN0YXR1cyAqIG1fbWVkaWFEdXJhdGlvbikgLyAxMDAuMCk7Ci0g
ICAgICAgIExPR19WRVJCT1NFKE1lZGlhLCAiVXBkYXRlZCBtYXhUaW1lTG9hZGVkOiAlZiIsIG1f
bWF4VGltZUxvYWRlZCk7CisgICAgICAgIExPR19WRVJCT1NFKE1lZGlhLCAiW0J1ZmZlcmluZ10g
VXBkYXRlZCBtYXhUaW1lTG9hZGVkOiAlZiIsIG1fbWF4VGltZUxvYWRlZCk7CiAgICAgfQogCiAg
ICAgaWYgKGZpbGxTdGF0dXMgIT0gMTAwLjApIHsKQEAgLTc3MCwxMCArNzg0LDYgQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGU6OmNhbmNlbExvYWQoKQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZTo6dXBkYXRlU3RhdGVzKCkKIHsKLSAgICAvLyBUaGVyZSBpcyBubyAoa25vd24pIHdheSB0byBn
ZXQgc3VjaCBsZXZlbCBvZiBpbmZvcm1hdGlvbiBhYm91dAotICAgIC8vIHRoZSBzdGF0ZSBvZiBH
U3RyZWFtZXIsIHRoZXJlZm9yZSwgd2hlbiBpbiBQQVVTRUQgc3RhdGUsCi0gICAgLy8gd2UgYXJl
IHN1cmUgd2UgY2FuIGRpc3BsYXkgdGhlIGZpcnN0IGZyYW1lIGFuZCBnbyB0byBwbGF5Ci0KICAg
ICBpZiAoIW1fcGxheUJpbikKICAgICAgICAgcmV0dXJuOwogCkBAIC03OTcsNDQgKzgwNyw2NCBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6dXBkYXRlU3RhdGVzKCkKIAogICAgICAgICBtX3Jl
c2V0UGlwZWxpbmUgPSBzdGF0ZSA8PSBHU1RfU1RBVEVfUkVBRFk7CiAKLSAgICAgICAgaWYgKHN0
YXRlID09IEdTVF9TVEFURV9SRUFEWSkKKyAgICAgICAgLy8gVHJ5IHRvIGZpZ3VyZSBvdXQgcmVh
ZHkgYW5kIG5ldHdvcmsgc3RhdGVzLgorICAgICAgICBpZiAoc3RhdGUgPT0gR1NUX1NUQVRFX1JF
QURZKSB7CiAgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZU5vdGhp
bmc7Ci0gICAgICAgIGVsc2UgaWYgKHN0YXRlID09IEdTVF9TVEFURV9QQVVTRUQpCisgICAgICAg
ICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpFbXB0eTsKKyAgICAgICAgfSBlbHNl
IGlmIChtYXhUaW1lTG9hZGVkKCkgPT0gZHVyYXRpb24oKSkgeworICAgICAgICAgICAgbV9uZXR3
b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGVkOwogICAgICAgICAgICAgbV9yZWFkeVN0YXRl
ID0gTWVkaWFQbGF5ZXI6OkhhdmVFbm91Z2hEYXRhOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgbV9yZWFkeVN0YXRlID0gY3VycmVudFRpbWUoKSA8IG1heFRpbWVMb2FkZWQoKSA/IE1l
ZGlhUGxheWVyOjpIYXZlRnV0dXJlRGF0YSA6IE1lZGlhUGxheWVyOjpIYXZlQ3VycmVudERhdGE7
CisgICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2FkaW5nOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKG1fYnVmZmVyaW5nICYmIHN0YXRlICE9IEdTVF9TVEFURV9S
RUFEWSkgeworICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVDdXJy
ZW50RGF0YTsKKyAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRp
bmc7CisgICAgICAgIH0KKworICAgICAgICAvLyBOb3cgbGV0J3MgdHJ5IHRvIGdldCB0aGUgc3Rh
dGVzIGluIG1vcmUgZGV0YWlsIHVzaW5nCisgICAgICAgIC8vIGluZm9ybWF0aW9uIGZyb20gR1N0
cmVhbWVyLCB3aGlsZSB3ZSBzeW5jIHN0YXRlcyB3aGVyZQorICAgICAgICAvLyBuZWVkZWQuCisg
ICAgICAgIGlmIChzdGF0ZSA9PSBHU1RfU1RBVEVfUEFVU0VEKSB7CisgICAgICAgICAgICBpZiAo
bV9idWZmZXJpbmcgJiYgbV9idWZmZXJpbmdQZXJjZW50YWdlID09IDEwMCkgeworICAgICAgICAg
ICAgICAgIG1fYnVmZmVyaW5nID0gZmFsc2U7CisgICAgICAgICAgICAgICAgbV9idWZmZXJpbmdQ
ZXJjZW50YWdlID0gMDsKKyAgICAgICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXll
cjo6SGF2ZUVub3VnaERhdGE7CisKKyAgICAgICAgICAgICAgICBMT0dfVkVSQk9TRShNZWRpYSwg
IltCdWZmZXJpbmddIENvbXBsZXRlLiIpOwogCi0gICAgICAgIGlmIChzdGF0ZSA9PSBHU1RfU1RB
VEVfUExBWUlORykgeworICAgICAgICAgICAgICAgIGlmICghbV9wYXVzZWQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgTE9HX1ZFUkJPU0UoTWVkaWEsICJbQnVmZmVyaW5nXSBSZXN0YXJ0aW5nIHBs
YXliYWNrLiIpOworICAgICAgICAgICAgICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9w
bGF5QmluLCBHU1RfU1RBVEVfUExBWUlORyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSBlbHNlIGlmICghbV9idWZmZXJpbmcpCisgICAgICAgICAgICAgICAgbV9wYXVzZWQgPSB0
cnVlOworICAgICAgICB9IGVsc2UgaWYgKHN0YXRlID09IEdTVF9TVEFURV9QTEFZSU5HKSB7CiAg
ICAgICAgICAgICBtX3JlYWR5U3RhdGUgPSBNZWRpYVBsYXllcjo6SGF2ZUVub3VnaERhdGE7CiAg
ICAgICAgICAgICBtX3BhdXNlZCA9IGZhbHNlOwotICAgICAgICAgICAgbV9zdGFydGVkUGxheWlu
ZyA9IHRydWU7CisKICAgICAgICAgICAgIGlmICghbV9tZWRpYUR1cmF0aW9uKSB7CiAgICAgICAg
ICAgICAgICAgZmxvYXQgbmV3RHVyYXRpb24gPSBkdXJhdGlvbigpOwogICAgICAgICAgICAgICAg
IGlmICghaXNpbmYobmV3RHVyYXRpb24pKQogICAgICAgICAgICAgICAgICAgICBtX21lZGlhRHVy
YXRpb24gPSBuZXdEdXJhdGlvbjsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1f
YnVmZmVyaW5nKSB7CisgICAgICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6
OkhhdmVOb3RoaW5nOworICAgICAgICAgICAgICAgIG1fbmV0d29ya1N0YXRlID0gTWVkaWFQbGF5
ZXI6OkxvYWRpbmc7CisKKyAgICAgICAgICAgICAgICBMT0dfVkVSQk9TRShNZWRpYSwgIltCdWZm
ZXJpbmddIFBhdXNpbmcgc3RyZWFtIGZvciBidWZmZXJpbmcuIik7CisKKyAgICAgICAgICAgICAg
ICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9wbGF5QmluLCBHU1RfU1RBVEVfUEFVU0VEKTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX3BhdXNlZCA9IHRydWU7
CiAKICAgICAgICAgLy8gSXMgb24tZGlzayBidWZmZXJpbmcgaW4gcHJvZ3Jlc3M/Ci0gICAgICAg
IGlmIChtX2ZpbGxUaW1lci5pc0FjdGl2ZSgpKSB7CisgICAgICAgIGlmIChtX2ZpbGxUaW1lci5p
c0FjdGl2ZSgpKQogICAgICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9h
ZGluZzsKLSAgICAgICAgICAgIC8vIEJ1ZmZlcmluZyBoYXMganVzdCBzdGFydGVkLCB3ZSBzaG91
bGQgbm93IGhhdmUgZW5vdWdoCi0gICAgICAgICAgICAvLyBkYXRhIHRvIHJlc3RhcnQgcGxheWJh
Y2sgaWYgaXQgd2FzIGludGVybmFsbHkgcGF1c2VkIGJ5Ci0gICAgICAgICAgICAvLyBHU3RyZWFt
ZXIuCi0gICAgICAgICAgICBpZiAobV9wYXVzZWQgJiYgIW1fc3RhcnRlZFBsYXlpbmcpCi0gICAg
ICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlKG1fcGxheUJpbiwgR1NUX1NUQVRFX1BM
QVlJTkcpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1heFRpbWVMb2FkZWQoKSA9PSBkdXJh
dGlvbigpKSB7Ci0gICAgICAgICAgICBtX25ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpMb2Fk
ZWQ7Ci0gICAgICAgICAgICBpZiAoc3RhdGUgPT0gR1NUX1NUQVRFX1JFQURZKQotICAgICAgICAg
ICAgICAgIG1fcmVhZHlTdGF0ZSA9IE1lZGlhUGxheWVyOjpIYXZlTm90aGluZzsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKHN0YXRlID09IEdTVF9TVEFURV9QQVVTRUQpCi0gICAgICAgICAgICAgICAg
bV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVFbm91Z2hEYXRhOwotICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgIGlmIChzdGF0ZSA9PSBHU1RfU1RBVEVfUkVBRFkpCi0gICAgICAgICAg
ICAgICAgbV9yZWFkeVN0YXRlID0gTWVkaWFQbGF5ZXI6OkhhdmVOb3RoaW5nOwotICAgICAgICAg
ICAgZWxzZSBpZiAobV9wYXVzZWQpCi0gICAgICAgICAgICAgICAgbV9yZWFkeVN0YXRlID0gY3Vy
cmVudFRpbWUoKSA8IG1heFRpbWVMb2FkZWQoKSA/IE1lZGlhUGxheWVyOjpIYXZlRnV0dXJlRGF0
YSA6IE1lZGlhUGxheWVyOjpIYXZlQ3VycmVudERhdGE7CiAKICAgICAgICAgaWYgKG1fY2hhbmdp
bmdSYXRlKSB7CiAgICAgICAgICAgICBtX3BsYXllci0+cmF0ZUNoYW5nZWQoKTsKQEAgLTg4Miwy
MCArOTEyLDE2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlOjp1cGRhdGVTdGF0ZXMoKQogICAg
ICAgICAgICAgbV9wYXVzZWQgPSB0cnVlOwogICAgICAgICAgICAgLy8gTGl2ZSBwaXBlbGluZXMg
Z28gaW4gUEFVU0VEIHdpdGhvdXQgcHJlcm9sbGluZy4KICAgICAgICAgICAgIG1faXNTdHJlYW1p
bmcgPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKHN0YXRlID09IEdTVF9TVEFURV9QTEFZSU5H
KSB7Ci0gICAgICAgICAgICBtX3N0YXJ0ZWRQbGF5aW5nID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNl
IGlmIChzdGF0ZSA9PSBHU1RfU1RBVEVfUExBWUlORykKICAgICAgICAgICAgIG1fcGF1c2VkID0g
ZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobV9wYXVzZWQgJiYgIW1fc3RhcnRlZFBs
YXlpbmcpCi0gICAgICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9wbGF5QmluLCBHU1Rf
U1RBVEVfUExBWUlORyk7CiAKICAgICAgICAgaWYgKG1fc2Vla2luZykgewogICAgICAgICAgICAg
c2hvdWxkVXBkYXRlQWZ0ZXJTZWVrID0gdHJ1ZTsKICAgICAgICAgICAgIG1fc2Vla2luZyA9IGZh
bHNlOwotICAgICAgICAgICAgaWYgKG1fcGF1c2VkKQorICAgICAgICAgICAgaWYgKCFtX3BhdXNl
ZCkKICAgICAgICAgICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9wbGF5QmluLCBHU1Rf
U1RBVEVfUExBWUlORyk7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICghbV9wYXVzZWQp
CisgICAgICAgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUobV9wbGF5QmluLCBHU1RfU1RBVEVf
UExBWUlORyk7CiAKICAgICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGlu
ZzsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaCBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4
IDA3M2E0NWQuLjZlZjlhZDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCkBA
IC0xNDksNyArMTQ5LDYgQEAgY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlIDogcHVibGljIE1lZGlh
UGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAgICAgICAgICAgICBib29sIG1faXNFbmRSZWFjaGVk
OwogICAgICAgICAgICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBtX25ldHdvcmtTdGF0ZTsK
ICAgICAgICAgICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKLSAgICAg
ICAgICAgIGJvb2wgbV9zdGFydGVkUGxheWluZzsKICAgICAgICAgICAgIG11dGFibGUgYm9vbCBt
X2lzU3RyZWFtaW5nOwogICAgICAgICAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgICAgICAgICBH
c3RCdWZmZXIqIG1fYnVmZmVyOwpAQCAtMTU4LDEyICsxNTcsMTQgQEAgY2xhc3MgTWVkaWFQbGF5
ZXJQcml2YXRlIDogcHVibGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSB7CiAgICAgICAg
ICAgICBib29sIG1fcmVzZXRQaXBlbGluZTsKICAgICAgICAgICAgIGJvb2wgbV9wYXVzZWQ7CiAg
ICAgICAgICAgICBib29sIG1fc2Vla2luZzsKKyAgICAgICAgICAgIGJvb2wgbV9idWZmZXJpbmc7
CiAgICAgICAgICAgICBmbG9hdCBtX3BsYXliYWNrUmF0ZTsKICAgICAgICAgICAgIGJvb2wgbV9l
cnJvck9jY3VyZWQ7CiAgICAgICAgICAgICBmbG9hdCBtX21lZGlhRHVyYXRpb247CiAgICAgICAg
ICAgICBib29sIG1fc3RhcnRlZEJ1ZmZlcmluZzsKICAgICAgICAgICAgIFRpbWVyPE1lZGlhUGxh
eWVyUHJpdmF0ZT4gbV9maWxsVGltZXI7CiAgICAgICAgICAgICBmbG9hdCBtX21heFRpbWVMb2Fk
ZWQ7CisgICAgICAgICAgICBpbnQgbV9idWZmZXJpbmdQZXJjZW50YWdlOwogICAgIH07CiB9CiAK
LS0gCjEuNy4wCgo=
</data>
<flag name="commit-queue"
          id="33426"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>