<?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>82100</bug_id>
          
          <creation_ts>2012-03-23 16:08:32 -0700</creation_ts>
          <short_desc>[WebSocket]Reserved bits test case should cover both extension and no-extension scenarios</short_desc>
          <delta_ts>2012-04-01 19:53:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>79666</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Li Yin">li.yin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bashi</cc>
    
    <cc>benjamin</cc>
    
    <cc>kadam</cc>
    
    <cc>ossy</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>586841</commentid>
    <comment_count>0</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-23 16:08:32 -0700</bug_when>
    <thetext>Maybe the test case should be redesigned, it had better cover both no-extension and extension scenarios.

extension bit1 bit2 bit3  covered
   yes     0    1    0      yes
   yes     0    0    1      yes
   no      1    0    0      no
   no      0    1    0      no
   no      0    0    1      no

The current test case only covered the 1st and 2nd.
But the 3rd, 4th and 5th were not covered. 

What&apos;s your opinion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586860</commentid>
    <comment_count>1</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-23 16:50:35 -0700</bug_when>
    <thetext>Hi yutak, bashi
   Do you think it is necessary to do that?
   Could you give some comments?
   Thanks in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586893</commentid>
    <comment_count>2</comment_count>
      <attachid>133594</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-23 17:26:45 -0700</bug_when>
    <thetext>Created attachment 133594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587520</commentid>
    <comment_count>3</comment_count>
      <attachid>133594</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-26 01:01:29 -0700</bug_when>
    <thetext>Comment on attachment 133594
Patch

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

&gt; LayoutTests/ChangeLog:5
&gt; +

Please add description

&gt; LayoutTests/http/tests/websocket/tests/hybi/reserved-bits.html:17
&gt; +var bit_extension = [&quot;1_0&quot;, &quot;2_0&quot;, &quot;3_0&quot;, &quot;2_1&quot;, &quot;3_1&quot;];

They are not descriptive. Using query string like &quot;compressed=true&amp;bit_number=1&quot; would be better.

&gt; LayoutTests/http/tests/websocket/tests/hybi/reserved-bits_wsh.py:19
&gt; +        request.ws_extension_processors = [] # using no extension response

This will cause unexpected behavior if another extension is added in the future.

&gt; LayoutTests/http/tests/websocket/tests/hybi/reserved-bits_wsh.py:20
&gt; +    else:

You can remove else clause here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587655</commentid>
    <comment_count>4</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-26 06:10:15 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 133594 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=133594&amp;action=review
&gt; 
&gt; &gt; LayoutTests/ChangeLog:5
&gt; &gt; +
&gt; 
&gt; Please add description
&gt; 
&gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/reserved-bits.html:17
&gt; &gt; +var bit_extension = [&quot;1_0&quot;, &quot;2_0&quot;, &quot;3_0&quot;, &quot;2_1&quot;, &quot;3_1&quot;];
&gt; 
&gt; They are not descriptive. Using query string like &quot;compressed=true&amp;bit_number=1&quot; would be better.
&gt; 
&gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/reserved-bits_wsh.py:19
&gt; &gt; +        request.ws_extension_processors = [] # using no extension response
&gt; 
&gt; This will cause unexpected behavior if another extension is added in the future.
If another extension is added, I think the mod_pywebsocket will be updated to support it, meanwhile, many related test case will be required to update.
In addition, the test case echo-with-no-extension_wsh.py also used that statement.

&gt; 
&gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/reserved-bits_wsh.py:20
&gt; &gt; +    else:
&gt; 
&gt; You can remove else clause here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587658</commentid>
    <comment_count>5</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-26 06:22:59 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 133594 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=133594&amp;action=review
&gt; 
&gt; &gt; LayoutTests/ChangeLog:5
&gt; &gt; +
&gt; 
&gt; Please add description
&gt; 
&gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/reserved-bits.html:17
&gt; &gt; +var bit_extension = [&quot;1_0&quot;, &quot;2_0&quot;, &quot;3_0&quot;, &quot;2_1&quot;, &quot;3_1&quot;];
&gt; 
&gt; They are not descriptive. Using query string like &quot;compressed=true&amp;bit_number=1&quot; would be better.
Good point, thanks.
&gt; 
&gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/reserved-bits_wsh.py:19
&gt; &gt; +        request.ws_extension_processors = [] # using no extension response
&gt; 
&gt; This will cause unexpected behavior if another extension is added in the future.
&gt; 
&gt; &gt; LayoutTests/http/tests/websocket/tests/hybi/reserved-bits_wsh.py:20
&gt; &gt; +    else:
&gt; 
&gt; You can remove else clause here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587661</commentid>
    <comment_count>6</comment_count>
      <attachid>133791</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-26 06:26:08 -0700</bug_when>
    <thetext>Created attachment 133791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587701</commentid>
    <comment_count>7</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-26 07:13:01 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; If another extension is added, I think the mod_pywebsocket will be updated to support it, meanwhile, many related test case will be required to update.
&gt; In addition, the test case echo-with-no-extension_wsh.py also used that statement.

It would be true, but it&apos;s not a justification for adding such dependency. We should avoid adding unnecessary dependency like this. Maybe calling disable_outgoing_compression() (see deflate-frame_wsh.py) is enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588368</commentid>
    <comment_count>8</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-26 17:37:09 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #4)
&gt; &gt; If another extension is added, I think the mod_pywebsocket will be updated to support it, meanwhile, many related test case will be required to update.
&gt; &gt; In addition, the test case echo-with-no-extension_wsh.py also used that statement.
&gt; 
&gt; It would be true, but it&apos;s not a justification for adding such dependency. We should avoid adding unnecessary dependency like this. Maybe calling disable_outgoing_compression() (see deflate-frame_wsh.py) is enough.

This test case needs two scenarios, extension and no-extension.
disable_outgoing_compression() function just used uncompressed frame to transfer data, but it still had negotiated extension. This is not expected.
And request.ws_extension_processors = [] specified no extension, not only compress extension, but also all the extensions, even if another extension will be added in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588380</commentid>
    <comment_count>9</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-26 17:46:07 -0700</bug_when>
    <thetext>From the RFC6455
RSV1, RSV2, RSV3:
MUST be 0 unless an extension is negotiated that defines meanings
for non-zero values.  If a nonzero value is received and none of
the negotiated extensions defines the meaning of such a nonzero
value, the receiving endpoint MUST _Fail the WebSocket Connection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588390</commentid>
    <comment_count>10</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-26 17:54:51 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; If another extension is added, I think the mod_pywebsocket will be updated to support it, meanwhile, many related test case will be required to update.
&gt; &gt; &gt; In addition, the test case echo-with-no-extension_wsh.py also used that statement.
&gt; &gt; 
&gt; &gt; It would be true, but it&apos;s not a justification for adding such dependency. We should avoid adding unnecessary dependency like this. Maybe calling disable_outgoing_compression() (see deflate-frame_wsh.py) is enough.
&gt; 
&gt; This test case needs two scenarios, extension and no-extension.
&gt; disable_outgoing_compression() function just used uncompressed frame to transfer data, but it still had negotiated extension. This is not expected.
&gt; And request.ws_extension_processors = [] specified no extension, not only compress extension, but also all the extensions, even if another extension will be added in the future.

Ok. Please wait formal review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589756</commentid>
    <comment_count>11</comment_count>
      <attachid>133791</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-28 01:57:39 -0700</bug_when>
    <thetext>Comment on attachment 133791
Patch

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

&gt; LayoutTests/http/tests/websocket/tests/hybi/reserved-bits.html:17
&gt; +var compress_bitNumber = [&quot;compressed=false&amp;bit_number=1&quot;,

nit: We usually use camelCase for variable names.  compressedAndBitNumberParameters?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590668</commentid>
    <comment_count>12</comment_count>
      <attachid>134455</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-28 17:47:39 -0700</bug_when>
    <thetext>Created attachment 134455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590669</commentid>
    <comment_count>13</comment_count>
      <attachid>134455</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-03-28 17:49:25 -0700</bug_when>
    <thetext>Comment on attachment 134455
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590710</commentid>
    <comment_count>14</comment_count>
      <attachid>134455</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-28 18:32:44 -0700</bug_when>
    <thetext>Comment on attachment 134455
Patch

Clearing flags on attachment: 134455

Committed r112488: &lt;http://trac.webkit.org/changeset/112488&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590711</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-28 18:32:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590954</commentid>
    <comment_count>16</comment_count>
    <who name="Ádám Kallai">kadam</who>
    <bug_when>2012-03-29 01:56:53 -0700</bug_when>
    <thetext>This test fails on Qt. :( I will skip this test until It is fixed.

 * http/tests/websocket/tests/hybi/reserved-bits.html

Diff:
--- /ramdisk/qt-linux-64-release/build/layout-test-results/http/tests/websocket/tests/hybi/reserved-bits-expected.txt 
+++ /ramdisk/qt-linux-64-release/build/layout-test-results/http/tests/websocket/tests/hybi/reserved-bits-actual.txt 
@@ -1,4 +1,3 @@
-CONSOLE MESSAGE: Received unexpected compressed frame
 CONSOLE MESSAGE: One or more reserved bits are on: reserved2 = 1, reserved3 = 0
 CONSOLE MESSAGE: One or more reserved bits are on: reserved2 = 0, reserved3 = 1
 CONSOLE MESSAGE: One or more reserved bits are on: reserved2 = 1, reserved3 = 0
@@ -9,8 +8,9 @@
 
 Case compressed=false&amp;bitNumber=1: Test started.
 onopen() was called.
+FAIL onmessage() was called. (message = &quot;This message should be ignored.&quot;)
 onclose() was called.
-PASS closeEvent.wasClean is false
+FAIL closeEvent.wasClean should be false. Was true.
 Case compressed=false&amp;bitNumber=2: Test started.
 onopen() was called.
 onclose() was called.

Pretty Diff:
http://build.webkit.sed.hu/results/x86-64%20Linux%20Qt%20Release/r112505%20(35556)/http/tests/websocket/tests/hybi/reserved-bits-pretty-diff.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590969</commentid>
    <comment_count>17</comment_count>
    <who name="Ádám Kallai">kadam</who>
    <bug_when>2012-03-29 02:20:26 -0700</bug_when>
    <thetext>I skipped this test. Thanks for the investigation.

Landed in: http://trac.webkit.org/changeset/112509</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590977</commentid>
    <comment_count>18</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-03-29 02:34:07 -0700</bug_when>
    <thetext>Reopen not to forget to fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591768</commentid>
    <comment_count>19</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-29 17:53:31 -0700</bug_when>
    <thetext>Thanks for your report, I will investigate it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591787</commentid>
    <comment_count>20</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-29 18:28:48 -0700</bug_when>
    <thetext>The root cause is that USE(ZLIB) is disabled, it can&apos;t use the negotiated extension &quot;x-webkit-defalte-frame&quot;.
So the test case which used the &quot;x-webkit-defalte-frame&quot; extension should be skipped in the Layout test.
For example:
# USE(ZLIB) is disabled.
http/tests/websocket/tests/hybi/compressed-control-frame.html
http/tests/websocket/tests/hybi/deflate-frame-invalid-parameter.html
http/tests/websocket/tests/hybi/deflate-frame-parameter.html
http/tests/websocket/tests/hybi/handshake-fail-by-extensions-header.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591790</commentid>
    <comment_count>21</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-29 18:33:44 -0700</bug_when>
    <thetext>We add the &quot;reserved-bits.html&quot; in the Skipped in the QT and EFL platform, and wait for the USE(ZLIB) is enabled.
What is your opinion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591812</commentid>
    <comment_count>22</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-29 18:59:10 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; We add the &quot;reserved-bits.html&quot; in the Skipped in the QT and EFL platform, and wait for the USE(ZLIB) is enabled.
&gt; What is your opinion?

Do they have such plan? AFAIK they don&apos;t. I think you can check whether the deflate-frame extension is enabled in web_socket_do_extra_handshake() and abort the test case. You may also need to prepare QT and EFL specific expectations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591818</commentid>
    <comment_count>23</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-29 19:18:30 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; We add the &quot;reserved-bits.html&quot; in the Skipped in the QT and EFL platform, and wait for the USE(ZLIB) is enabled.
&gt; &gt; What is your opinion?
&gt; 
&gt; Do they have such plan? AFAIK they don&apos;t. I think you can check whether the deflate-frame extension is enabled in web_socket_do_extra_handshake() and abort the test case. You may also need to prepare QT and EFL specific expectations.

It sounds good. Can you provide some detailed information or example to do that?
Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591828</commentid>
    <comment_count>24</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-29 19:39:52 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; It sounds good. Can you provide some detailed information or example to do that?
&gt; Thanks.

If the port doesn&apos;t support deflate-frame extension, the opening handshake should not contain &quot;Sec-WebSocket-Extensions: deflate-frame&quot;. You can check it via request.headers_in in web_socket_do_extra_handshake(). If &quot;comressed=true&quot; and there is no deflate-frame extension header in the request, you may want to abort the handshake in similar way handshake-error_wsh.py does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592093</commentid>
    <comment_count>25</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-30 05:38:38 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #23)
&gt; &gt; It sounds good. Can you provide some detailed information or example to do that?
&gt; &gt; Thanks.
&gt; 
&gt; If the port doesn&apos;t support deflate-frame extension, the opening handshake should not contain &quot;Sec-WebSocket-Extensions: deflate-frame&quot;. You can check it via request.headers_in in web_socket_do_extra_handshake(). If &quot;comressed=true&quot; and there is no deflate-frame extension header in the request, you may want to abort the handshake in similar way handshake-error_wsh.py does.

Yeah, it can work, but it still had another issue. 
When it had no negotiated compressed extension, if browser received a frame with setting reserved-1(compressed) bit, browser should failed the connection, it makes sense, as chromium did.
But it was checked in the #if ZLIB code segment, it can&apos;t work in Qt port because of disable ZLIB. WebKit qt-port can receive the unexpected frame and can&apos;t fail the connection.

So maybe we need another obvious operation before calling m_deflateFramer.inflate function, like the reserved-2 and reserved-3 bit checking.
But if we do that, it will have a duplicate check for reserved-1 bit in these enable ZLIB WebKit ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592103</commentid>
    <comment_count>26</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-30 05:53:04 -0700</bug_when>
    <thetext>As we know, EFL had enabled the ZLIB already, only QT webkit didn&apos;t do that.
Who knows the plan of qt-webkit enabling ZLIB?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592110</commentid>
    <comment_count>27</comment_count>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-30 06:08:38 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #24)
&gt; &gt; (In reply to comment #23)
&gt; &gt; &gt; It sounds good. Can you provide some detailed information or example to do that?
&gt; &gt; &gt; Thanks.
&gt; &gt; 
&gt; &gt; If the port doesn&apos;t support deflate-frame extension, the opening handshake should not contain &quot;Sec-WebSocket-Extensions: deflate-frame&quot;. You can check it via request.headers_in in web_socket_do_extra_handshake(). If &quot;comressed=true&quot; and there is no deflate-frame extension header in the request, you may want to abort the handshake in similar way handshake-error_wsh.py does.
&gt; 
&gt; Yeah, it can work, but it still had another issue. 
&gt; When it had no negotiated compressed extension, if browser received a frame with setting reserved-1(compressed) bit, browser should failed the connection, it makes sense, as chromium did.
&gt; But it was checked in the #if ZLIB code segment, it can&apos;t work in Qt port because of disable ZLIB. WebKit qt-port can receive the unexpected frame and can&apos;t fail the connection.
&gt; 
&gt; So maybe we need another obvious operation before calling m_deflateFramer.inflate function, like the reserved-2 and reserved-3 bit checking.
&gt; But if we do that, it will have a duplicate check for reserved-1 bit in these enable ZLIB WebKit ports.

How about adding

if (frame.compress) {
    result-&gt;fail(&quot;reserved1 bit is on&quot;);
    return result.release();
}

into #else block in WebSocketDeflateFramer::inflate() ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592153</commentid>
    <comment_count>28</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-30 07:33:07 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; How about adding
&gt; 
&gt; if (frame.compress) {
&gt;     result-&gt;fail(&quot;reserved1 bit is on&quot;);
&gt;     return result.release();
&gt; }
&gt; 
&gt; into #else block in WebSocketDeflateFramer::inflate() ?

Yeah, good point, I am going to do that, thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592170</commentid>
    <comment_count>29</comment_count>
      <attachid>134817</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-30 08:08:25 -0700</bug_when>
    <thetext>Created attachment 134817
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592194</commentid>
    <comment_count>30</comment_count>
      <attachid>134817</attachid>
    <who name="Kenichi Ishibashi">bashi</who>
    <bug_when>2012-03-30 08:52:53 -0700</bug_when>
    <thetext>Comment on attachment 134817
Patch

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

LGTM. kent-san, could you take a look?

&gt; Source/WebCore/ChangeLog:8
&gt; +        Test:  http/tests/websocket/tests/hybi/reserved-bits.html 

nit: we usually put Test: line after the description.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592680</commentid>
    <comment_count>31</comment_count>
      <attachid>134918</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-03-30 17:42:24 -0700</bug_when>
    <thetext>Created attachment 134918
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593121</commentid>
    <comment_count>32</comment_count>
      <attachid>134918</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-01 18:48:14 -0700</bug_when>
    <thetext>Comment on attachment 134918
Patch

Looks ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593145</commentid>
    <comment_count>33</comment_count>
      <attachid>134918</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-01 19:53:48 -0700</bug_when>
    <thetext>Comment on attachment 134918
Patch

Clearing flags on attachment: 134918

Committed r112826: &lt;http://trac.webkit.org/changeset/112826&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593146</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-01 19:53:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133594</attachid>
            <date>2012-03-23 17:26:45 -0700</date>
            <delta_ts>2012-03-26 06:26:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82100-20120325082853.patch</filename>
            <type>text/plain</type>
            <size>5481</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjIyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWNiYzY3YTQzOGZiMmU5NThiZTA2
MDk2YWU3NWEzNGI1NDRkNGExMS4uNDQ0ZjJhNWQ5MzMzNWM0MWQ0N2EwOWNiNzYyZDQ2YzExYzNi
NjJlMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAzLTI0ICBMaSBZaW4gIDxsaS55aW5A
aW50ZWwuY29tPgorCisgICAgICAgIFtXZWJTb2NrZXRdUmVzZXJ2ZWQgYml0cyB0ZXN0IGNhc2Ug
c2hvdWxkIGNvdmVyIGJvdGggZXh0ZW5zaW9uIGFuZCBuby1leHRlbnNpb24gc2NlbmFyaW9zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjEwMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzLWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMuaHRtbDoK
KyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHNf
d3NoLnB5OgorICAgICAgICAod2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UpOgorICAgICAg
ICAod2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKToKKwogMjAxMi0wMy0yMSAgUmFwaGFlbCBLdWJv
IGRhIENvc3RhICA8cmFrdWNvQEZyZWVCU0Qub3JnPgogCiAgICAgICAgIFtFRkxdIFVucmV2aWV3
ZWQgZ2FyZGVuaW5nOyBza2lwIGEgZmV3IHRlc3RzIHdoaWNoIGFyZSBub3QgcmVhbGx5IGJlaW5n
IHJlbmRlcmVkIGNvcnJlY3RseS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMtZXhwZWN0
ZWQudHh0CmluZGV4IDYzYThkNjE3YmY2YjllNzhkNDMwZGE5ZGI5OGExZGRmMGVkNzE1OTUuLjM4
MTJkOWQ0MGRjNzMwOWMxZjdiNmM4ZmRkYjkyNTk2YjMzNzM3MTEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9yZXNlcnZlZC1iaXRzLWV4cGVjdGVkLnR4dApAQCAtMSwxNCArMSwyOSBAQAorQ09OU09MRSBN
RVNTQUdFOiBSZWNlaXZlZCB1bmV4cGVjdGVkIGNvbXByZXNzZWQgZnJhbWUKK0NPTlNPTEUgTUVT
U0FHRTogT25lIG9yIG1vcmUgcmVzZXJ2ZWQgYml0cyBhcmUgb246IHJlc2VydmVkMiA9IDEsIHJl
c2VydmVkMyA9IDAKK0NPTlNPTEUgTUVTU0FHRTogT25lIG9yIG1vcmUgcmVzZXJ2ZWQgYml0cyBh
cmUgb246IHJlc2VydmVkMiA9IDAsIHJlc2VydmVkMyA9IDEKIENPTlNPTEUgTUVTU0FHRTogT25l
IG9yIG1vcmUgcmVzZXJ2ZWQgYml0cyBhcmUgb246IHJlc2VydmVkMiA9IDEsIHJlc2VydmVkMyA9
IDAKIENPTlNPTEUgTUVTU0FHRTogT25lIG9yIG1vcmUgcmVzZXJ2ZWQgYml0cyBhcmUgb246IHJl
c2VydmVkMiA9IDAsIHJlc2VydmVkMyA9IDEKIFRlc3Qgd2hldGhlciBXZWJTb2NrZXQgcmVqZWN0
cyBmcmFtZXMgd2hvc2UgcmVzZXJ2ZWQgYml0IGlzIG9uLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCiAKLUJpdCAyOiBUZXN0IHN0YXJ0ZWQuCitDYXNlIDFfMDogVGVzdCBzdGFydGVkLgor
b25vcGVuKCkgd2FzIGNhbGxlZC4KK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2
ZW50Lndhc0NsZWFuIGlzIGZhbHNlCitDYXNlIDJfMDogVGVzdCBzdGFydGVkLgorb25vcGVuKCkg
d2FzIGNhbGxlZC4KK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0Ns
ZWFuIGlzIGZhbHNlCitDYXNlIDNfMDogVGVzdCBzdGFydGVkLgorb25vcGVuKCkgd2FzIGNhbGxl
ZC4KK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZh
bHNlCitDYXNlIDJfMTogVGVzdCBzdGFydGVkLgogb25vcGVuKCkgd2FzIGNhbGxlZC4KIG9uY2xv
c2UoKSB3YXMgY2FsbGVkLgogUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFuIGlzIGZhbHNlCi1CaXQg
MzogVGVzdCBzdGFydGVkLgorQ2FzZSAzXzE6IFRlc3Qgc3RhcnRlZC4KIG9ub3BlbigpIHdhcyBj
YWxsZWQuCiBvbmNsb3NlKCkgd2FzIGNhbGxlZC4KIFBBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBp
cyBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9yZXNlcnZlZC1iaXRzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMuaHRtbAppbmRleCBlYzhkZDMzYTc1YmFiYTY2
NzZhMmNjYzMzNjkyZDk0M2QzMWNmNjgxLi5kYmY5MWMyYWMxZjkwNWY2ZGViOWRkYTAzNDMyMjk2
NTIzOWY4NTNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMuaHRtbApAQCAtMTMsMTUgKzEzLDE2
IEBAIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJX
ZWJLaXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiAKKy8vICIxXzEiIG11
c3Qgbm90IGJlIGluY2x1ZGVkIGluIGJpdF9leHRlbnNpb24uCit2YXIgYml0X2V4dGVuc2lvbiA9
IFsiMV8wIiwgIjJfMCIsICIzXzAiLCAiMl8xIiwgIjNfMSJdOwogdmFyIGNsb3NlRXZlbnQ7CiAK
LS8vIGJpdE51bWJlciBtdXN0IGJlIDIgb3IgMy4KLWZ1bmN0aW9uIGRvVGVzdChiaXROdW1iZXIp
CitmdW5jdGlvbiBkb1Rlc3QoY3VyVGVzdEluZGV4KQogewotICAgIHZhciB1cmwgPSAid3M6Ly9s
b2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzP2JpdD0iICsg
Yml0TnVtYmVyOworICAgIHZhciB1cmwgPSAid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQv
dGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzP2Nhc2U9IiArIGJpdF9leHRlbnNpb25bY3VyVGVzdElu
ZGV4XTsKICAgICB2YXIgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CiAKLSAgICBkZWJ1ZygiQml0
ICIgKyBiaXROdW1iZXIgKyAiOiBUZXN0IHN0YXJ0ZWQuIik7CisgICAgZGVidWcoIkNhc2UgIiAr
IGJpdF9leHRlbnNpb25bY3VyVGVzdEluZGV4XSArICI6IFRlc3Qgc3RhcnRlZC4iKTsKIAogICAg
IHdzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKICAgICB7CkBAIC0zOSwxNCArNDAsMTQgQEAgZnVuY3Rp
b24gZG9UZXN0KGJpdE51bWJlcikKICAgICAgICAgZGVidWcoIm9uY2xvc2UoKSB3YXMgY2FsbGVk
LiIpOwogICAgICAgICBjbG9zZUV2ZW50ID0gZXZlbnQ7CiAgICAgICAgIHNob3VsZEJlRmFsc2Uo
ImNsb3NlRXZlbnQud2FzQ2xlYW4iKTsKLSAgICAgICAgaWYgKGJpdE51bWJlciA9PT0gMykKKyAg
ICAgICAgaWYgKGN1clRlc3RJbmRleCA9PT0gYml0X2V4dGVuc2lvbi5sZW5ndGggLSAxKQogICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRvVGVz
dChiaXROdW1iZXIgKyAxKTsKKyAgICAgICAgICAgIGRvVGVzdChjdXJUZXN0SW5kZXggKyAxKTsK
ICAgICB9OwogfQogCi1kb1Rlc3QoMik7Citkb1Rlc3QoMCk7CiAKIDwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL3Jlc2VydmVkLWJpdHNfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzX3dzaC5weQppbmRleCA0YWQwZGZkYzU1MWIw
NjU1MTU2YTZhZTEyMDg1NTQ0ZGQzYThmZWEwLi4xMWM0M2I1NTNhNDk4YjYwMmQ3MzMwZjE2Njcx
NDk1NGI2MDY1N2QzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHNfd3NoLnB5CisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0c193c2gucHkKQEAgLTMsMTcg
KzMsMjUgQEAgZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgogZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IHN0cmVhbQogCiAKLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRz
aGFrZShyZXF1ZXN0KToKLSAgICBwYXNzCi0KK2JpdCA9IDAKIAotZGVmIHdlYl9zb2NrZXRfdHJh
bnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICBtYXRjaCA9IHJlLnNlYXJjaChyJ1w/Yml0PShcZCsp
JCcsIHJlcXVlc3Qud3NfcmVzb3VyY2UpCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hh
a2UocmVxdWVzdCk6CisgICAgbWF0Y2ggPSByZS5zZWFyY2gocidcP2Nhc2U9KFxkK19cZCspJCcs
IHJlcXVlc3Qud3NfcmVzb3VyY2UpCiAgICAgaWYgbWF0Y2ggaXMgTm9uZToKICAgICAgICAgbXNn
dXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0ZBSUw6IFF1ZXJ5IHZhbHVlIGlzIGluY29ycmVj
dCBvciBtaXNzaW5nJykKICAgICAgICAgcmV0dXJuCisgICAgCisgICAgZ2xvYmFsIGJpdAorICAg
IGJpdCwgZXh0ZW5zaW9uID0gKG1hdGNoLmdyb3VwKDEpKS5zcGxpdCgnXycsIDEpCisgICAgYml0
ID0gaW50KGJpdCkKKyAgICBleHRlbnNpb24gPSBpbnQoZXh0ZW5zaW9uKQorICAgIGlmIGV4dGVu
c2lvbiA9PSAwOgorICAgICAgICByZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzID0gW10g
IyB1c2luZyBubyBleHRlbnNpb24gcmVzcG9uc2UKKyAgICBlbHNlOgorICAgICAgICBwYXNzCisK
IAotICAgIGJpdCA9IGludChtYXRjaC5ncm91cCgxKSkKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVy
X2RhdGEocmVxdWVzdCk6CiAgICAgbWVzc2FnZSA9ICJUaGlzIG1lc3NhZ2Ugc2hvdWxkIGJlIGln
bm9yZWQuIgogICAgIGlmIGJpdCA9PSAxOgogICAgICAgICBmcmFtZSA9IHN0cmVhbS5jcmVhdGVf
aGVhZGVyKGNvbW1vbi5PUENPREVfVEVYVCwgbGVuKG1lc3NhZ2UpLCAxLCAxLCAwLCAwLCAwKSAr
IG1lc3NhZ2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133791</attachid>
            <date>2012-03-26 06:26:08 -0700</date>
            <delta_ts>2012-03-28 17:47:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82100-20120327212820.patch</filename>
            <type>text/plain</type>
            <size>5964</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMDQxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjk0YjJlYzQ5OTUyNmZiNjM4YTcz
NWZlZDU1OWIxMjQ5ZjQxZDZkNC4uN2UyMzRhMzk1YzEwZDQzMjRmNjI5Mjk2MmJlOWNjMjhkMTAy
YjFmMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTAzLTI3ICBMaSBZaW4gIDxsaS55aW5A
aW50ZWwuY29tPgorCisgICAgICAgIFtXZWJTb2NrZXRdUmVzZXJ2ZWQgYml0cyB0ZXN0IGNhc2Ug
c2hvdWxkIGNvdmVyIGJvdGggZXh0ZW5zaW9uIGFuZCBuby1leHRlbnNpb24gc2NlbmFyaW9zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjEwMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhl
IGN1cnJlbnQgcmVzZXJ2ZWQgYml0cyB0ZXN0IGNhc2Ugb25seSBzdXBwb3J0IGV4dGVuc2lvbiBj
YXNlLAorICAgICAgICBJbXByb3ZlIHRlc3QgY2FzZSB0byBjb3ZlciBib3RoIG5vLWV4dGVuc2lv
biBhbmQgZXh0ZW5zaW9uIHNjZW5hcmlvcy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzLmh0bWw6CisgICAgICAg
ICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzX3dzaC5weToK
KyAgICAgICAgKHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKToKKwogMjAxMi0wMy0yNSAg
UmFwaGFlbCBLdWJvIGRhIENvc3RhICA8cmFrdWNvQEZyZWVCU0Qub3JnPgogCiAgICAgICAgIFtF
RkxdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLiBVcGRhdGUgc29tZSB0YWJsZXMvbGF5ZXJpbmcvIGJh
c2VsaW5lcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMtZXhwZWN0ZWQudHh0CmluZGV4
IDYzYThkNjE3YmY2YjllNzhkNDMwZGE5ZGI5OGExZGRmMGVkNzE1OTUuLjE4ZjU4ZWVkYTBlNDE4
YTY5ZDdlMmM5NThhZTUzMjg0YjM1NzY0NGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1i
aXRzLWV4cGVjdGVkLnR4dApAQCAtMSwxNCArMSwyOSBAQAorQ09OU09MRSBNRVNTQUdFOiBSZWNl
aXZlZCB1bmV4cGVjdGVkIGNvbXByZXNzZWQgZnJhbWUKK0NPTlNPTEUgTUVTU0FHRTogT25lIG9y
IG1vcmUgcmVzZXJ2ZWQgYml0cyBhcmUgb246IHJlc2VydmVkMiA9IDEsIHJlc2VydmVkMyA9IDAK
K0NPTlNPTEUgTUVTU0FHRTogT25lIG9yIG1vcmUgcmVzZXJ2ZWQgYml0cyBhcmUgb246IHJlc2Vy
dmVkMiA9IDAsIHJlc2VydmVkMyA9IDEKIENPTlNPTEUgTUVTU0FHRTogT25lIG9yIG1vcmUgcmVz
ZXJ2ZWQgYml0cyBhcmUgb246IHJlc2VydmVkMiA9IDEsIHJlc2VydmVkMyA9IDAKIENPTlNPTEUg
TUVTU0FHRTogT25lIG9yIG1vcmUgcmVzZXJ2ZWQgYml0cyBhcmUgb246IHJlc2VydmVkMiA9IDAs
IHJlc2VydmVkMyA9IDEKIFRlc3Qgd2hldGhlciBXZWJTb2NrZXQgcmVqZWN0cyBmcmFtZXMgd2hv
c2UgcmVzZXJ2ZWQgYml0IGlzIG9uLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKLUJp
dCAyOiBUZXN0IHN0YXJ0ZWQuCitDYXNlIGNvbXByZXNzZWQ9ZmFsc2UmYml0X251bWJlcj0xOiBU
ZXN0IHN0YXJ0ZWQuCitvbm9wZW4oKSB3YXMgY2FsbGVkLgorb25jbG9zZSgpIHdhcyBjYWxsZWQu
CitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK0Nhc2UgY29tcHJlc3NlZD1mYWxz
ZSZiaXRfbnVtYmVyPTI6IFRlc3Qgc3RhcnRlZC4KK29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNs
b3NlKCkgd2FzIGNhbGxlZC4KK1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorQ2Fz
ZSBjb21wcmVzc2VkPWZhbHNlJmJpdF9udW1iZXI9MzogVGVzdCBzdGFydGVkLgorb25vcGVuKCkg
d2FzIGNhbGxlZC4KK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0Ns
ZWFuIGlzIGZhbHNlCitDYXNlIGNvbXByZXNzZWQ9dHJ1ZSZiaXRfbnVtYmVyPTI6IFRlc3Qgc3Rh
cnRlZC4KIG9ub3BlbigpIHdhcyBjYWxsZWQuCiBvbmNsb3NlKCkgd2FzIGNhbGxlZC4KIFBBU1Mg
Y2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQotQml0IDM6IFRlc3Qgc3RhcnRlZC4KK0Nhc2Ug
Y29tcHJlc3NlZD10cnVlJmJpdF9udW1iZXI9MzogVGVzdCBzdGFydGVkLgogb25vcGVuKCkgd2Fz
IGNhbGxlZC4KIG9uY2xvc2UoKSB3YXMgY2FsbGVkLgogUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFu
IGlzIGZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy5odG1sCmluZGV4IGVjOGRkMzNhNzViYWJh
NjY3NmEyY2NjMzM2OTJkOTQzZDMxY2Y2ODEuLjRiOGY1OTk4N2NhNGFlYzk0MjMxYWZlMDFhNWNi
OTYyMDRkNWU4NjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy5odG1sCkBAIC0xMywxNSArMTMs
MjAgQEAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwogaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5vdmVycmlkZVByZWZlcmVuY2Uo
IldlYktpdEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQiLCAwKTsKIAorLy8gImNvbXBy
ZXNzZWQ9dHJ1ZSZiaXRfbnVtYmVyPTEiIG11c3Qgbm90IGJlIGluY2x1ZGVkIGluIGNvbXByZXNz
X2JpdE51bWJlciBhcnJheS4KK3ZhciBjb21wcmVzc19iaXROdW1iZXIgPSBbImNvbXByZXNzZWQ9
ZmFsc2UmYml0X251bWJlcj0xIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXByZXNz
ZWQ9ZmFsc2UmYml0X251bWJlcj0yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXBy
ZXNzZWQ9ZmFsc2UmYml0X251bWJlcj0zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImNv
bXByZXNzZWQ9dHJ1ZSZiaXRfbnVtYmVyPTIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAi
Y29tcHJlc3NlZD10cnVlJmJpdF9udW1iZXI9MyJdOwogdmFyIGNsb3NlRXZlbnQ7CiAKLS8vIGJp
dE51bWJlciBtdXN0IGJlIDIgb3IgMy4KLWZ1bmN0aW9uIGRvVGVzdChiaXROdW1iZXIpCitmdW5j
dGlvbiBkb1Rlc3QoY3VyVGVzdEluZGV4KQogewotICAgIHZhciB1cmwgPSAid3M6Ly9sb2NhbGhv
c3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzP2JpdD0iICsgYml0TnVt
YmVyOworICAgIHZhciB1cmwgPSAid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMv
aHliaS9yZXNlcnZlZC1iaXRzPyIgKyBjb21wcmVzc19iaXROdW1iZXJbY3VyVGVzdEluZGV4XTsK
ICAgICB2YXIgd3MgPSBuZXcgV2ViU29ja2V0KHVybCk7CiAKLSAgICBkZWJ1ZygiQml0ICIgKyBi
aXROdW1iZXIgKyAiOiBUZXN0IHN0YXJ0ZWQuIik7CisgICAgZGVidWcoIkNhc2UgIiArIGNvbXBy
ZXNzX2JpdE51bWJlcltjdXJUZXN0SW5kZXhdICsgIjogVGVzdCBzdGFydGVkLiIpOwogCiAgICAg
d3Mub25vcGVuID0gZnVuY3Rpb24oKQogICAgIHsKQEAgLTM5LDE0ICs0NCwxNCBAQCBmdW5jdGlv
biBkb1Rlc3QoYml0TnVtYmVyKQogICAgICAgICBkZWJ1Zygib25jbG9zZSgpIHdhcyBjYWxsZWQu
Iik7CiAgICAgICAgIGNsb3NlRXZlbnQgPSBldmVudDsKICAgICAgICAgc2hvdWxkQmVGYWxzZSgi
Y2xvc2VFdmVudC53YXNDbGVhbiIpOwotICAgICAgICBpZiAoYml0TnVtYmVyID09PSAzKQorICAg
ICAgICBpZiAoY3VyVGVzdEluZGV4ID09PSBjb21wcmVzc19iaXROdW1iZXIubGVuZ3RoIC0gMSkK
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBk
b1Rlc3QoYml0TnVtYmVyICsgMSk7CisgICAgICAgICAgICBkb1Rlc3QoY3VyVGVzdEluZGV4ICsg
MSk7CiAgICAgfTsKIH0KIAotZG9UZXN0KDIpOworZG9UZXN0KDApOwogCiA8L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzX3dzaC5weSBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0c193c2gucHkKaW5kZXggNGFkMGRmZGM1
NTFiMDY1NTE1NmE2YWUxMjA4NTU0NGRkM2E4ZmVhMC4uNzE0ZmI5Njk2ZWY0NjQ3ZDJmYjA4NjZh
YTE2YzAzNDIyMTk0NzkzMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzX3dzaC5weQorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHNfd3NoLnB5CkBAIC0z
LDE3ICszLDIyIEBAIGZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KIGZyb20gbW9k
X3B5d2Vic29ja2V0IGltcG9ydCBzdHJlYW0KIAogCi1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9o
YW5kc2hha2UocmVxdWVzdCk6Ci0gICAgcGFzcwotCitiaXQgPSAwCiAKLWRlZiB3ZWJfc29ja2V0
X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAgbWF0Y2ggPSByZS5zZWFyY2gocidcP2JpdD0o
XGQrKSQnLCByZXF1ZXN0LndzX3Jlc291cmNlKQorZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFu
ZHNoYWtlKHJlcXVlc3QpOgorICAgIG1hdGNoID0gcmUuc2VhcmNoKHInXD9jb21wcmVzc2VkPSh0
cnVlfGZhbHNlKSZiaXRfbnVtYmVyPShcZCkkJywgcmVxdWVzdC53c19yZXNvdXJjZSkKICAgICBp
ZiBtYXRjaCBpcyBOb25lOgogICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAn
RkFJTDogUXVlcnkgdmFsdWUgaXMgaW5jb3JyZWN0IG9yIG1pc3NpbmcnKQogICAgICAgICByZXR1
cm4KKyAgICAKKyAgICBnbG9iYWwgYml0CisgICAgY29tcHJlc3NlZCA9IG1hdGNoLmdyb3VwKDEp
CisgICAgYml0ID0gaW50KG1hdGNoLmdyb3VwKDIpKQorICAgIGlmIGNvbXByZXNzZWQgPT0gImZh
bHNlIjoKKyAgICAgICAgcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycyA9IFtdICMgdXNp
bmcgbm8gZXh0ZW5zaW9uIHJlc3BvbnNlCisKIAotICAgIGJpdCA9IGludChtYXRjaC5ncm91cCgx
KSkKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CiAgICAgbWVzc2FnZSA9
ICJUaGlzIG1lc3NhZ2Ugc2hvdWxkIGJlIGlnbm9yZWQuIgogICAgIGlmIGJpdCA9PSAxOgogICAg
ICAgICBmcmFtZSA9IHN0cmVhbS5jcmVhdGVfaGVhZGVyKGNvbW1vbi5PUENPREVfVEVYVCwgbGVu
KG1lc3NhZ2UpLCAxLCAxLCAwLCAwLCAwKSArIG1lc3NhZ2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134455</attachid>
            <date>2012-03-28 17:47:39 -0700</date>
            <delta_ts>2012-03-30 08:05:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82100-20120330084955.patch</filename>
            <type>text/plain</type>
            <size>6078</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMDQxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjk0YjJlYzQ5OTUyNmZiNjM4YTcz
NWZlZDU1OWIxMjQ5ZjQxZDZkNC4uN2UyMzRhMzk1YzEwZDQzMjRmNjI5Mjk2MmJlOWNjMjhkMTAy
YjFmMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTAzLTI3ICBMaSBZaW4gIDxsaS55aW5A
aW50ZWwuY29tPgorCisgICAgICAgIFtXZWJTb2NrZXRdUmVzZXJ2ZWQgYml0cyB0ZXN0IGNhc2Ug
c2hvdWxkIGNvdmVyIGJvdGggZXh0ZW5zaW9uIGFuZCBuby1leHRlbnNpb24gc2NlbmFyaW9zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjEwMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhl
IGN1cnJlbnQgcmVzZXJ2ZWQgYml0cyB0ZXN0IGNhc2Ugb25seSBzdXBwb3J0IGV4dGVuc2lvbiBj
YXNlLAorICAgICAgICBJbXByb3ZlIHRlc3QgY2FzZSB0byBjb3ZlciBib3RoIG5vLWV4dGVuc2lv
biBhbmQgZXh0ZW5zaW9uIHNjZW5hcmlvcy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzLmh0bWw6CisgICAgICAg
ICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzX3dzaC5weToK
KyAgICAgICAgKHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKToKKwogMjAxMi0wMy0yNSAg
UmFwaGFlbCBLdWJvIGRhIENvc3RhICA8cmFrdWNvQEZyZWVCU0Qub3JnPgogCiAgICAgICAgIFtF
RkxdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLiBVcGRhdGUgc29tZSB0YWJsZXMvbGF5ZXJpbmcvIGJh
c2VsaW5lcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMtZXhwZWN0ZWQudHh0CmluZGV4
IDYzYThkNjE3YmY2YjllNzhkNDMwZGE5ZGI5OGExZGRmMGVkNzE1OTUuLjhjZjZhMzExZjNiODUz
OThjM2I2NzA1MGYyMWRiZTE2NDM3MzE3ZTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1i
aXRzLWV4cGVjdGVkLnR4dApAQCAtMSwxNCArMSwyOSBAQAorQ09OU09MRSBNRVNTQUdFOiBSZWNl
aXZlZCB1bmV4cGVjdGVkIGNvbXByZXNzZWQgZnJhbWUKK0NPTlNPTEUgTUVTU0FHRTogT25lIG9y
IG1vcmUgcmVzZXJ2ZWQgYml0cyBhcmUgb246IHJlc2VydmVkMiA9IDEsIHJlc2VydmVkMyA9IDAK
K0NPTlNPTEUgTUVTU0FHRTogT25lIG9yIG1vcmUgcmVzZXJ2ZWQgYml0cyBhcmUgb246IHJlc2Vy
dmVkMiA9IDAsIHJlc2VydmVkMyA9IDEKIENPTlNPTEUgTUVTU0FHRTogT25lIG9yIG1vcmUgcmVz
ZXJ2ZWQgYml0cyBhcmUgb246IHJlc2VydmVkMiA9IDEsIHJlc2VydmVkMyA9IDAKIENPTlNPTEUg
TUVTU0FHRTogT25lIG9yIG1vcmUgcmVzZXJ2ZWQgYml0cyBhcmUgb246IHJlc2VydmVkMiA9IDAs
IHJlc2VydmVkMyA9IDEKIFRlc3Qgd2hldGhlciBXZWJTb2NrZXQgcmVqZWN0cyBmcmFtZXMgd2hv
c2UgcmVzZXJ2ZWQgYml0IGlzIG9uLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKLUJp
dCAyOiBUZXN0IHN0YXJ0ZWQuCitDYXNlIGNvbXByZXNzZWQ9ZmFsc2UmYml0TnVtYmVyPTE6IFRl
c3Qgc3RhcnRlZC4KK29ub3BlbigpIHdhcyBjYWxsZWQuCitvbmNsb3NlKCkgd2FzIGNhbGxlZC4K
K1BBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBmYWxzZQorQ2FzZSBjb21wcmVzc2VkPWZhbHNl
JmJpdE51bWJlcj0yOiBUZXN0IHN0YXJ0ZWQuCitvbm9wZW4oKSB3YXMgY2FsbGVkLgorb25jbG9z
ZSgpIHdhcyBjYWxsZWQuCitQQVNTIGNsb3NlRXZlbnQud2FzQ2xlYW4gaXMgZmFsc2UKK0Nhc2Ug
Y29tcHJlc3NlZD1mYWxzZSZiaXROdW1iZXI9MzogVGVzdCBzdGFydGVkLgorb25vcGVuKCkgd2Fz
IGNhbGxlZC4KK29uY2xvc2UoKSB3YXMgY2FsbGVkLgorUEFTUyBjbG9zZUV2ZW50Lndhc0NsZWFu
IGlzIGZhbHNlCitDYXNlIGNvbXByZXNzZWQ9dHJ1ZSZiaXROdW1iZXI9MjogVGVzdCBzdGFydGVk
Lgogb25vcGVuKCkgd2FzIGNhbGxlZC4KIG9uY2xvc2UoKSB3YXMgY2FsbGVkLgogUEFTUyBjbG9z
ZUV2ZW50Lndhc0NsZWFuIGlzIGZhbHNlCi1CaXQgMzogVGVzdCBzdGFydGVkLgorQ2FzZSBjb21w
cmVzc2VkPXRydWUmYml0TnVtYmVyPTM6IFRlc3Qgc3RhcnRlZC4KIG9ub3BlbigpIHdhcyBjYWxs
ZWQuCiBvbmNsb3NlKCkgd2FzIGNhbGxlZC4KIFBBU1MgY2xvc2VFdmVudC53YXNDbGVhbiBpcyBm
YWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9yZXNlcnZlZC1iaXRzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMuaHRtbAppbmRleCBlYzhkZDMzYTc1YmFiYTY2NzZh
MmNjYzMzNjkyZDk0M2QzMWNmNjgxLi5hNjk3M2NmOWRmYmFkMjg4MmQxNWU1NTM3YmIyY2RlN2U3
NDNkMzY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL3Jlc2VydmVkLWJpdHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMuaHRtbApAQCAtMTMsMTUgKzEzLDIwIEBA
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJL
aXRIaXhpZTc2V2ViU29ja2V0UHJvdG9jb2xFbmFibGVkIiwgMCk7CiAKKy8vICJjb21wcmVzc2Vk
PXRydWUmYml0TnVtYmVyPTEiIG11c3Qgbm90IGJlIGluY2x1ZGVkIGluIGNvbXByZXNzZWRBbmRC
aXROdW1iZXJQYXJhbWV0ZXJzIGFycmF5LgordmFyIGNvbXByZXNzZWRBbmRCaXROdW1iZXJQYXJh
bWV0ZXJzID0gWyJjb21wcmVzc2VkPWZhbHNlJmJpdE51bWJlcj0xIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcHJlc3NlZD1mYWxzZSZiaXROdW1iZXI9MiIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXByZXNzZWQ9ZmFs
c2UmYml0TnVtYmVyPTMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJjb21wcmVzc2VkPXRydWUmYml0TnVtYmVyPTIiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJjb21wcmVzc2VkPXRydWUmYml0TnVtYmVyPTMiXTsKIHZhciBjbG9z
ZUV2ZW50OwogCi0vLyBiaXROdW1iZXIgbXVzdCBiZSAyIG9yIDMuCi1mdW5jdGlvbiBkb1Rlc3Qo
Yml0TnVtYmVyKQorZnVuY3Rpb24gZG9UZXN0KGN1clRlc3RJbmRleCkKIHsKLSAgICB2YXIgdXJs
ID0gIndzOi8vbG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0
cz9iaXQ9IiArIGJpdE51bWJlcjsKKyAgICB2YXIgdXJsID0gIndzOi8vbG9jYWxob3N0Ojg4ODAv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cz8iICsgY29tcHJlc3NlZEFuZEJpdE51
bWJlclBhcmFtZXRlcnNbY3VyVGVzdEluZGV4XTsKICAgICB2YXIgd3MgPSBuZXcgV2ViU29ja2V0
KHVybCk7CiAKLSAgICBkZWJ1ZygiQml0ICIgKyBiaXROdW1iZXIgKyAiOiBUZXN0IHN0YXJ0ZWQu
Iik7CisgICAgZGVidWcoIkNhc2UgIiArIGNvbXByZXNzZWRBbmRCaXROdW1iZXJQYXJhbWV0ZXJz
W2N1clRlc3RJbmRleF0gKyAiOiBUZXN0IHN0YXJ0ZWQuIik7CiAKICAgICB3cy5vbm9wZW4gPSBm
dW5jdGlvbigpCiAgICAgewpAQCAtMzksMTQgKzQ0LDE0IEBAIGZ1bmN0aW9uIGRvVGVzdChiaXRO
dW1iZXIpCiAgICAgICAgIGRlYnVnKCJvbmNsb3NlKCkgd2FzIGNhbGxlZC4iKTsKICAgICAgICAg
Y2xvc2VFdmVudCA9IGV2ZW50OwogICAgICAgICBzaG91bGRCZUZhbHNlKCJjbG9zZUV2ZW50Lndh
c0NsZWFuIik7Ci0gICAgICAgIGlmIChiaXROdW1iZXIgPT09IDMpCisgICAgICAgIGlmIChjdXJU
ZXN0SW5kZXggPT09IGNvbXByZXNzZWRBbmRCaXROdW1iZXJQYXJhbWV0ZXJzLmxlbmd0aCAtIDEp
CiAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ZG9UZXN0KGJpdE51bWJlciArIDEpOworICAgICAgICAgICAgZG9UZXN0KGN1clRlc3RJbmRleCAr
IDEpOwogICAgIH07CiB9CiAKLWRvVGVzdCgyKTsKK2RvVGVzdCgwKTsKIAogPC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0c193c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHNfd3NoLnB5CmluZGV4IDRhZDBkZmRj
NTUxYjA2NTUxNTZhNmFlMTIwODU1NDRkZDNhOGZlYTAuLjk5MDg3YmVkNjk2ZjNjY2NmODIyYThi
ZDk1OTI3ODVkMzAwNWQ1MjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0c193c2gucHkKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzX3dzaC5weQpAQCAt
MywxNyArMywyMiBAQCBmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCiBmcm9tIG1v
ZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCiAKIAotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFf
aGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MKLQorYml0ID0gMAogCi1kZWYgd2ViX3NvY2tl
dF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIG1hdGNoID0gcmUuc2VhcmNoKHInXD9iaXQ9
KFxkKykkJywgcmVxdWVzdC53c19yZXNvdXJjZSkKK2RlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hh
bmRzaGFrZShyZXF1ZXN0KToKKyAgICBtYXRjaCA9IHJlLnNlYXJjaChyJ1w/Y29tcHJlc3NlZD0o
dHJ1ZXxmYWxzZSkmYml0TnVtYmVyPShcZCkkJywgcmVxdWVzdC53c19yZXNvdXJjZSkKICAgICBp
ZiBtYXRjaCBpcyBOb25lOgogICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAn
RkFJTDogUXVlcnkgdmFsdWUgaXMgaW5jb3JyZWN0IG9yIG1pc3NpbmcnKQogICAgICAgICByZXR1
cm4KKyAgICAKKyAgICBnbG9iYWwgYml0CisgICAgY29tcHJlc3NlZCA9IG1hdGNoLmdyb3VwKDEp
CisgICAgYml0ID0gaW50KG1hdGNoLmdyb3VwKDIpKQorICAgIGlmIGNvbXByZXNzZWQgPT0gImZh
bHNlIjoKKyAgICAgICAgcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycyA9IFtdICMgdXNp
bmcgbm8gZXh0ZW5zaW9uIHJlc3BvbnNlCisKIAotICAgIGJpdCA9IGludChtYXRjaC5ncm91cCgx
KSkKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CiAgICAgbWVzc2FnZSA9
ICJUaGlzIG1lc3NhZ2Ugc2hvdWxkIGJlIGlnbm9yZWQuIgogICAgIGlmIGJpdCA9PSAxOgogICAg
ICAgICBmcmFtZSA9IHN0cmVhbS5jcmVhdGVfaGVhZGVyKGNvbW1vbi5PUENPREVfVEVYVCwgbGVu
KG1lc3NhZ2UpLCAxLCAxLCAwLCAwLCAwKSArIG1lc3NhZ2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134817</attachid>
            <date>2012-03-30 08:08:25 -0700</date>
            <delta_ts>2012-03-30 17:42:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82100-20120331231043.patch</filename>
            <type>text/plain</type>
            <size>5600</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODE2YmE2YWZmMDVmOTli
YTA4N2EyN2ViOTkyM2U5OGI1ZWZkOTFjMS4uMDUzODc5YmNhZTAxMWUxYThhMWNlYzc5NGFjNGI5
OWIzODNjNjUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAzLTMxICBMaSBZ
aW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIFtXZWJTb2NrZXRdUmVzZXJ2ZWQgYml0
cyB0ZXN0IGNhc2Ugc2hvdWxkIGNvdmVyIGJvdGggZXh0ZW5zaW9uIGFuZCBuby1leHRlbnNpb24g
c2NlbmFyaW9zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MjEwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3Q6ICBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMuaHRt
bCAKKworICAgICAgICBXaGVuIGl0IGhhZCBubyBuZWdvdGlhdGVkIGRlZmxhdGUtZnJhbWUgZXh0
ZW5zaW9uLCBpZiBicm93c2VyIHJlY2VpdmVkIHRoZSBmcmFtZSB3aXRoCisgICAgICAgIHNldHRp
bmcgY29tcHJlc3NlZCBiaXQsIGl0IHNob3VsZCBmYWlsIHRoZSBjb25uZWN0aW9uLCBhbmQgaXQg
c2hvdWxkIGNvdmVyIGJvdGgKKyAgICAgICAgZW5hYmxpbmcgWkxJQiBwb3J0IGFuZCBkaXNhYmxp
bmcgWkxJQiBwb3J0LgorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERl
ZmxhdGVGcmFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1l
cjo6aW5mbGF0ZSk6CisKIDIwMTItMDMtMzAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFdlYkF1ZGlvIGNoYW5uZWxTaXplIGlzc3VlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVm
bGF0ZUZyYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0RGVmbGF0ZUZyYW1lci5jcHAKaW5kZXggNjdmOTUzM2FiZWVlZGUwYmM4MDMyNjUxNDgyOTcx
NDZjNDcyNTY4Yi4uNzZjMDQwZDFjOTM3MmFiNzBlMjI2NDYwYTg3ZDJhNTVmMmM4OGZmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxh
dGVGcmFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXREZWZsYXRlRnJhbWVyLmNwcApAQCAtMjE3LDExICsyMTcsMTUgQEAgdm9pZCBXZWJTb2Nr
ZXREZWZsYXRlRnJhbWVyOjpyZXNldERlZmxhdGVDb250ZXh0KCkKIAogUGFzc093blB0cjxJbmZs
YXRlUmVzdWx0SG9sZGVyPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRlKFdlYlNvY2tl
dEZyYW1lJiBmcmFtZSkKIHsKLSNpZiBVU0UoWkxJQikKICAgICBPd25QdHI8SW5mbGF0ZVJlc3Vs
dEhvbGRlcj4gcmVzdWx0ID0gSW5mbGF0ZVJlc3VsdEhvbGRlcjo6Y3JlYXRlKHRoaXMpOworICAg
IGlmICghZW5hYmxlZCgpICYmIGZyYW1lLmNvbXByZXNzKSB7CisgICAgICAgIHJlc3VsdC0+ZmFp
bCgiQ29tcHJlc3NlZCBiaXQgbXVzdCBiZSAwIGlmIG5vIG5lZ290aWF0ZWQgZGVmbGF0ZS1mcmFt
ZSBleHRlbnNpb24iKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgfQor
I2lmIFVTRShaTElCKQogICAgIGlmICghZnJhbWUuY29tcHJlc3MpCiAgICAgICAgIHJldHVybiBy
ZXN1bHQucmVsZWFzZSgpOwotICAgIGlmICghZW5hYmxlZCgpIHx8ICFXZWJTb2NrZXRGcmFtZTo6
aXNOb25Db250cm9sT3BDb2RlKGZyYW1lLm9wQ29kZSkpIHsKKyAgICBpZiAoIVdlYlNvY2tldEZy
YW1lOjppc05vbkNvbnRyb2xPcENvZGUoZnJhbWUub3BDb2RlKSkgewogICAgICAgICByZXN1bHQt
PmZhaWwoIlJlY2VpdmVkIHVuZXhwZWN0ZWQgY29tcHJlc3NlZCBmcmFtZSIpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKICAgICB9CkBAIC0yMzQsNyArMjM4LDcgQEAgUGFzc093
blB0cjxJbmZsYXRlUmVzdWx0SG9sZGVyPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRl
KFdlYlNvY2tldEZyYW1lJgogICAgIGZyYW1lLnBheWxvYWRMZW5ndGggPSBtX2luZmxhdGVyLT5z
aXplKCk7CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiAjZWxzZQotICAgIHJldHVybiBJ
bmZsYXRlUmVzdWx0SG9sZGVyOjpjcmVhdGUodGhpcyk7CisgICAgcmV0dXJuIHJlc3VsdC5yZWxl
YXNlKCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDcwZWQ1NmMwM2M2NzQ1NDhhY2VhZDE3YjI3Y2E3
NGMzNjBmMTkwNzUuLjI1YWQxYjhhNWY5NGE0Mzg3MzA5ZTg4NDRkOTdhOWQxZTdhMjQ1ZDQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wMy0zMSAgTGkgWWluICA8bGkueWluQGludGVsLmNv
bT4KKworICAgICAgICBbV2ViU29ja2V0XVJlc2VydmVkIGJpdHMgdGVzdCBjYXNlIHNob3VsZCBj
b3ZlciBib3RoIGV4dGVuc2lvbiBhbmQgbm8tZXh0ZW5zaW9uIHNjZW5hcmlvcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIxMDAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTb2x2ZSB0aGUgcHJvYmxlbSB0
aGF0IFF0IFdlYmtpdCBmYWlsZWQgd2hlbiBydW5pbmcgdGhlIHJlc2VydmVkLWJpdHMuaHRtbAor
ICAgICAgICBTdXBwb3J0IGJvdGggZW5hYmxlZCBaTElCIGFuZCBkaXNhYmxlZCBaTElCIHNjZW5h
cmlvcy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2
ZWQtYml0cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9yZXNlcnZlZC1iaXRzX3dzaC5weToKKyAgICAgICAgKF9nZXRfZGVmbGF0ZV9mcmFt
ZV9leHRlbnNpb25fcHJvY2Vzc29yKToKKyAgICAgICAgKHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFu
ZHNoYWtlKToKKwogMjAxMi0wMy0zMCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgR1RLIHJlYmFzZWxpbmUgYWZ0ZXIgcjExMjU4
MiBhbmQgcjExMjM5MS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMtZXhwZWN0ZWQudHh0
CmluZGV4IDhjZjZhMzExZjNiODUzOThjM2I2NzA1MGYyMWRiZTE2NDM3MzE3ZTQuLmRmMjc1YjI0
OTdhOTRlNDRlNzVhZWM4MzI0ZDY3M2JmZDg2YzMyNTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNl
cnZlZC1iaXRzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FHRTog
UmVjZWl2ZWQgdW5leHBlY3RlZCBjb21wcmVzc2VkIGZyYW1lCitDT05TT0xFIE1FU1NBR0U6IENv
bXByZXNzZWQgYml0IG11c3QgYmUgMCBpZiBubyBuZWdvdGlhdGVkIGRlZmxhdGUtZnJhbWUgZXh0
ZW5zaW9uCiBDT05TT0xFIE1FU1NBR0U6IE9uZSBvciBtb3JlIHJlc2VydmVkIGJpdHMgYXJlIG9u
OiByZXNlcnZlZDIgPSAxLCByZXNlcnZlZDMgPSAwCiBDT05TT0xFIE1FU1NBR0U6IE9uZSBvciBt
b3JlIHJlc2VydmVkIGJpdHMgYXJlIG9uOiByZXNlcnZlZDIgPSAwLCByZXNlcnZlZDMgPSAxCiBD
T05TT0xFIE1FU1NBR0U6IE9uZSBvciBtb3JlIHJlc2VydmVkIGJpdHMgYXJlIG9uOiByZXNlcnZl
ZDIgPSAxLCByZXNlcnZlZDMgPSAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHNfd3NoLnB5IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzX3dzaC5weQppbmRl
eCA5OTA4N2JlZDY5NmYzY2NjZjgyMmE4YmQ5NTkyNzg1ZDMwMDVkNTIxLi5kMTlkMWY3YmZlNWY3
MWNjOTdhN2ZjOTViOWI2M2ZkYTRkNjgyNTViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHNfd3NoLnB5CisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0c193
c2gucHkKQEAgLTEsMTAgKzEsMTcgQEAKIGltcG9ydCByZQogZnJvbSBtb2RfcHl3ZWJzb2NrZXQg
aW1wb3J0IGNvbW1vbgogZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHN0cmVhbQotCitmcm9t
IG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBEZWZsYXRlRnJhbWVFeHRlbnNpb25Q
cm9jZXNzb3IKIAogYml0ID0gMAogCitkZWYgX2dldF9kZWZsYXRlX2ZyYW1lX2V4dGVuc2lvbl9w
cm9jZXNzb3IocmVxdWVzdCk6CisgICAgZm9yIGV4dGVuc2lvbl9wcm9jZXNzb3IgaW4gcmVxdWVz
dC53c19leHRlbnNpb25fcHJvY2Vzc29yczoKKyAgICAgICAgaWYgaXNpbnN0YW5jZShleHRlbnNp
b25fcHJvY2Vzc29yLCBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IpOgorICAgICAgICAg
ICAgcmV0dXJuIGV4dGVuc2lvbl9wcm9jZXNzb3IKKyAgICByZXR1cm4gTm9uZQorCisKIGRlZiB3
ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKICAgICBtYXRjaCA9IHJlLnNl
YXJjaChyJ1w/Y29tcHJlc3NlZD0odHJ1ZXxmYWxzZSkmYml0TnVtYmVyPShcZCkkJywgcmVxdWVz
dC53c19yZXNvdXJjZSkKICAgICBpZiBtYXRjaCBpcyBOb25lOgpAQCAtMTYsNiArMjMsMTAgQEAg
ZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgogICAgIGJpdCA9IGlu
dChtYXRjaC5ncm91cCgyKSkKICAgICBpZiBjb21wcmVzc2VkID09ICJmYWxzZSI6CiAgICAgICAg
IHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMgPSBbXSAjIHVzaW5nIG5vIGV4dGVuc2lv
biByZXNwb25zZQorICAgIGVsc2U6CisgICAgICAgIHByb2Nlc3NvciA9IF9nZXRfZGVmbGF0ZV9m
cmFtZV9leHRlbnNpb25fcHJvY2Vzc29yKHJlcXVlc3QpCisgICAgICAgIGlmIG5vdCBwcm9jZXNz
b3I6CisgICAgICAgICAgICByZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzID0gW10gIyB1
c2luZyBubyBleHRlbnNpb24gcmVzcG9uc2UKIAogCiBkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9k
YXRhKHJlcXVlc3QpOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134918</attachid>
            <date>2012-03-30 17:42:24 -0700</date>
            <delta_ts>2012-04-01 19:53:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82100-20120401084442.patch</filename>
            <type>text/plain</type>
            <size>5600</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODE2YmE2YWZmMDVmOTli
YTA4N2EyN2ViOTkyM2U5OGI1ZWZkOTFjMS4uOTY3YWIxZmY1MjQ2NDQ4ZTQyNGI1YTBhZjI5NDE3
NTE0NGE2Yjg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAzLTMxICBMaSBZ
aW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIFtXZWJTb2NrZXRdUmVzZXJ2ZWQgYml0
cyB0ZXN0IGNhc2Ugc2hvdWxkIGNvdmVyIGJvdGggZXh0ZW5zaW9uIGFuZCBuby1leHRlbnNpb24g
c2NlbmFyaW9zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MjEwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdoZW4gaXQgaGFkIG5vIG5lZ290aWF0ZWQgZGVmbGF0ZS1mcmFtZSBleHRlbnNpb24sIGlmIGJy
b3dzZXIgcmVjZWl2ZWQgdGhlIGZyYW1lIHdpdGgKKyAgICAgICAgc2V0dGluZyBjb21wcmVzc2Vk
IGJpdCwgaXQgc2hvdWxkIGZhaWwgdGhlIGNvbm5lY3Rpb24sIGFuZCBpdCBzaG91bGQgY292ZXIg
Ym90aAorICAgICAgICBlbmFibGluZyBaTElCIHBvcnQgYW5kIGRpc2FibGluZyBaTElCIHBvcnQu
CisKKyAgICAgICAgVGVzdDogIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2
ZWQtYml0cy5odG1sIAorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERl
ZmxhdGVGcmFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0RGVmbGF0ZUZyYW1l
cjo6aW5mbGF0ZSk6CisKIDIwMTItMDMtMzAgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIFdlYkF1ZGlvIGNoYW5uZWxTaXplIGlzc3VlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0RGVm
bGF0ZUZyYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0RGVmbGF0ZUZyYW1lci5jcHAKaW5kZXggNjdmOTUzM2FiZWVlZGUwYmM4MDMyNjUxNDgyOTcx
NDZjNDcyNTY4Yi4uNzZjMDQwZDFjOTM3MmFiNzBlMjI2NDYwYTg3ZDJhNTVmMmM4OGZmMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldERlZmxh
dGVGcmFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXREZWZsYXRlRnJhbWVyLmNwcApAQCAtMjE3LDExICsyMTcsMTUgQEAgdm9pZCBXZWJTb2Nr
ZXREZWZsYXRlRnJhbWVyOjpyZXNldERlZmxhdGVDb250ZXh0KCkKIAogUGFzc093blB0cjxJbmZs
YXRlUmVzdWx0SG9sZGVyPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRlKFdlYlNvY2tl
dEZyYW1lJiBmcmFtZSkKIHsKLSNpZiBVU0UoWkxJQikKICAgICBPd25QdHI8SW5mbGF0ZVJlc3Vs
dEhvbGRlcj4gcmVzdWx0ID0gSW5mbGF0ZVJlc3VsdEhvbGRlcjo6Y3JlYXRlKHRoaXMpOworICAg
IGlmICghZW5hYmxlZCgpICYmIGZyYW1lLmNvbXByZXNzKSB7CisgICAgICAgIHJlc3VsdC0+ZmFp
bCgiQ29tcHJlc3NlZCBiaXQgbXVzdCBiZSAwIGlmIG5vIG5lZ290aWF0ZWQgZGVmbGF0ZS1mcmFt
ZSBleHRlbnNpb24iKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgfQor
I2lmIFVTRShaTElCKQogICAgIGlmICghZnJhbWUuY29tcHJlc3MpCiAgICAgICAgIHJldHVybiBy
ZXN1bHQucmVsZWFzZSgpOwotICAgIGlmICghZW5hYmxlZCgpIHx8ICFXZWJTb2NrZXRGcmFtZTo6
aXNOb25Db250cm9sT3BDb2RlKGZyYW1lLm9wQ29kZSkpIHsKKyAgICBpZiAoIVdlYlNvY2tldEZy
YW1lOjppc05vbkNvbnRyb2xPcENvZGUoZnJhbWUub3BDb2RlKSkgewogICAgICAgICByZXN1bHQt
PmZhaWwoIlJlY2VpdmVkIHVuZXhwZWN0ZWQgY29tcHJlc3NlZCBmcmFtZSIpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKICAgICB9CkBAIC0yMzQsNyArMjM4LDcgQEAgUGFzc093
blB0cjxJbmZsYXRlUmVzdWx0SG9sZGVyPiBXZWJTb2NrZXREZWZsYXRlRnJhbWVyOjppbmZsYXRl
KFdlYlNvY2tldEZyYW1lJgogICAgIGZyYW1lLnBheWxvYWRMZW5ndGggPSBtX2luZmxhdGVyLT5z
aXplKCk7CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiAjZWxzZQotICAgIHJldHVybiBJ
bmZsYXRlUmVzdWx0SG9sZGVyOjpjcmVhdGUodGhpcyk7CisgICAgcmV0dXJuIHJlc3VsdC5yZWxl
YXNlKCk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDcwZWQ1NmMwM2M2NzQ1NDhhY2VhZDE3YjI3Y2E3
NGMzNjBmMTkwNzUuLjI1YWQxYjhhNWY5NGE0Mzg3MzA5ZTg4NDRkOTdhOWQxZTdhMjQ1ZDQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wMy0zMSAgTGkgWWluICA8bGkueWluQGludGVsLmNv
bT4KKworICAgICAgICBbV2ViU29ja2V0XVJlc2VydmVkIGJpdHMgdGVzdCBjYXNlIHNob3VsZCBj
b3ZlciBib3RoIGV4dGVuc2lvbiBhbmQgbm8tZXh0ZW5zaW9uIHNjZW5hcmlvcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIxMDAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTb2x2ZSB0aGUgcHJvYmxlbSB0
aGF0IFF0IFdlYmtpdCBmYWlsZWQgd2hlbiBydW5pbmcgdGhlIHJlc2VydmVkLWJpdHMuaHRtbAor
ICAgICAgICBTdXBwb3J0IGJvdGggZW5hYmxlZCBaTElCIGFuZCBkaXNhYmxlZCBaTElCIHNjZW5h
cmlvcy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2
ZWQtYml0cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9yZXNlcnZlZC1iaXRzX3dzaC5weToKKyAgICAgICAgKF9nZXRfZGVmbGF0ZV9mcmFt
ZV9leHRlbnNpb25fcHJvY2Vzc29yKToKKyAgICAgICAgKHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFu
ZHNoYWtlKToKKwogMjAxMi0wMy0zMCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgR1RLIHJlYmFzZWxpbmUgYWZ0ZXIgcjExMjU4
MiBhbmQgcjExMjM5MS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHMtZXhwZWN0ZWQudHh0
CmluZGV4IDhjZjZhMzExZjNiODUzOThjM2I2NzA1MGYyMWRiZTE2NDM3MzE3ZTQuLmRmMjc1YjI0
OTdhOTRlNDRlNzVhZWM4MzI0ZDY3M2JmZDg2YzMyNTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0cy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNl
cnZlZC1iaXRzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FHRTog
UmVjZWl2ZWQgdW5leHBlY3RlZCBjb21wcmVzc2VkIGZyYW1lCitDT05TT0xFIE1FU1NBR0U6IENv
bXByZXNzZWQgYml0IG11c3QgYmUgMCBpZiBubyBuZWdvdGlhdGVkIGRlZmxhdGUtZnJhbWUgZXh0
ZW5zaW9uCiBDT05TT0xFIE1FU1NBR0U6IE9uZSBvciBtb3JlIHJlc2VydmVkIGJpdHMgYXJlIG9u
OiByZXNlcnZlZDIgPSAxLCByZXNlcnZlZDMgPSAwCiBDT05TT0xFIE1FU1NBR0U6IE9uZSBvciBt
b3JlIHJlc2VydmVkIGJpdHMgYXJlIG9uOiByZXNlcnZlZDIgPSAwLCByZXNlcnZlZDMgPSAxCiBD
T05TT0xFIE1FU1NBR0U6IE9uZSBvciBtb3JlIHJlc2VydmVkIGJpdHMgYXJlIG9uOiByZXNlcnZl
ZDIgPSAxLCByZXNlcnZlZDMgPSAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHNfd3NoLnB5IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9yZXNlcnZlZC1iaXRzX3dzaC5weQppbmRl
eCA5OTA4N2JlZDY5NmYzY2NjZjgyMmE4YmQ5NTkyNzg1ZDMwMDVkNTIxLi5kMTlkMWY3YmZlNWY3
MWNjOTdhN2ZjOTViOWI2M2ZkYTRkNjgyNTViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3Jlc2VydmVkLWJpdHNfd3NoLnB5CisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvcmVzZXJ2ZWQtYml0c193
c2gucHkKQEAgLTEsMTAgKzEsMTcgQEAKIGltcG9ydCByZQogZnJvbSBtb2RfcHl3ZWJzb2NrZXQg
aW1wb3J0IGNvbW1vbgogZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHN0cmVhbQotCitmcm9t
IG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBEZWZsYXRlRnJhbWVFeHRlbnNpb25Q
cm9jZXNzb3IKIAogYml0ID0gMAogCitkZWYgX2dldF9kZWZsYXRlX2ZyYW1lX2V4dGVuc2lvbl9w
cm9jZXNzb3IocmVxdWVzdCk6CisgICAgZm9yIGV4dGVuc2lvbl9wcm9jZXNzb3IgaW4gcmVxdWVz
dC53c19leHRlbnNpb25fcHJvY2Vzc29yczoKKyAgICAgICAgaWYgaXNpbnN0YW5jZShleHRlbnNp
b25fcHJvY2Vzc29yLCBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IpOgorICAgICAgICAg
ICAgcmV0dXJuIGV4dGVuc2lvbl9wcm9jZXNzb3IKKyAgICByZXR1cm4gTm9uZQorCisKIGRlZiB3
ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKICAgICBtYXRjaCA9IHJlLnNl
YXJjaChyJ1w/Y29tcHJlc3NlZD0odHJ1ZXxmYWxzZSkmYml0TnVtYmVyPShcZCkkJywgcmVxdWVz
dC53c19yZXNvdXJjZSkKICAgICBpZiBtYXRjaCBpcyBOb25lOgpAQCAtMTYsNiArMjMsMTAgQEAg
ZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgogICAgIGJpdCA9IGlu
dChtYXRjaC5ncm91cCgyKSkKICAgICBpZiBjb21wcmVzc2VkID09ICJmYWxzZSI6CiAgICAgICAg
IHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMgPSBbXSAjIHVzaW5nIG5vIGV4dGVuc2lv
biByZXNwb25zZQorICAgIGVsc2U6CisgICAgICAgIHByb2Nlc3NvciA9IF9nZXRfZGVmbGF0ZV9m
cmFtZV9leHRlbnNpb25fcHJvY2Vzc29yKHJlcXVlc3QpCisgICAgICAgIGlmIG5vdCBwcm9jZXNz
b3I6CisgICAgICAgICAgICByZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzID0gW10gIyB1
c2luZyBubyBleHRlbnNpb24gcmVzcG9uc2UKIAogCiBkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9k
YXRhKHJlcXVlc3QpOgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>