<?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>14858</bug_id>
          
          <creation_ts>2007-08-01 19:39:22 -0700</creation_ts>
          <short_desc>&lt;col&gt; width ignored when not tied to a single cell</short_desc>
          <delta_ts>2010-03-21 15:28:47 -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>Tables</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows Server 2003</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://doxdesk.com/file/safari-colspan.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="And Clover">bobince</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric</cc>
    
    <cc>mitz</cc>
    
    <cc>rendezvouscp</cc>
    
    <cc>socket.h</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>3201</commentid>
    <comment_count>0</comment_count>
    <who name="And Clover">bobince</who>
    <bug_when>2007-08-01 19:39:22 -0700</bug_when>
    <thetext>When &lt;col&gt;s are declared, a column width is only enforced if there is a single cell somewhere in that column. If the column contains only cells shared with other columns using colspan, the column ends up &apos;auto&apos; width.

This occurs even in table-layout: fixed mode, and causes layouts that are heavy on colspan to break.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3151</commentid>
    <comment_count>1</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2007-08-02 06:49:57 -0700</bug_when>
    <thetext>Thanks for the bug report!  Could you attach a test case demonstrating the issue as well?

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>69645</commentid>
    <comment_count>2</comment_count>
      <attachid>18980</attachid>
    <who name="Chasen Le Hara">rendezvouscp</who>
    <bug_when>2008-02-06 23:34:42 -0800</bug_when>
    <thetext>Created attachment 18980
Test case

When rendered correctly, the page should be completely blank because the column widths are being respected. However, WebKit nightly r30053 (and below as far as I&apos;ve seen) will display the word FAIL because the table cells don&apos;t span wide enough to cover the text.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184065</commentid>
    <comment_count>3</comment_count>
      <attachid>47295</attachid>
    <who name="Dmitry Gorbik">socket.h</who>
    <bug_when>2010-01-24 04:59:56 -0800</bug_when>
    <thetext>Created attachment 47295
Proposed fix

Fixes the bug for the fixed values of the &lt;col&gt; width. Otherwise handled as before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184068</commentid>
    <comment_count>4</comment_count>
    <who name="Dmitry Gorbik">socket.h</who>
    <bug_when>2010-01-24 06:21:25 -0800</bug_when>
    <thetext>Table specs for this case: http://www.w3.org/TR/CSS2/tables.html#auto-table-layout

&quot;For each column group element with a &apos;width&apos; other than &apos;auto&apos;, increase the minimum widths of the columns it spans, so that together they are at least as wide as the column group&apos;s &apos;width&apos;.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184083</commentid>
    <comment_count>5</comment_count>
      <attachid>47295</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-01-24 10:52:36 -0800</bug_when>
    <thetext>Comment on attachment 47295
Proposed fix

I am not a rendering expert, so I can&apos;t review this patch for correctness.  However, I will give it a first-pass review.

Overall, this is a great first patch, Dmitry!  Please consider the following feedback and post another patch for review.

&gt; Index: WebCore/ChangeLog
&gt; ===================================================================
&gt; --- WebCore/ChangeLog	(revision 53776)
&gt; +++ WebCore/ChangeLog	(working copy)
&gt; @@ -1,3 +1,15 @@
&gt; +2010-01-24  Dmitry Gorbik  &lt;socket.h@gmail.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Fixed width calculation for cells with span when &lt;col&gt; is defined
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=14858
&gt; +
&gt; +        Test: fast/table/col-width-span-expand.html
&gt; +
&gt; +        * rendering/RenderTableCell.cpp:
&gt; +        (WebCore::RenderTableCell::styleOrColWidth):

A description of what was changed in the styleOrColWidth() method would be useful in the ChangeLog.  It&apos;s not strictly required, but often helps future bug fixers to understand why the code changes were made and what their intent was.  It can also help reviewers to understand what the bug fixer was thinking when they wrote the patch.

&gt; Index: WebCore/rendering/RenderTableCell.cpp
&gt; -
&gt; +    

Please don&apos;t include gratuitous whitespace changes (unless you&apos;re removing whitespace).  See &lt;http://webkit.org/coding/coding-style.html&gt; and the check-webkit-style script.

&gt;  Length RenderTableCell::styleOrColWidth() const
&gt;  {
&gt;      Length w = style()-&gt;width();
&gt; -    if (colSpan() &gt; 1 || !w.isAuto())
&gt; +    if (!w.isAuto())
&gt;          return w;
&gt; +    
&gt;      RenderTableCol* tableCol = table()-&gt;colElement(col());
&gt;      if (tableCol) {
&gt; -        w = tableCol-&gt;style()-&gt;width();
&gt; +        int i = 1;

The &apos;i&apos; variable should be declared in the scope of the loop if possible.

&gt; +        int iColSpan = colSpan();

A better variable name for this might be &quot;colSpanCount&quot;.

&gt; +        Length colWidthSum = Length(0, Fixed);
&gt; +        while (i &lt;= iColSpan) {

This could be written as a for() loop:

    for (int i = 1; i &lt;= colSpancount; ++i) {

&gt; +            Length colWidth = tableCol-&gt;style()-&gt;width();
&gt; +            
&gt; +            // Percentage value should be returned only for colSpan=1
&gt; +            // Otherwise we return original width for the cell

Comments that are sentences should end with a period.

&gt; +            if (!colWidth.isFixed()) {
&gt; +                if (iColSpan &gt; 1)
&gt; +                    return w;
&gt; +                return colWidth;
&gt; +            }
&gt; +            
&gt; +            colWidthSum = Length(colWidthSum.value() + colWidth.value(), Fixed);
&gt; +            
&gt; +            RenderObject * child = tableCol-&gt;nextSibling();

The &apos;*&apos; goes next to the type (RenderObject) in C++ code.

&gt; +            // If no next &lt;col&gt; tag found for the span we just return what we have for now

Comment needs a period.

&gt; +            if (child &amp;&amp; child-&gt;isTableCol())
&gt; +                tableCol = toRenderTableCol(child);  
&gt; +            else 
&gt; +                break;

I think the preferred way to write this would be to use an &quot;early break&quot;:

    if (!child || !child-&gt;isTableCol())
        break;

    tableCol = toRenderTableCol(child);

&gt; +            i++;

This line of code moved into the for() loop.

&gt; +        }
&gt;          
&gt;          // Column widths specified on &lt;col&gt; apply to the border box of the cell.
&gt;          // Percentages don&apos;t need to be handled since they&apos;re always treated this way (even when specified on the cells).
&gt;          // See Bugzilla bug 8126 for details.
&gt; -        if (w.isFixed() &amp;&amp; w.value() &gt; 0)
&gt; -            w = Length(max(0, w.value() - borderLeft() - borderRight() - paddingLeft() - paddingRight()), Fixed);
&gt; +        if (colWidthSum.isFixed() &amp;&amp; colWidthSum.value() &gt; 0)
&gt; +            colWidthSum = Length(max(0, colWidthSum.value() - borderLeft() - borderRight() - paddingLeft() - paddingRight()), Fixed);
&gt; +        return colWidthSum;
&gt;      }
&gt; +    
&gt;      return w;
&gt;  }
&gt; +    

No need for an extra blank line after the method here.

&gt; Index: LayoutTests/ChangeLog
&gt; ===================================================================
&gt; --- LayoutTests/ChangeLog	(revision 53776)
&gt; +++ LayoutTests/ChangeLog	(working copy)
&gt; @@ -1,3 +1,12 @@
&gt; +2010-01-24  Dmitry Gorbik  &lt;socket.h@gmail.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Fixed width calculation for cells with span when &lt;col&gt; is defined
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=14858         
&gt; +
&gt; +        * fast/table/col-width-span-expand.html: Added.

It&apos;s great that you included at test case with this change, but the patch is missing the expected results: both &quot;text&quot; results (*-expected.txt) and pixel test results (*-expected.png, *-expected.checksum) since this is not a &quot;text-only&quot; test case.  Using &quot;run-webkit-tests&quot; to generate expected text results (which should be a render tree dump), and add &quot;--pixel&quot; to generate pixel test results.

&gt; Index: LayoutTests/fast/table/col-width-span-expand.html
&gt; ===================================================================
&gt; --- LayoutTests/fast/table/col-width-span-expand.html	(revision 0)
&gt; +++ LayoutTests/fast/table/col-width-span-expand.html	(revision 0)
&gt; @@ -0,0 +1,40 @@
&gt; +&lt;!DOCTYPE html&gt;
&gt; +&lt;html&gt;
&gt; +	&lt;head&gt;
&gt; +		&lt;title&gt;WebKit Bug 14858: col width ignored when not tied to a single cell&lt;/title&gt;
&gt; +		&lt;link href=&quot;http://www.w3.org/TR/REC-CSS2/tables.html#q4&quot; rel=&quot;help&quot; /&gt;
&gt; +		&lt;style type=&quot;text/css&quot;&gt;
&gt; +div, table {
&gt; +	left: 1em;
&gt; +	position: absolute;
&gt; +	top: 1em
&gt; +}
&gt; +div {
&gt; +	color: red;
&gt; +	left: 250px
&gt; +}
&gt; +table {border-spacing: 0}
&gt; +td {
&gt; +	background-color: white;
&gt; +	padding: 0
&gt; +}
&gt; +		&lt;/style&gt;
&gt; +	&lt;/head&gt;
&gt; +	&lt;body&gt;
&gt; +		&lt;div&gt;FAIL&lt;/div&gt;
&gt; +		&lt;table&gt;
&gt; +			&lt;col width=&quot;20&quot; /&gt;
&gt; +			&lt;col width=&quot;40&quot; /&gt;
&gt; +			&lt;col width=&quot;80&quot; /&gt;
&gt; +			&lt;col width=&quot;160&quot; /&gt;
&gt; +			&lt;tbody&gt;
&gt; +				&lt;tr&gt;
&gt; +					&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&gt; +					&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;
&gt; +					&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&gt; +				&lt;/tr&gt;
&gt; +			&lt;/tbody&gt;
&gt; +		&lt;/table&gt;
&gt; +	&lt;/body&gt;
&gt; +&lt;/html&gt;

This test from the bug is good, but could be improved by:

- Adding HTML to add a link to the bugs.webkit.org bug.
- Adding text to describe how the test passes (since passing means that you can&apos;t see the red &quot;FAIL&quot; text any more, but no green &quot;PASS&quot; text appears).
- Using the CSS style definitions from LayoutTests/fast/js/resources/js-test-style.css is usually preferred for consistency, but not required.
- Instead of the last two items, switch the test to a text-only test case (see other tests that use &quot;layoutTestController.dumpAsText()&quot; and which include LayoutTests/fast/js/resources/js-test-pre.js and js-test-post.js) by testing the computed style width of the actual &lt;td&gt; elements (which should be 50, 250, and 200, I think).  This is preferred because pixel tests can differ between platforms, pixel tests are slower, and they take up more room on disk.  The js-test-* files also give you nice status output without you having to do much besides providing a &quot;console&quot; for them to use.

Also note that the &quot;bot status&quot; on bugs.webkit.org only checks that the patch builds, not that all of the layout tests pass.  You need to run the layout tests with your patch applied to make sure it doesn&apos;t cause any regressions:

./WebKitTools/Scripts/run-webkit-tests

Current layout test status for trunk:  &lt;http://build.webkit.org/&gt;

r- to address the above issues.  Thanks for working on this patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185023</commentid>
    <comment_count>6</comment_count>
      <attachid>47515</attachid>
    <who name="Dmitry Gorbik">socket.h</who>
    <bug_when>2010-01-27 04:01:31 -0800</bug_when>
    <thetext>Created attachment 47515
Proposed fix v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185024</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-27 04:07:23 -0800</bug_when>
    <thetext>Attachment 47515 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/ChangeLog:11:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 1


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185028</commentid>
    <comment_count>8</comment_count>
      <attachid>47516</attachid>
    <who name="Dmitry Gorbik">socket.h</who>
    <bug_when>2010-01-27 04:22:48 -0800</bug_when>
    <thetext>Created attachment 47516
Proposed fix v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185765</commentid>
    <comment_count>9</comment_count>
    <who name="Dmitry Gorbik">socket.h</who>
    <bug_when>2010-01-29 00:23:10 -0800</bug_when>
    <thetext>David, I do not think pixel or javascript tests are necessary here. Width of the cell is dumped in the RenderTree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185938</commentid>
    <comment_count>10</comment_count>
      <attachid>47516</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-01-29 12:56:39 -0800</bug_when>
    <thetext>Comment on attachment 47516
Proposed fix v2

&gt; Index: WebCore/rendering/RenderTableCell.cpp
&gt; -}
&gt; +}                   

Unneeded whitespace change here.

&gt; Index: LayoutTests/fast/table/col-width-span-expand-expected.txt
&gt; ===================================================================
&gt; --- LayoutTests/fast/table/col-width-span-expand-expected.txt	(revision 0)
&gt; +++ LayoutTests/fast/table/col-width-span-expand-expected.txt	(revision 0)
&gt; @@ -0,0 +1,35 @@
&gt; +layer at (0,0) size 800x600
&gt; +  RenderView at (0,0) size 800x600
&gt; +layer at (0,0) size 800x8
&gt; +  RenderBlock {HTML} at (0,0) size 800x8
&gt; +    RenderBody {BODY} at (8,8) size 784x0
&gt; +layer at (350,16) size 36x18
&gt; +  RenderBlock (positioned) {DIV} at (350,16) size 36x18 [color=#FF0000]
&gt; +    RenderText {#text} at (0,0) size 36x18
&gt; +      text run at (0,0) width 36: &quot;FAIL&quot;
&gt; +layer at (16,16) size 500x18
&gt; +  RenderTable {TABLE} at (16,16) size 500x18
&gt; +    RenderTableCol {COL} at (0,0) size 0x0
&gt; +    RenderTableCol {COL} at (0,0) size 0x0
&gt; +    RenderTableCol {COL} at (0,0) size 0x0
&gt; +    RenderTableCol {COL} at (0,0) size 0x0
&gt; +    RenderTableSection {TBODY} at (0,0) size 500x18
&gt; +      RenderTableRow {TR} at (0,0) size 500x18
&gt; +        RenderTableCell {TD} at (0,0) size 50x18 [bgcolor=#FFFFFF] [r=0 c=0 rs=1 cs=1]
&gt; +          RenderText {#text} at (0,0) size 4x18
&gt; +            text run at (0,0) width 4: &quot; &quot;
&gt; +        RenderTableCell {TD} at (50,0) size 250x18 [bgcolor=#FFFFFF] [r=0 c=1 rs=1 cs=2]
&gt; +          RenderText {#text} at (0,0) size 4x18
&gt; +            text run at (0,0) width 4: &quot; &quot;
&gt; +        RenderTableCell {TD} at (300,0) size 200x18 [bgcolor=#FFFFFF] [r=0 c=3 rs=1 cs=1]
&gt; +          RenderText {#text} at (0,0) size 4x18
&gt; +            text run at (0,0) width 4: &quot; &quot;
&gt; +layer at (16,40) size 469x36
&gt; +  RenderBlock (positioned) {DIV} at (16,40) size 469x36
&gt; +    RenderText {#text} at (0,0) size 469x18
&gt; +      text run at (0,0) width 469: &quot;Visual test: if you do not see the red word \&quot;FAIL\&quot; then your have passed. &quot;
&gt; +    RenderBR {BR} at (469,0) size 0x18
&gt; +    RenderInline {A} at (0,0) size 133x18 [color=#0000EE]
&gt; +      RenderText {#text} at (0,18) size 133x18
&gt; +        text run at (0,18) width 133: &quot;WebKit Bug #14858&quot;
&gt; +    RenderText {#text} at (0,0) size 0x0

(In reply to comment #9)
&gt; David, I do not think pixel or javascript tests are necessary here. Width of
&gt; the cell is dumped in the RenderTree.

You are correct about the widths appearing in the render tree dump, but unfortunately this is not the way text-only tests work in WebKit.  If you don&apos;t use layoutTestController.dumpAsText(), run-webkit-tests and DumpRenderTree expect that there are pixel test results.

This test should still be turned into a text-only test.  There are many examples of text-only tests in the tree.  Start by searching for &quot;dumpAsText()&quot; in another test that appears to check something similar.

We also still need a domain expert in rendering to review the change, although my opinion is that the WebCore changes look good.

r- to fix the whitespace change above and to make the layout test a text-only test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186109</commentid>
    <comment_count>11</comment_count>
      <attachid>47767</attachid>
    <who name="Dmitry Gorbik">socket.h</who>
    <bug_when>2010-01-30 03:55:10 -0800</bug_when>
    <thetext>Created attachment 47767
Proposed fix v2.1

I dont know what is better — to just put test table behind (z-index), or make it hidden by the use of css. I decided to place it behind, because I think that in case of &quot;hidden&quot; it may not be rendered at all in some cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186116</commentid>
    <comment_count>12</comment_count>
      <attachid>47767</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-01-30 09:29:44 -0800</bug_when>
    <thetext>Comment on attachment 47767
Proposed fix v2.1

The layout test is looking much better, but it doesn&apos;t quite match WebKit style for a text-only test.  Comments below.

&gt; Index: LayoutTests/fast/table/col-width-span-expand-expected.txt
&gt; ===================================================================
&gt; --- LayoutTests/fast/table/col-width-span-expand-expected.txt	(revision 0)
&gt; +++ LayoutTests/fast/table/col-width-span-expand-expected.txt	(revision 0)
&gt; @@ -0,0 +1,3 @@
&gt; +Test PASSED
&gt; +Â 	Â 	Â 
&gt; +WebKit Bug #14858

Can &lt;br&gt; tags be used in place of non-breaking spaces in the test?  The &quot;Â &quot; characters here are kind of odd.

&gt; Index: LayoutTests/fast/table/col-width-span-expand.html
&gt; ===================================================================
&gt; --- LayoutTests/fast/table/col-width-span-expand.html	(revision 0)
&gt; +++ LayoutTests/fast/table/col-width-span-expand.html	(revision 0)
&gt; @@ -0,0 +1,62 @@
&gt; +&lt;!DOCTYPE html&gt;
&gt; +&lt;html&gt;
&gt; +	&lt;head&gt;
&gt; +		&lt;title&gt;WebKit Bug 14858: col width ignored when not tied to a single cell&lt;/title&gt;
&gt; +		&lt;link href=&quot;http://www.w3.org/TR/REC-CSS2/tables.html#q4&quot; rel=&quot;help&quot; /&gt;
&gt; +    &lt;link href=&quot;../js/resources/js-test-style.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;

Please don&apos;t use tabs in the test case unless absolutely necessary.

Also, there&apos;s usually no need for lots of indentation, but if you do indent, please do so consistently (using only spaces).

You also want to include here:

    &lt;script src=&quot;../js/resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
    &lt;script src=&quot;../js/resources/js-test-post-function.js&quot;&gt;&lt;/script&gt;

&gt; +    &lt;script type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;
&gt; +      if (window.layoutTestController)
&gt; +        layoutTestController.dumpAsText();

Usually we use 4 spaces to indent JavaScript code, but don&apos;t indent it relative to the &lt;script&gt; tag.

&gt; +      function runTest()
&gt; +      {

Please add a description method call here (from js-test-pre.js):

    description(
    &quot;This tests &lt;a href=&apos;http://webkit.org/b/14858&apos;&gt;Bug 14858: &amp;lt;col&amp;gt; width ignored when not tied to a single cell&lt;/a&gt;.&quot;
    );

&gt; +        var testCell = document.getElementById(&apos;testCell&apos;);
&gt; +        var testTable = document.getElementById(&apos;testTable&apos;);

Good.

&gt; +        var result = document.getElementById(&apos;result&apos;);
&gt; +        var tdWidth = window.getComputedStyle(testCell).width;
&gt; +        var tableWidth = window.getComputedStyle(testTable).width;
&gt; +        if (tdWidth != &quot;250px&quot; || tableWidth != &quot;500px&quot;) {
&gt; +          result.style.color = &quot;red&quot;;
&gt; +          result.innerHTML = &quot;Test FAILED&quot;;
&gt; +        } else {
&gt; +          result.style.color = &quot;green&quot;;
&gt; +          result.innerHTML = &quot;Test PASSED&quot;;
&gt; +        }

Instead of doing this, please use the methods provided in js-test-pre.js:

    shouldBe(&quot;window.getComputedStyle(testCell).width&quot;, &quot;250px&quot;);
    shouldBe(&quot;window.getComputedStyle(testTable).width&quot;, &quot;500px&quot;);

Then you need to add this to finish the test:

    isSuccessfullyParsed();

&gt; +      }

Here you need to set the successfullyParsed variable which is used later:

    var successfullyParsed = true;

&gt; +    &lt;/script&gt;
&gt; +		&lt;style type=&quot;text/css&quot;&gt;
&gt; +div#testDiv {
&gt; +  left: 1em;
&gt; +  position: absolute;
&gt; +  top: 1em;
&gt; +  z-index: -1
&gt; +}
&gt; +table {border-spacing: 0}
&gt; +td {
&gt; +  background-color: white;
&gt; +  padding: 0
&gt; +}
&gt; +		&lt;/style&gt;

I don&apos;t think it&apos;s necessary to hide the table in the test.  If someone loads it in the browser, it should be easy to see that it passes.  You might consider making each table cell a different color.  Another best practice is to create a &quot;baseline&quot; table that has the same colors and expected widths as the test table so it&apos;s easy to verify that the test passes visually.

&gt; +	&lt;/head&gt;
&gt; +	&lt;body onload=&quot;runTest()&quot;&gt;
&gt; +		&lt;div id=&quot;result&quot;&gt;&lt;/div&gt;

Instead of the &quot;result&quot; div, use a &quot;description&quot; and &quot;console&quot; elements (which are used by js-test-pre.js):

    &lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
    &lt;div id=&quot;console&quot;&gt;&lt;/div&gt;

I would put the &quot;console&quot; div after the table, leaving the description at the top of the page.

&gt; +    &lt;div id=&quot;testDiv&quot;&gt;
&gt; +      &lt;table id=&quot;testTable&quot;&gt;
&gt; +        &lt;col width=&quot;50&quot; /&gt;
&gt; +        &lt;col width=&quot;100&quot; /&gt;
&gt; +        &lt;col width=&quot;150&quot; /&gt;
&gt; +        &lt;col width=&quot;200&quot; /&gt;
&gt; +        &lt;tbody&gt;
&gt; +          &lt;tr&gt;
&gt; +            &lt;td&gt;&amp;nbsp;&lt;/td&gt;
&gt; +            &lt;td id=&quot;testCell&quot; colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;
&gt; +            &lt;td&gt;&amp;nbsp;&lt;/td&gt;
&gt; +          &lt;/tr&gt;
&gt; +        &lt;/tbody&gt;
&gt; +      &lt;/table&gt;
&gt; +    &lt;/div&gt;
&gt; +    &lt;div id=&quot;info&quot;&gt;
&gt; +      &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=14858&quot;&gt;WebKit Bug #14858&lt;/a&gt;
&gt; +    &lt;/div&gt;

The &quot;info&quot; div will be replaced by the &quot;description&quot; paragraph above.

&gt; +	&lt;/body&gt;
&gt; +&lt;/html&gt;

I&apos;ll ask someone to review the WebCore part of the patch since it hasn&apos;t changed recently.

r- to fix up the layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186117</commentid>
    <comment_count>13</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-01-30 09:33:59 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Instead of doing this, please use the methods provided in js-test-pre.js:
&gt; 
&gt;     shouldBe(&quot;window.getComputedStyle(testCell).width&quot;, &quot;250px&quot;);
&gt;     shouldBe(&quot;window.getComputedStyle(testTable).width&quot;, &quot;500px&quot;);

Oops, I think you need to double-quote the expected values since they&apos;re also eval-ed:

    shouldBe(&quot;window.getComputedStyle(testCell).width&quot;, &apos;&quot;250px&quot;&apos;);
    shouldBe(&quot;window.getComputedStyle(testTable).width&quot;, &apos;&quot;500px&quot;&apos;);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186125</commentid>
    <comment_count>14</comment_count>
      <attachid>47772</attachid>
    <who name="Dmitry Gorbik">socket.h</who>
    <bug_when>2010-01-30 13:19:47 -0800</bug_when>
    <thetext>Created attachment 47772
Proposed fix v2.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186126</commentid>
    <comment_count>15</comment_count>
      <attachid>47773</attachid>
    <who name="Dmitry Gorbik">socket.h</who>
    <bug_when>2010-01-30 13:24:07 -0800</bug_when>
    <thetext>Created attachment 47773
Proposed fix v2.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186130</commentid>
    <comment_count>16</comment_count>
      <attachid>47775</attachid>
    <who name="Dmitry Gorbik">socket.h</who>
    <bug_when>2010-01-30 14:09:37 -0800</bug_when>
    <thetext>Created attachment 47775
Proposed fix v2.4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186541</commentid>
    <comment_count>17</comment_count>
      <attachid>47775</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-02-01 13:11:42 -0800</bug_when>
    <thetext>Comment on attachment 47775
Proposed fix v2.4

RenderObject* child = tableCol-&gt;nextSibling();

^^^^ That&apos;s not adequate for picking up the next col is it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193085</commentid>
    <comment_count>18</comment_count>
      <attachid>49318</attachid>
    <who name="Dmitry Gorbik">socket.h</who>
    <bug_when>2010-02-23 13:02:07 -0800</bug_when>
    <thetext>Created attachment 49318
proposed fix v2.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196187</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-04 13:10:22 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #12)
&gt; &gt; Instead of doing this, please use the methods provided in js-test-pre.js:
&gt; &gt; 
&gt; &gt;     shouldBe(&quot;window.getComputedStyle(testCell).width&quot;, &quot;250px&quot;);
&gt; &gt;     shouldBe(&quot;window.getComputedStyle(testTable).width&quot;, &quot;500px&quot;);
&gt; 
&gt; Oops, I think you need to double-quote the expected values since they&apos;re also
&gt; eval-ed:
&gt; 
&gt;     shouldBe(&quot;window.getComputedStyle(testCell).width&quot;, &apos;&quot;250px&quot;&apos;);
&gt;     shouldBe(&quot;window.getComputedStyle(testTable).width&quot;, &apos;&quot;500px&quot;&apos;);

There is also shouldBeEqualToString() which solves this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196189</commentid>
    <comment_count>20</comment_count>
      <attachid>49318</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-04 13:11:37 -0800</bug_when>
    <thetext>Comment on attachment 49318
proposed fix v2.5

Is it a bug that the text dump makes the rows un-equal?

1 Two rows of cells should look identical.
 2 left	middle	right
 3 left	middle		right</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>196214</commentid>
    <comment_count>21</comment_count>
    <who name="Dmitry Gorbik">socket.h</who>
    <bug_when>2010-03-04 13:57:20 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 49318 [details])
&gt; Is it a bug that the text dump makes the rows un-equal?
&gt; 
&gt; 1 Two rows of cells should look identical.
&gt;  2 left    middle    right
&gt;  3 left    middle        right

Different number of cells. So the empty cell adds spaces in case of four of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202128</commentid>
    <comment_count>22</comment_count>
      <attachid>49318</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-03-19 18:18:55 -0700</bug_when>
    <thetext>Comment on attachment 49318
proposed fix v2.5

This looks great!  Just a couple nits below:

&gt; Index: WebCore/ChangeLog
&gt; +        Fixed width calculation for cells with span when &lt;col&gt; is defined

You need to include a link to the bug in the ChangeLog entry.

&gt; +        * rendering/RenderTableCell.cpp:
&gt; +        (WebCore::RenderTableCell::styleOrColWidth): added the calculation of cell width
&gt; +        in case of &lt;col&gt; defined and span&gt;1.

Nit:  Change &quot;span&gt;1&quot; to &quot;span &gt; 1&quot;.

&gt; Index: WebCore/rendering/RenderTable.cpp
&gt; +    RenderTableCol* colElem = toRenderTableCol(child);
&gt; +    while (colElem) {
&gt; +        int span = colElem-&gt;span();
&gt; +        if (!colElem-&gt;firstChild()) {
&gt; +            int startCol = cCol;
&gt; +            int endCol = cCol + span - 1;
&gt; +            cCol += span;
&gt; +            if (cCol &gt; col) {
&gt; +                if (startEdge)
&gt; +                    *startEdge = startCol == col;
&gt; +                if (endEdge)
&gt; +                    *endEdge = endCol == col;
&gt; +                return colElem;
&gt; +            }
&gt; +        }
&gt; +        colElem = nextColElement(colElem);
&gt; +        if (!colElem)
&gt;              break;
&gt;      }

You can actually leave off the final &quot;if (!colElem) break;&quot; statements in the while loop since the next iteration through the loop will catch this condition and then return 0.

&gt; Index: WebCore/rendering/RenderTableCell.cpp
&gt; ===================================================================
&gt; --- WebCore/rendering/RenderTableCell.cpp	(revision 53844)
&gt; +++ WebCore/rendering/RenderTableCell.cpp	(working copy)
&gt; @@ -83,18 +83,42 @@ void RenderTableCell::updateFromElement(
&gt;  Length RenderTableCell::styleOrColWidth() const
&gt;  {
&gt;      Length w = style()-&gt;width();
&gt; -    if (colSpan() &gt; 1 || !w.isAuto())
&gt; +    if (!w.isAuto())
&gt;          return w;
&gt; +
&gt;      RenderTableCol* tableCol = table()-&gt;colElement(col());
&gt; +
&gt;      if (tableCol) {
&gt; -        w = tableCol-&gt;style()-&gt;width();
&gt; -        
&gt; +        int colSpanCount = colSpan();
&gt; +
&gt; +        Length colWidthSum = Length(0, Fixed);
&gt; +        for (int i = 1; i &lt;= colSpanCount; i++) {
&gt; +            Length colWidth = tableCol-&gt;style()-&gt;width();
&gt; +
&gt; +            // Percentage value should be returned only for colSpan=1.
&gt; +            // Otherwise we return original width for the cell.

Why is this true?  Is this part of the standard?  Is this covered by an existing test case?  (If not, you need to add a test case for this condition as well.)

Nit:  &quot;colSpan=1&quot; should be &quot;colSpan == 1&quot; to be clearer that it&apos;s an equality check.

&gt; +            if (!colWidth.isFixed()) {
&gt; +                if (colSpanCount &gt; 1)
&gt; +                    return w;
&gt; +                return colWidth;
&gt; +            }
&gt; Index: LayoutTests/ChangeLog
&gt; +2010-01-27  Dmitry Gorbik  &lt;socket.h@gmail.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Fixed width calculation for cells with span when &lt;col&gt; is defined

You need to include a link to the bug in the ChangeLog entry.

&gt; Index: LayoutTests/fast/table/col-width-span-expand.html
&gt; +	&lt;head&gt;

There is a tab on this line that should be 8 spaces.

r- to answer the question about the new code in RenderTableCell::styleOrColWidth().

Everything else looks good.  An explanation for the code in RenderTableCell::styleOrColWidth() and/or a layout test that covers that case will get an r+.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202201</commentid>
    <comment_count>23</comment_count>
    <who name="Dmitry Gorbik">socket.h</who>
    <bug_when>2010-03-20 03:20:50 -0700</bug_when>
    <thetext>David, that piece of code just falls back to previous behavour (before the patch). After it I do calculations based on &quot;fixed&quot; width, so if I dont return, that will crash (and crashes on existing test cases). I couldnt find in specifications what we do if we have to sum different types — fixed and absolute, so I do it the way it does not collide with previous tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202309</commentid>
    <comment_count>24</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-03-21 12:35:42 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; David, that piece of code just falls back to previous behavour (before the
&gt; patch). After it I do calculations based on &quot;fixed&quot; width, so if I dont return,
&gt; that will crash (and crashes on existing test cases). I couldnt find in
&gt; specifications what we do if we have to sum different types — fixed and
&gt; absolute, so I do it the way it does not collide with previous tests.

Okay, I&apos;ll take another look at the old and new logic.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202310</commentid>
    <comment_count>25</comment_count>
      <attachid>49318</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-03-21 12:44:37 -0700</bug_when>
    <thetext>Comment on attachment 49318
proposed fix v2.5

(In reply to comment #22)
&gt; (From update of attachment 49318 [details])
&gt; This looks great!  Just a couple nits below:
&gt; 
&gt; &gt; Index: WebCore/ChangeLog
&gt; &gt; +        Fixed width calculation for cells with span when &lt;col&gt; is defined
&gt; 
&gt; You need to include a link to the bug in the ChangeLog entry.
&gt; 
&gt; &gt; +        * rendering/RenderTableCell.cpp:
&gt; &gt; +        (WebCore::RenderTableCell::styleOrColWidth): added the calculation of cell width
&gt; &gt; +        in case of &lt;col&gt; defined and span&gt;1.
&gt; 
&gt; Nit:  Change &quot;span&gt;1&quot; to &quot;span &gt; 1&quot;.
&gt; 
&gt; &gt; Index: WebCore/rendering/RenderTable.cpp
&gt; &gt; +    RenderTableCol* colElem = toRenderTableCol(child);
&gt; &gt; +    while (colElem) {
&gt; &gt; +        int span = colElem-&gt;span();
&gt; &gt; +        if (!colElem-&gt;firstChild()) {
&gt; &gt; +            int startCol = cCol;
&gt; &gt; +            int endCol = cCol + span - 1;
&gt; &gt; +            cCol += span;
&gt; &gt; +            if (cCol &gt; col) {
&gt; &gt; +                if (startEdge)
&gt; &gt; +                    *startEdge = startCol == col;
&gt; &gt; +                if (endEdge)
&gt; &gt; +                    *endEdge = endCol == col;
&gt; &gt; +                return colElem;
&gt; &gt; +            }
&gt; &gt; +        }
&gt; &gt; +        colElem = nextColElement(colElem);
&gt; &gt; +        if (!colElem)
&gt; &gt;              break;
&gt; &gt;      }
&gt; 
&gt; You can actually leave off the final &quot;if (!colElem) break;&quot; statements in the
&gt; while loop since the next iteration through the loop will catch this condition
&gt; and then return 0.
&gt; 
&gt; &gt; Index: WebCore/rendering/RenderTableCell.cpp
&gt; &gt; ===================================================================
&gt; &gt; --- WebCore/rendering/RenderTableCell.cpp	(revision 53844)
&gt; &gt; +++ WebCore/rendering/RenderTableCell.cpp	(working copy)
&gt; &gt; @@ -83,18 +83,42 @@ void RenderTableCell::updateFromElement(
&gt; &gt;  Length RenderTableCell::styleOrColWidth() const
&gt; &gt;  {
&gt; &gt;      Length w = style()-&gt;width();
&gt; &gt; -    if (colSpan() &gt; 1 || !w.isAuto())
&gt; &gt; +    if (!w.isAuto())
&gt; &gt;          return w;
&gt; &gt; +
&gt; &gt;      RenderTableCol* tableCol = table()-&gt;colElement(col());
&gt; &gt; +
&gt; &gt;      if (tableCol) {
&gt; &gt; -        w = tableCol-&gt;style()-&gt;width();
&gt; &gt; -        
&gt; &gt; +        int colSpanCount = colSpan();
&gt; &gt; +
&gt; &gt; +        Length colWidthSum = Length(0, Fixed);
&gt; &gt; +        for (int i = 1; i &lt;= colSpanCount; i++) {
&gt; &gt; +            Length colWidth = tableCol-&gt;style()-&gt;width();
&gt; &gt; +
&gt; &gt; +            // Percentage value should be returned only for colSpan=1.
&gt; &gt; +            // Otherwise we return original width for the cell.
&gt; 
&gt; Why is this true?  Is this part of the standard?  Is this covered by an
&gt; existing test case?  (If not, you need to add a test case for this condition as
&gt; well.)

I reviewed the new logic again per Comment #23, and I agree it preserves the previous behavior, so this is no longer an issue.

&gt; Nit:  &quot;colSpan=1&quot; should be &quot;colSpan == 1&quot; to be clearer that it&apos;s an equality
&gt; check.
&gt; 
&gt; &gt; +            if (!colWidth.isFixed()) {
&gt; &gt; +                if (colSpanCount &gt; 1)
&gt; &gt; +                    return w;
&gt; &gt; +                return colWidth;
&gt; &gt; +            }
&gt; &gt; Index: LayoutTests/ChangeLog
&gt; &gt; +2010-01-27  Dmitry Gorbik  &lt;socket.h@gmail.com&gt;
&gt; &gt; +
&gt; &gt; +        Reviewed by NOBODY (OOPS!).
&gt; &gt; +
&gt; &gt; +        Fixed width calculation for cells with span when &lt;col&gt; is defined
&gt; 
&gt; You need to include a link to the bug in the ChangeLog entry.
&gt; 
&gt; &gt; Index: LayoutTests/fast/table/col-width-span-expand.html
&gt; &gt; +	&lt;head&gt;
&gt; 
&gt; There is a tab on this line that should be 8 spaces.

r=me!  I&apos;ll clean up the nits above and land this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202339</commentid>
    <comment_count>26</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-03-21 15:19:58 -0700</bug_when>
    <thetext>Committed r56319: &lt;http://trac.webkit.org/changeset/56319&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202341</commentid>
    <comment_count>27</comment_count>
    <who name="Dmitry Gorbik">socket.h</who>
    <bug_when>2010-03-21 15:28:47 -0700</bug_when>
    <thetext>Thanks Dave, I was about to fix all issues, just waited for your response about the logic.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>18980</attachid>
            <date>2008-02-06 23:34:42 -0800</date>
            <delta_ts>2008-02-06 23:34:42 -0800</delta_ts>
            <desc>Test case</desc>
            <filename>14858.html</filename>
            <type>text/html</type>
            <size>669</size>
            <attacher name="Chasen Le Hara">rendezvouscp</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgoJPGhlYWQ+CgkJPHRpdGxlPldlYktpdCBCdWcgMTQ4NTg6
IGNvbCB3aWR0aCBpZ25vcmVkIHdoZW4gbm90IHRpZWQgdG8gYSBzaW5nbGUgY2VsbDwvdGl0bGU+
CgkJPGxpbmsgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLUNTUzIvdGFibGVzLmh0bWwj
cTQiIHJlbD0iaGVscCIgLz4KCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgpkaXYsIHRhYmxlIHsK
CWxlZnQ6IDFlbTsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXRvcDogMWVtCn0KZGl2IHsKCWNvbG9y
OiByZWQ7CglsZWZ0OiAzNTBweAp9CnRhYmxlIHtib3JkZXItc3BhY2luZzogMH0KdGQgewoJYmFj
a2dyb3VuZC1jb2xvcjogd2hpdGU7CglwYWRkaW5nOiAwCn0KCQk8L3N0eWxlPgoJPC9oZWFkPgoJ
PGJvZHk+CgkJPGRpdj5GQUlMPC9kaXY+CgkJPHRhYmxlPgoJCQk8Y29sIHdpZHRoPSI1MCIgLz4K
CQkJPGNvbCB3aWR0aD0iMTAwIiAvPgoJCQk8Y29sIHdpZHRoPSIxNTAiIC8+CgkJCTxjb2wgd2lk
dGg9IjIwMCIgLz4KCQkJPHRib2R5PgoJCQkJPHRyPgoJCQkJCTx0ZD4mbmJzcDs8L3RkPgoJCQkJ
CTx0ZCBjb2xzcGFuPSIyIj4mbmJzcDs8L3RkPgoJCQkJCTx0ZD4mbmJzcDs8L3RkPgoJCQkJPC90
cj4KCQkJPC90Ym9keT4KCQk8L3RhYmxlPgoJPC9ib2R5Pgo8L2h0bWw+
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47295</attachid>
            <date>2010-01-24 04:59:56 -0800</date>
            <delta_ts>2010-01-27 04:01:31 -0800</delta_ts>
            <desc>Proposed fix</desc>
            <filename>colwidthfix.txt</filename>
            <type>text/plain</type>
            <size>4510</size>
            <attacher name="Dmitry Gorbik">socket.h</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1Mzc3NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDEtMjQgIERtaXRyeSBHb3JiaWsgIDxzb2NrZXQuaEBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Rml4ZWQgd2lkdGggY2FsY3VsYXRpb24gZm9yIGNlbGxzIHdpdGggc3BhbiB3aGVuIDxjb2w+IGlz
IGRlZmluZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0ODU4CisKKyAgICAgICAgVGVzdDogZmFzdC90YWJsZS9jb2wtd2lkdGgtc3Bhbi1leHBhbmQu
aHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnN0eWxlT3JDb2xXaWR0aCk6CisKIDIwMTAtMDEt
MjMgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBNYWNpZWogU3RhY2hvd2lhay4KSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmNwcAkocmV2aXNpb24gNTM1NTMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNl
bGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSwyNCArNzksNTMgQEAgdm9pZCBSZW5kZXJUYWJs
ZUNlbGw6OnVwZGF0ZUZyb21FbGVtZW50KAogICAgICAgICB9CiAgICAgfQogfQotCisgICAgCiBM
ZW5ndGggUmVuZGVyVGFibGVDZWxsOjpzdHlsZU9yQ29sV2lkdGgoKSBjb25zdAogewogICAgIExl
bmd0aCB3ID0gc3R5bGUoKS0+d2lkdGgoKTsKLSAgICBpZiAoY29sU3BhbigpID4gMSB8fCAhdy5p
c0F1dG8oKSkKKyAgICBpZiAoIXcuaXNBdXRvKCkpCiAgICAgICAgIHJldHVybiB3OworICAgIAog
ICAgIFJlbmRlclRhYmxlQ29sKiB0YWJsZUNvbCA9IHRhYmxlKCktPmNvbEVsZW1lbnQoY29sKCkp
OwogICAgIGlmICh0YWJsZUNvbCkgewotICAgICAgICB3ID0gdGFibGVDb2wtPnN0eWxlKCktPndp
ZHRoKCk7CisgICAgICAgIGludCBpID0gMTsKKyAgICAgICAgaW50IGlDb2xTcGFuID0gY29sU3Bh
bigpOworICAgICAgICAKKyAgICAgICAgTGVuZ3RoIGNvbFdpZHRoU3VtID0gTGVuZ3RoKDAsIEZp
eGVkKTsKKyAgICAgICAgd2hpbGUgKGkgPD0gaUNvbFNwYW4pIHsKKyAgICAgICAgICAgIExlbmd0
aCBjb2xXaWR0aCA9IHRhYmxlQ29sLT5zdHlsZSgpLT53aWR0aCgpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICAvLyBQZXJjZW50YWdlIHZhbHVlIHNob3VsZCBiZSByZXR1cm5lZCBvbmx5IGZv
ciBjb2xTcGFuPTEKKyAgICAgICAgICAgIC8vIE90aGVyd2lzZSB3ZSByZXR1cm4gb3JpZ2luYWwg
d2lkdGggZm9yIHRoZSBjZWxsCisgICAgICAgICAgICBpZiAoIWNvbFdpZHRoLmlzRml4ZWQoKSkg
eworICAgICAgICAgICAgICAgIGlmIChpQ29sU3BhbiA+IDEpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiB3OworICAgICAgICAgICAgICAgIHJldHVybiBjb2xXaWR0aDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgY29sV2lkdGhTdW0gPSBMZW5ndGgoY29sV2lk
dGhTdW0udmFsdWUoKSArIGNvbFdpZHRoLnZhbHVlKCksIEZpeGVkKTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgUmVuZGVyT2JqZWN0ICogY2hpbGQgPSB0YWJsZUNvbC0+bmV4dFNpYmxpbmco
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gSWYgbm8gbmV4dCA8Y29sPiB0YWcgZm91
bmQgZm9yIHRoZSBzcGFuIHdlIGp1c3QgcmV0dXJuIHdoYXQgd2UgaGF2ZSBmb3Igbm93CisgICAg
ICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQtPmlzVGFibGVDb2woKSkKKyAgICAgICAgICAgICAg
ICB0YWJsZUNvbCA9IHRvUmVuZGVyVGFibGVDb2woY2hpbGQpOyAgCisgICAgICAgICAgICBlbHNl
IAorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaSsrOworICAgICAgICB9CiAg
ICAgICAgIAogICAgICAgICAvLyBDb2x1bW4gd2lkdGhzIHNwZWNpZmllZCBvbiA8Y29sPiBhcHBs
eSB0byB0aGUgYm9yZGVyIGJveCBvZiB0aGUgY2VsbC4KICAgICAgICAgLy8gUGVyY2VudGFnZXMg
ZG9uJ3QgbmVlZCB0byBiZSBoYW5kbGVkIHNpbmNlIHRoZXkncmUgYWx3YXlzIHRyZWF0ZWQgdGhp
cyB3YXkgKGV2ZW4gd2hlbiBzcGVjaWZpZWQgb24gdGhlIGNlbGxzKS4KICAgICAgICAgLy8gU2Vl
IEJ1Z3ppbGxhIGJ1ZyA4MTI2IGZvciBkZXRhaWxzLgotICAgICAgICBpZiAody5pc0ZpeGVkKCkg
JiYgdy52YWx1ZSgpID4gMCkKLSAgICAgICAgICAgIHcgPSBMZW5ndGgobWF4KDAsIHcudmFsdWUo
KSAtIGJvcmRlckxlZnQoKSAtIGJvcmRlclJpZ2h0KCkgLSBwYWRkaW5nTGVmdCgpIC0gcGFkZGlu
Z1JpZ2h0KCkpLCBGaXhlZCk7CisgICAgICAgIGlmIChjb2xXaWR0aFN1bS5pc0ZpeGVkKCkgJiYg
Y29sV2lkdGhTdW0udmFsdWUoKSA+IDApCisgICAgICAgICAgICBjb2xXaWR0aFN1bSA9IExlbmd0
aChtYXgoMCwgY29sV2lkdGhTdW0udmFsdWUoKSAtIGJvcmRlckxlZnQoKSAtIGJvcmRlclJpZ2h0
KCkgLSBwYWRkaW5nTGVmdCgpIC0gcGFkZGluZ1JpZ2h0KCkpLCBGaXhlZCk7CisgICAgICAgIHJl
dHVybiBjb2xXaWR0aFN1bTsKICAgICB9CisgICAgCiAgICAgcmV0dXJuIHc7CiB9CisgICAgCiAK
IHZvaWQgUmVuZGVyVGFibGVDZWxsOjpjYWxjUHJlZldpZHRocygpCiB7CkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA1Mzc3NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEyIEBACisyMDEwLTAxLTI0ICBEbWl0cnkgR29yYmlrICA8c29ja2V0LmhAZ21haWwu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZp
eGVkIHdpZHRoIGNhbGN1bGF0aW9uIGZvciBjZWxscyB3aXRoIHNwYW4gd2hlbiA8Y29sPiBpcyBk
ZWZpbmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDg1OCAgICAgICAgIAorCisgICAgICAgICogZmFzdC90YWJsZS9jb2wtd2lkdGgtc3Bhbi1leHBh
bmQuaHRtbDogQWRkZWQuCisKIDIwMTAtMDEtMjMgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hvd2lhay4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvdGFibGUvY29sLXdpZHRoLXNwYW4tZXhwYW5kLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90YWJsZS9jb2wtd2lkdGgtc3Bhbi1leHBhbmQuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvdGFibGUvY29sLXdpZHRoLXNwYW4tZXhw
YW5kLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDAgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+CisJPGhlYWQ+CisJCTx0aXRsZT5XZWJLaXQgQnVnIDE0ODU4OiBjb2wgd2lkdGggaWdu
b3JlZCB3aGVuIG5vdCB0aWVkIHRvIGEgc2luZ2xlIGNlbGw8L3RpdGxlPgorCQk8bGluayBocmVm
PSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtQ1NTMi90YWJsZXMuaHRtbCNxNCIgcmVsPSJoZWxw
IiAvPgorCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorZGl2LCB0YWJsZSB7CisJbGVmdDogMWVt
OworCXBvc2l0aW9uOiBhYnNvbHV0ZTsKKwl0b3A6IDFlbQorfQorZGl2IHsKKwljb2xvcjogcmVk
OworCWxlZnQ6IDI1MHB4Cit9Cit0YWJsZSB7Ym9yZGVyLXNwYWNpbmc6IDB9Cit0ZCB7CisJYmFj
a2dyb3VuZC1jb2xvcjogd2hpdGU7CisJcGFkZGluZzogMAorfQorCQk8L3N0eWxlPgorCTwvaGVh
ZD4KKwk8Ym9keT4KKwkJPGRpdj5GQUlMPC9kaXY+CisJCTx0YWJsZT4KKwkJCTxjb2wgd2lkdGg9
IjIwIiAvPgorCQkJPGNvbCB3aWR0aD0iNDAiIC8+CisJCQk8Y29sIHdpZHRoPSI4MCIgLz4KKwkJ
CTxjb2wgd2lkdGg9IjE2MCIgLz4KKwkJCTx0Ym9keT4KKwkJCQk8dHI+CisJCQkJCTx0ZD4mbmJz
cDs8L3RkPgorCQkJCQk8dGQgY29sc3Bhbj0iMiI+Jm5ic3A7PC90ZD4KKwkJCQkJPHRkPiZuYnNw
OzwvdGQ+CisJCQkJPC90cj4KKwkJCTwvdGJvZHk+CisJCTwvdGFibGU+CisJPC9ib2R5PgorPC9o
dG1sPgorCg==
</data>
<flag name="review"
          id="29709"
          type_id="1"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47515</attachid>
            <date>2010-01-27 04:01:31 -0800</date>
            <delta_ts>2010-01-27 04:22:48 -0800</delta_ts>
            <desc>Proposed fix v2</desc>
            <filename>mypatch.txt</filename>
            <type>text/plain</type>
            <size>6912</size>
            <attacher name="Dmitry Gorbik">socket.h</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzkxOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDEtMjcgIERtaXRyeSBHb3JiaWsgIDxzb2NrZXQuaEBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Rml4ZWQgd2lkdGggY2FsY3VsYXRpb24gZm9yIGNlbGxzIHdpdGggc3BhbiB3aGVuIDxjb2w+IGlz
IGRlZmluZWQKKworICAgICAgICBUZXN0OiBmYXN0L3RhYmxlL2NvbC13aWR0aC1zcGFuLWV4cGFu
ZC5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6c3R5bGVPckNvbFdpZHRoKTogYWRkZWQgdGhl
IGNhbGN1bGF0aW9uIG9mIHRoZSBjZWxsCisJCQkJd2lkdGggaW4gY2FzZSBvZiA8Y29sPiBkZWZp
bmVkIGFuZCBzcGFuPjEuCisKIDIwMTAtMDEtMjcgIE1hdHQgUGVycnkgIDxtcGNvbXBsZXRlQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkocmV2aXNpb24gNTM4NDQpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Mywy
MCArODMsNDUgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnVwZGF0ZUZyb21FbGVtZW50KAogTGVu
Z3RoIFJlbmRlclRhYmxlQ2VsbDo6c3R5bGVPckNvbFdpZHRoKCkgY29uc3QKIHsKICAgICBMZW5n
dGggdyA9IHN0eWxlKCktPndpZHRoKCk7Ci0gICAgaWYgKGNvbFNwYW4oKSA+IDEgfHwgIXcuaXNB
dXRvKCkpCisgICAgaWYgKCF3LmlzQXV0bygpKQogICAgICAgICByZXR1cm4gdzsKKyAgICAKICAg
ICBSZW5kZXJUYWJsZUNvbCogdGFibGVDb2wgPSB0YWJsZSgpLT5jb2xFbGVtZW50KGNvbCgpKTsK
ICAgICBpZiAodGFibGVDb2wpIHsKLSAgICAgICAgdyA9IHRhYmxlQ29sLT5zdHlsZSgpLT53aWR0
aCgpOworICAgICAgICBpbnQgY29sU3BhbkNvdW50ID0gY29sU3BhbigpOworICAgICAgICAgICAg
CisgICAgICAgIExlbmd0aCBjb2xXaWR0aFN1bSA9IExlbmd0aCgwLCBGaXhlZCk7CisgICAgICAg
IGZvciAoaW50IGkgPSAxOyBpIDw9IGNvbFNwYW5Db3VudDsgaSsrKSB7CisgICAgICAgICAgICBM
ZW5ndGggY29sV2lkdGggPSB0YWJsZUNvbC0+c3R5bGUoKS0+d2lkdGgoKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgLy8gUGVyY2VudGFnZSB2YWx1ZSBzaG91bGQgYmUgcmV0dXJuZWQgb25s
eSBmb3IgY29sU3Bhbj0xLgorICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHdlIHJldHVybiBvcmln
aW5hbCB3aWR0aCBmb3IgdGhlIGNlbGwuCisgICAgICAgICAgICBpZiAoIWNvbFdpZHRoLmlzRml4
ZWQoKSkgeworICAgICAgICAgICAgICAgIGlmIChjb2xTcGFuQ291bnQgPiAxKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdzsKKyAgICAgICAgICAgICAgICByZXR1cm4gY29sV2lkdGg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNvbFdpZHRoU3VtID0gTGVu
Z3RoKGNvbFdpZHRoU3VtLnZhbHVlKCkgKyBjb2xXaWR0aC52YWx1ZSgpLCBGaXhlZCk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIFJlbmRlck9iamVjdCogY2hpbGQgPSB0YWJsZUNvbC0+bmV4
dFNpYmxpbmcoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gSWYgbm8gbmV4dCA8Y29s
PiB0YWcgZm91bmQgZm9yIHRoZSBzcGFuIHdlIGp1c3QgcmV0dXJuIHdoYXQgd2UgaGF2ZSBmb3Ig
bm93LgorICAgICAgICAgICAgaWYgKCFjaGlsZCB8fCAhY2hpbGQtPmlzVGFibGVDb2woKSkKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHRhYmxlQ29sID0gdG9SZW5kZXJUYWJs
ZUNvbChjaGlsZCk7ICAKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gQ29sdW1uIHdp
ZHRocyBzcGVjaWZpZWQgb24gPGNvbD4gYXBwbHkgdG8gdGhlIGJvcmRlciBib3ggb2YgdGhlIGNl
bGwuCiAgICAgICAgIC8vIFBlcmNlbnRhZ2VzIGRvbid0IG5lZWQgdG8gYmUgaGFuZGxlZCBzaW5j
ZSB0aGV5J3JlIGFsd2F5cyB0cmVhdGVkIHRoaXMgd2F5IChldmVuIHdoZW4gc3BlY2lmaWVkIG9u
IHRoZSBjZWxscykuCiAgICAgICAgIC8vIFNlZSBCdWd6aWxsYSBidWcgODEyNiBmb3IgZGV0YWls
cy4KLSAgICAgICAgaWYgKHcuaXNGaXhlZCgpICYmIHcudmFsdWUoKSA+IDApCi0gICAgICAgICAg
ICB3ID0gTGVuZ3RoKG1heCgwLCB3LnZhbHVlKCkgLSBib3JkZXJMZWZ0KCkgLSBib3JkZXJSaWdo
dCgpIC0gcGFkZGluZ0xlZnQoKSAtIHBhZGRpbmdSaWdodCgpKSwgRml4ZWQpOworICAgICAgICBp
ZiAoY29sV2lkdGhTdW0uaXNGaXhlZCgpICYmIGNvbFdpZHRoU3VtLnZhbHVlKCkgPiAwKQorICAg
ICAgICAgICAgY29sV2lkdGhTdW0gPSBMZW5ndGgobWF4KDAsIGNvbFdpZHRoU3VtLnZhbHVlKCkg
LSBib3JkZXJMZWZ0KCkgLSBib3JkZXJSaWdodCgpIC0gcGFkZGluZ0xlZnQoKSAtIHBhZGRpbmdS
aWdodCgpKSwgRml4ZWQpOworICAgICAgICByZXR1cm4gY29sV2lkdGhTdW07CiAgICAgfQorICAg
IAogICAgIHJldHVybiB3OwotfQorfSAgICAgICAgICAgICAgICAgICAKIAogdm9pZCBSZW5kZXJU
YWJsZUNlbGw6OmNhbGNQcmVmV2lkdGhzKCkKIHsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUzOTE4KQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTAtMDEtMjcgIERtaXRyeSBHb3JiaWsgIDxzb2NrZXQuaEBnbWFpbC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZWQgd2lkdGggY2Fs
Y3VsYXRpb24gZm9yIGNlbGxzIHdpdGggc3BhbiB3aGVuIDxjb2w+IGlzIGRlZmluZWQKKworICAg
ICAgICAqIGZhc3QvdGFibGUvY29sLXdpZHRoLXNwYW4tZXhwYW5kLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC90YWJsZS9jb2wtd2lkdGgtc3Bhbi1leHBhbmQuaHRtbDogQWRk
ZWQuCisKIDIwMTAtMDEtMjcgIE1hdHQgUGVycnkgIDxtcGNvbXBsZXRlQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvdGFibGUvY29sLXdpZHRoLXNwYW4tZXhwYW5kLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3RhYmxlL2NvbC13aWR0aC1zcGFuLWV4cGFuZC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RhYmxlL2NvbC13aWR0aC1zcGFu
LWV4cGFuZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKK2xheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYw
MAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4OAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAs
MCkgc2l6ZSA4MDB4OAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDAK
K2xheWVyIGF0ICgzNTAsMTYpIHNpemUgMzZ4MTgKKyAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQp
IHtESVZ9IGF0ICgzNTAsMTYpIHNpemUgMzZ4MTggW2NvbG9yPSNGRjAwMDBdCisgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzZ4MTgKKyAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDM2OiAiRkFJTCIKK2xheWVyIGF0ICgxNiwxNikgc2l6ZSA1MDB4MTgKKyAgUmVuZGVy
VGFibGUge1RBQkxFfSBhdCAoMTYsMTYpIHNpemUgNTAweDE4CisgICAgUmVuZGVyVGFibGVDb2wg
e0NPTH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICBSZW5kZXJUYWJsZUNvbCB7Q09MfSBhdCAoMCww
KSBzaXplIDB4MAorICAgIFJlbmRlclRhYmxlQ29sIHtDT0x9IGF0ICgwLDApIHNpemUgMHgwCisg
ICAgUmVuZGVyVGFibGVDb2wge0NPTH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICBSZW5kZXJUYWJs
ZVNlY3Rpb24ge1RCT0RZfSBhdCAoMCwwKSBzaXplIDUwMHgxOAorICAgICAgUmVuZGVyVGFibGVS
b3cge1RSfSBhdCAoMCwwKSBzaXplIDUwMHgxOAorICAgICAgICBSZW5kZXJUYWJsZUNlbGwge1RE
fSBhdCAoMCwwKSBzaXplIDUweDE4IFtiZ2NvbG9yPSNGRkZGRkZdIFtyPTAgYz0wIHJzPTEgY3M9
MV0KKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0eDE4CisgICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVyVGFi
bGVDZWxsIHtURH0gYXQgKDUwLDApIHNpemUgMjUweDE4IFtiZ2NvbG9yPSNGRkZGRkZdIFtyPTAg
Yz0xIHJzPTEgY3M9Ml0KKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSA0eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0OiAiICIKKyAgICAg
ICAgUmVuZGVyVGFibGVDZWxsIHtURH0gYXQgKDMwMCwwKSBzaXplIDIwMHgxOCBbYmdjb2xvcj0j
RkZGRkZGXSBbcj0wIGM9MyBycz0xIGNzPTFdCisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgwLDApIHNpemUgNHgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
NDogIiAiCitsYXllciBhdCAoMTYsNDApIHNpemUgNDY5eDM2CisgIFJlbmRlckJsb2NrIChwb3Np
dGlvbmVkKSB7RElWfSBhdCAoMTYsNDApIHNpemUgNDY5eDM2CisgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDApIHNpemUgNDY5eDE4CisgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0
Njk6ICJWaXN1YWwgdGVzdDogaWYgeW91IGRvIG5vdCBzZWUgdGhlIHJlZCB3b3JkIFwiRkFJTFwi
IHRoZW4geW91ciBoYXZlIHBhc3NlZC4gIgorICAgIFJlbmRlckJSIHtCUn0gYXQgKDQ2OSwwKSBz
aXplIDB4MTgKKyAgICBSZW5kZXJJbmxpbmUge0F9IGF0ICgwLDApIHNpemUgMTMzeDE4IFtjb2xv
cj0jMDAwMEVFXQorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDE4KSBzaXplIDEzM3gx
OAorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggMTMzOiAiV2ViS2l0IEJ1ZyAjMTQ4
NTgiCisgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L3RhYmxlL2NvbC13aWR0aC1zcGFuLWV4cGFuZC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvdGFibGUvY29sLXdpZHRoLXNwYW4tZXhwYW5kLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RhYmxlL2NvbC13aWR0aC1zcGFuLWV4cGFu
ZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorCTxoZWFkPgorCQk8dGl0bGU+V2ViS2l0IEJ1ZyAxNDg1ODogY29sIHdpZHRoIGlnbm9y
ZWQgd2hlbiBub3QgdGllZCB0byBhIHNpbmdsZSBjZWxsPC90aXRsZT4KKwkJPGxpbmsgaHJlZj0i
aHR0cDovL3d3dy53My5vcmcvVFIvUkVDLUNTUzIvdGFibGVzLmh0bWwjcTQiIHJlbD0iaGVscCIg
Lz4KKyAgICA8bGluayBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIHJl
bD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorCQk8c3R5bGUgdHlwZT0idGV4dC9jc3Mi
PgorZGl2LCB0YWJsZSB7CisJbGVmdDogMWVtOworCXBvc2l0aW9uOiBhYnNvbHV0ZTsKKwl0b3A6
IDFlbQorfQorZGl2IHsKKwljb2xvcjogcmVkOworCWxlZnQ6IDM1MHB4Cit9CitkaXYjaW5mbyB7
CisgIGxlZnQ6IDFlbTsKKyAgY29sb3I6IGJsYWNrOworICB0b3A6IDQwcHg7Cit9Cit0YWJsZSB7
Ym9yZGVyLXNwYWNpbmc6IDB9Cit0ZCB7CisJYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CisJcGFk
ZGluZzogMAorfQorCQk8L3N0eWxlPgorCTwvaGVhZD4KKwk8Ym9keT4KKwkJPGRpdj5GQUlMPC9k
aXY+CisJCTx0YWJsZT4KKwkJCTxjb2wgd2lkdGg9IjUwIiAvPgorCQkJPGNvbCB3aWR0aD0iMTAw
IiAvPgorCQkJPGNvbCB3aWR0aD0iMTUwIiAvPgorCQkJPGNvbCB3aWR0aD0iMjAwIiAvPgorCQkJ
PHRib2R5PgorCQkJCTx0cj4KKwkJCQkJPHRkPiZuYnNwOzwvdGQ+CisJCQkJCTx0ZCBjb2xzcGFu
PSIyIj4mbmJzcDs8L3RkPgorCQkJCQk8dGQ+Jm5ic3A7PC90ZD4KKwkJCQk8L3RyPgorCQkJPC90
Ym9keT4KKwkJPC90YWJsZT4KKyAgICA8ZGl2IGlkPSJpbmZvIj4KKyAgICAgIFZpc3VhbCB0ZXN0
OiBpZiB5b3UgZG8gbm90IHNlZSB0aGUgcmVkIHdvcmQgIkZBSUwiIHRoZW4geW91ciBoYXZlIHBh
c3NlZC4gPGJyIC8+CisgICAgICA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ4NTgiPldlYktpdCBCdWcgIzE0ODU4PC9hPgorICAgIDwvZGl2PgorCTwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47516</attachid>
            <date>2010-01-27 04:22:48 -0800</date>
            <delta_ts>2010-01-30 03:55:10 -0800</delta_ts>
            <desc>Proposed fix v2</desc>
            <filename>mypatch.txt</filename>
            <type>text/plain</type>
            <size>6912</size>
            <attacher name="Dmitry Gorbik">socket.h</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzkxOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDEtMjcgIERtaXRyeSBHb3JiaWsgIDxzb2NrZXQuaEBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Rml4ZWQgd2lkdGggY2FsY3VsYXRpb24gZm9yIGNlbGxzIHdpdGggc3BhbiB3aGVuIDxjb2w+IGlz
IGRlZmluZWQKKworICAgICAgICBUZXN0OiBmYXN0L3RhYmxlL2NvbC13aWR0aC1zcGFuLWV4cGFu
ZC5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6c3R5bGVPckNvbFdpZHRoKTogYWRkZWQgdGhl
IGNhbGN1bGF0aW9uIG9mIGNlbGwgd2lkdGgKKyAgICAgICAgaW4gY2FzZSBvZiA8Y29sPiBkZWZp
bmVkIGFuZCBzcGFuPjEuCisKIDIwMTAtMDEtMjcgIE1hdHQgUGVycnkgIDxtcGNvbXBsZXRlQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkocmV2aXNpb24gNTM4NDQpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Mywy
MCArODMsNDUgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnVwZGF0ZUZyb21FbGVtZW50KAogTGVu
Z3RoIFJlbmRlclRhYmxlQ2VsbDo6c3R5bGVPckNvbFdpZHRoKCkgY29uc3QKIHsKICAgICBMZW5n
dGggdyA9IHN0eWxlKCktPndpZHRoKCk7Ci0gICAgaWYgKGNvbFNwYW4oKSA+IDEgfHwgIXcuaXNB
dXRvKCkpCisgICAgaWYgKCF3LmlzQXV0bygpKQogICAgICAgICByZXR1cm4gdzsKKyAgICAKICAg
ICBSZW5kZXJUYWJsZUNvbCogdGFibGVDb2wgPSB0YWJsZSgpLT5jb2xFbGVtZW50KGNvbCgpKTsK
ICAgICBpZiAodGFibGVDb2wpIHsKLSAgICAgICAgdyA9IHRhYmxlQ29sLT5zdHlsZSgpLT53aWR0
aCgpOworICAgICAgICBpbnQgY29sU3BhbkNvdW50ID0gY29sU3BhbigpOworICAgICAgICAgICAg
CisgICAgICAgIExlbmd0aCBjb2xXaWR0aFN1bSA9IExlbmd0aCgwLCBGaXhlZCk7CisgICAgICAg
IGZvciAoaW50IGkgPSAxOyBpIDw9IGNvbFNwYW5Db3VudDsgaSsrKSB7CisgICAgICAgICAgICBM
ZW5ndGggY29sV2lkdGggPSB0YWJsZUNvbC0+c3R5bGUoKS0+d2lkdGgoKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgLy8gUGVyY2VudGFnZSB2YWx1ZSBzaG91bGQgYmUgcmV0dXJuZWQgb25s
eSBmb3IgY29sU3Bhbj0xLgorICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHdlIHJldHVybiBvcmln
aW5hbCB3aWR0aCBmb3IgdGhlIGNlbGwuCisgICAgICAgICAgICBpZiAoIWNvbFdpZHRoLmlzRml4
ZWQoKSkgeworICAgICAgICAgICAgICAgIGlmIChjb2xTcGFuQ291bnQgPiAxKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdzsKKyAgICAgICAgICAgICAgICByZXR1cm4gY29sV2lkdGg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNvbFdpZHRoU3VtID0gTGVu
Z3RoKGNvbFdpZHRoU3VtLnZhbHVlKCkgKyBjb2xXaWR0aC52YWx1ZSgpLCBGaXhlZCk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIFJlbmRlck9iamVjdCogY2hpbGQgPSB0YWJsZUNvbC0+bmV4
dFNpYmxpbmcoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gSWYgbm8gbmV4dCA8Y29s
PiB0YWcgZm91bmQgZm9yIHRoZSBzcGFuIHdlIGp1c3QgcmV0dXJuIHdoYXQgd2UgaGF2ZSBmb3Ig
bm93LgorICAgICAgICAgICAgaWYgKCFjaGlsZCB8fCAhY2hpbGQtPmlzVGFibGVDb2woKSkKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHRhYmxlQ29sID0gdG9SZW5kZXJUYWJs
ZUNvbChjaGlsZCk7ICAKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gQ29sdW1uIHdp
ZHRocyBzcGVjaWZpZWQgb24gPGNvbD4gYXBwbHkgdG8gdGhlIGJvcmRlciBib3ggb2YgdGhlIGNl
bGwuCiAgICAgICAgIC8vIFBlcmNlbnRhZ2VzIGRvbid0IG5lZWQgdG8gYmUgaGFuZGxlZCBzaW5j
ZSB0aGV5J3JlIGFsd2F5cyB0cmVhdGVkIHRoaXMgd2F5IChldmVuIHdoZW4gc3BlY2lmaWVkIG9u
IHRoZSBjZWxscykuCiAgICAgICAgIC8vIFNlZSBCdWd6aWxsYSBidWcgODEyNiBmb3IgZGV0YWls
cy4KLSAgICAgICAgaWYgKHcuaXNGaXhlZCgpICYmIHcudmFsdWUoKSA+IDApCi0gICAgICAgICAg
ICB3ID0gTGVuZ3RoKG1heCgwLCB3LnZhbHVlKCkgLSBib3JkZXJMZWZ0KCkgLSBib3JkZXJSaWdo
dCgpIC0gcGFkZGluZ0xlZnQoKSAtIHBhZGRpbmdSaWdodCgpKSwgRml4ZWQpOworICAgICAgICBp
ZiAoY29sV2lkdGhTdW0uaXNGaXhlZCgpICYmIGNvbFdpZHRoU3VtLnZhbHVlKCkgPiAwKQorICAg
ICAgICAgICAgY29sV2lkdGhTdW0gPSBMZW5ndGgobWF4KDAsIGNvbFdpZHRoU3VtLnZhbHVlKCkg
LSBib3JkZXJMZWZ0KCkgLSBib3JkZXJSaWdodCgpIC0gcGFkZGluZ0xlZnQoKSAtIHBhZGRpbmdS
aWdodCgpKSwgRml4ZWQpOworICAgICAgICByZXR1cm4gY29sV2lkdGhTdW07CiAgICAgfQorICAg
IAogICAgIHJldHVybiB3OwotfQorfSAgICAgICAgICAgICAgICAgICAKIAogdm9pZCBSZW5kZXJU
YWJsZUNlbGw6OmNhbGNQcmVmV2lkdGhzKCkKIHsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUzOTE4KQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTAtMDEtMjcgIERtaXRyeSBHb3JiaWsgIDxzb2NrZXQuaEBnbWFpbC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZWQgd2lkdGggY2Fs
Y3VsYXRpb24gZm9yIGNlbGxzIHdpdGggc3BhbiB3aGVuIDxjb2w+IGlzIGRlZmluZWQKKworICAg
ICAgICAqIGZhc3QvdGFibGUvY29sLXdpZHRoLXNwYW4tZXhwYW5kLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC90YWJsZS9jb2wtd2lkdGgtc3Bhbi1leHBhbmQuaHRtbDogQWRk
ZWQuCisKIDIwMTAtMDEtMjcgIE1hdHQgUGVycnkgIDxtcGNvbXBsZXRlQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvdGFibGUvY29sLXdpZHRoLXNwYW4tZXhwYW5kLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3RhYmxlL2NvbC13aWR0aC1zcGFuLWV4cGFuZC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RhYmxlL2NvbC13aWR0aC1zcGFu
LWV4cGFuZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKK2xheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYw
MAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4OAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAs
MCkgc2l6ZSA4MDB4OAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDAK
K2xheWVyIGF0ICgzNTAsMTYpIHNpemUgMzZ4MTgKKyAgUmVuZGVyQmxvY2sgKHBvc2l0aW9uZWQp
IHtESVZ9IGF0ICgzNTAsMTYpIHNpemUgMzZ4MTggW2NvbG9yPSNGRjAwMDBdCisgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzZ4MTgKKyAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDM2OiAiRkFJTCIKK2xheWVyIGF0ICgxNiwxNikgc2l6ZSA1MDB4MTgKKyAgUmVuZGVy
VGFibGUge1RBQkxFfSBhdCAoMTYsMTYpIHNpemUgNTAweDE4CisgICAgUmVuZGVyVGFibGVDb2wg
e0NPTH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICBSZW5kZXJUYWJsZUNvbCB7Q09MfSBhdCAoMCww
KSBzaXplIDB4MAorICAgIFJlbmRlclRhYmxlQ29sIHtDT0x9IGF0ICgwLDApIHNpemUgMHgwCisg
ICAgUmVuZGVyVGFibGVDb2wge0NPTH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICBSZW5kZXJUYWJs
ZVNlY3Rpb24ge1RCT0RZfSBhdCAoMCwwKSBzaXplIDUwMHgxOAorICAgICAgUmVuZGVyVGFibGVS
b3cge1RSfSBhdCAoMCwwKSBzaXplIDUwMHgxOAorICAgICAgICBSZW5kZXJUYWJsZUNlbGwge1RE
fSBhdCAoMCwwKSBzaXplIDUweDE4IFtiZ2NvbG9yPSNGRkZGRkZdIFtyPTAgYz0wIHJzPTEgY3M9
MV0KKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0eDE4CisgICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0OiAiICIKKyAgICAgICAgUmVuZGVyVGFi
bGVDZWxsIHtURH0gYXQgKDUwLDApIHNpemUgMjUweDE4IFtiZ2NvbG9yPSNGRkZGRkZdIFtyPTAg
Yz0xIHJzPTEgY3M9Ml0KKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSA0eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0OiAiICIKKyAgICAg
ICAgUmVuZGVyVGFibGVDZWxsIHtURH0gYXQgKDMwMCwwKSBzaXplIDIwMHgxOCBbYmdjb2xvcj0j
RkZGRkZGXSBbcj0wIGM9MyBycz0xIGNzPTFdCisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgwLDApIHNpemUgNHgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
NDogIiAiCitsYXllciBhdCAoMTYsNDApIHNpemUgNDY5eDM2CisgIFJlbmRlckJsb2NrIChwb3Np
dGlvbmVkKSB7RElWfSBhdCAoMTYsNDApIHNpemUgNDY5eDM2CisgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDApIHNpemUgNDY5eDE4CisgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0
Njk6ICJWaXN1YWwgdGVzdDogaWYgeW91IGRvIG5vdCBzZWUgdGhlIHJlZCB3b3JkIFwiRkFJTFwi
IHRoZW4geW91ciBoYXZlIHBhc3NlZC4gIgorICAgIFJlbmRlckJSIHtCUn0gYXQgKDQ2OSwwKSBz
aXplIDB4MTgKKyAgICBSZW5kZXJJbmxpbmUge0F9IGF0ICgwLDApIHNpemUgMTMzeDE4IFtjb2xv
cj0jMDAwMEVFXQorICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDE4KSBzaXplIDEzM3gx
OAorICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggMTMzOiAiV2ViS2l0IEJ1ZyAjMTQ4
NTgiCisgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L3RhYmxlL2NvbC13aWR0aC1zcGFuLWV4cGFuZC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvdGFibGUvY29sLXdpZHRoLXNwYW4tZXhwYW5kLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RhYmxlL2NvbC13aWR0aC1zcGFuLWV4cGFu
ZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorCTxoZWFkPgorCQk8dGl0bGU+V2ViS2l0IEJ1ZyAxNDg1ODogY29sIHdpZHRoIGlnbm9y
ZWQgd2hlbiBub3QgdGllZCB0byBhIHNpbmdsZSBjZWxsPC90aXRsZT4KKwkJPGxpbmsgaHJlZj0i
aHR0cDovL3d3dy53My5vcmcvVFIvUkVDLUNTUzIvdGFibGVzLmh0bWwjcTQiIHJlbD0iaGVscCIg
Lz4KKyAgICA8bGluayBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIHJl
bD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorCQk8c3R5bGUgdHlwZT0idGV4dC9jc3Mi
PgorZGl2LCB0YWJsZSB7CisJbGVmdDogMWVtOworCXBvc2l0aW9uOiBhYnNvbHV0ZTsKKwl0b3A6
IDFlbQorfQorZGl2IHsKKwljb2xvcjogcmVkOworCWxlZnQ6IDM1MHB4Cit9CitkaXYjaW5mbyB7
CisgIGxlZnQ6IDFlbTsKKyAgY29sb3I6IGJsYWNrOworICB0b3A6IDQwcHg7Cit9Cit0YWJsZSB7
Ym9yZGVyLXNwYWNpbmc6IDB9Cit0ZCB7CisJYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CisJcGFk
ZGluZzogMAorfQorCQk8L3N0eWxlPgorCTwvaGVhZD4KKwk8Ym9keT4KKwkJPGRpdj5GQUlMPC9k
aXY+CisJCTx0YWJsZT4KKwkJCTxjb2wgd2lkdGg9IjUwIiAvPgorCQkJPGNvbCB3aWR0aD0iMTAw
IiAvPgorCQkJPGNvbCB3aWR0aD0iMTUwIiAvPgorCQkJPGNvbCB3aWR0aD0iMjAwIiAvPgorCQkJ
PHRib2R5PgorCQkJCTx0cj4KKwkJCQkJPHRkPiZuYnNwOzwvdGQ+CisJCQkJCTx0ZCBjb2xzcGFu
PSIyIj4mbmJzcDs8L3RkPgorCQkJCQk8dGQ+Jm5ic3A7PC90ZD4KKwkJCQk8L3RyPgorCQkJPC90
Ym9keT4KKwkJPC90YWJsZT4KKyAgICA8ZGl2IGlkPSJpbmZvIj4KKyAgICAgIFZpc3VhbCB0ZXN0
OiBpZiB5b3UgZG8gbm90IHNlZSB0aGUgcmVkIHdvcmQgIkZBSUwiIHRoZW4geW91ciBoYXZlIHBh
c3NlZC4gPGJyIC8+CisgICAgICA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ4NTgiPldlYktpdCBCdWcgIzE0ODU4PC9hPgorICAgIDwvZGl2PgorCTwv
Ym9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="29967"
          type_id="1"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47767</attachid>
            <date>2010-01-30 03:55:10 -0800</date>
            <delta_ts>2010-01-30 13:19:47 -0800</delta_ts>
            <desc>Proposed fix v2.1</desc>
            <filename>mypatch.txt</filename>
            <type>text/plain</type>
            <size>5827</size>
            <attacher name="Dmitry Gorbik">socket.h</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzkxOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDEtMjcgIERtaXRyeSBHb3JiaWsgIDxzb2NrZXQuaEBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Rml4ZWQgd2lkdGggY2FsY3VsYXRpb24gZm9yIGNlbGxzIHdpdGggc3BhbiB3aGVuIDxjb2w+IGlz
IGRlZmluZWQKKworICAgICAgICBUZXN0OiBmYXN0L3RhYmxlL2NvbC13aWR0aC1zcGFuLWV4cGFu
ZC5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6c3R5bGVPckNvbFdpZHRoKTogYWRkZWQgdGhl
IGNhbGN1bGF0aW9uIG9mIGNlbGwgd2lkdGgKKyAgICAgICAgaW4gY2FzZSBvZiA8Y29sPiBkZWZp
bmVkIGFuZCBzcGFuPjEuCisKIDIwMTAtMDEtMjcgIE1hdHQgUGVycnkgIDxtcGNvbXBsZXRlQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkocmV2aXNpb24gNTM4NDQpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Mywx
OCArODMsNDMgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnVwZGF0ZUZyb21FbGVtZW50KAogTGVu
Z3RoIFJlbmRlclRhYmxlQ2VsbDo6c3R5bGVPckNvbFdpZHRoKCkgY29uc3QKIHsKICAgICBMZW5n
dGggdyA9IHN0eWxlKCktPndpZHRoKCk7Ci0gICAgaWYgKGNvbFNwYW4oKSA+IDEgfHwgIXcuaXNB
dXRvKCkpCisgICAgaWYgKCF3LmlzQXV0bygpKQogICAgICAgICByZXR1cm4gdzsKKwogICAgIFJl
bmRlclRhYmxlQ29sKiB0YWJsZUNvbCA9IHRhYmxlKCktPmNvbEVsZW1lbnQoY29sKCkpOwogICAg
IGlmICh0YWJsZUNvbCkgewotICAgICAgICB3ID0gdGFibGVDb2wtPnN0eWxlKCktPndpZHRoKCk7
Ci0gICAgICAgIAorICAgICAgICBpbnQgY29sU3BhbkNvdW50ID0gY29sU3BhbigpOworCisgICAg
ICAgIExlbmd0aCBjb2xXaWR0aFN1bSA9IExlbmd0aCgwLCBGaXhlZCk7CisgICAgICAgIGZvciAo
aW50IGkgPSAxOyBpIDw9IGNvbFNwYW5Db3VudDsgaSsrKSB7CisgICAgICAgICAgICBMZW5ndGgg
Y29sV2lkdGggPSB0YWJsZUNvbC0+c3R5bGUoKS0+d2lkdGgoKTsKKworICAgICAgICAgICAgLy8g
UGVyY2VudGFnZSB2YWx1ZSBzaG91bGQgYmUgcmV0dXJuZWQgb25seSBmb3IgY29sU3Bhbj0xLgor
ICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHdlIHJldHVybiBvcmlnaW5hbCB3aWR0aCBmb3IgdGhl
IGNlbGwuCisgICAgICAgICAgICBpZiAoIWNvbFdpZHRoLmlzRml4ZWQoKSkgeworICAgICAgICAg
ICAgICAgIGlmIChjb2xTcGFuQ291bnQgPiAxKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dzsKKyAgICAgICAgICAgICAgICByZXR1cm4gY29sV2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGNvbFdpZHRoU3VtID0gTGVuZ3RoKGNvbFdpZHRoU3VtLnZhbHVlKCkgKyBjb2xX
aWR0aC52YWx1ZSgpLCBGaXhlZCk7CisKKyAgICAgICAgICAgIFJlbmRlck9iamVjdCogY2hpbGQg
PSB0YWJsZUNvbC0+bmV4dFNpYmxpbmcoKTsKKworICAgICAgICAgICAgLy8gSWYgbm8gbmV4dCA8
Y29sPiB0YWcgZm91bmQgZm9yIHRoZSBzcGFuIHdlIGp1c3QgcmV0dXJuIHdoYXQgd2UgaGF2ZSBm
b3Igbm93LgorICAgICAgICAgICAgaWYgKCFjaGlsZCB8fCAhY2hpbGQtPmlzVGFibGVDb2woKSkK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHRhYmxlQ29sID0gdG9SZW5kZXJU
YWJsZUNvbChjaGlsZCk7CisgICAgICAgIH0KKwogICAgICAgICAvLyBDb2x1bW4gd2lkdGhzIHNw
ZWNpZmllZCBvbiA8Y29sPiBhcHBseSB0byB0aGUgYm9yZGVyIGJveCBvZiB0aGUgY2VsbC4KICAg
ICAgICAgLy8gUGVyY2VudGFnZXMgZG9uJ3QgbmVlZCB0byBiZSBoYW5kbGVkIHNpbmNlIHRoZXkn
cmUgYWx3YXlzIHRyZWF0ZWQgdGhpcyB3YXkgKGV2ZW4gd2hlbiBzcGVjaWZpZWQgb24gdGhlIGNl
bGxzKS4KICAgICAgICAgLy8gU2VlIEJ1Z3ppbGxhIGJ1ZyA4MTI2IGZvciBkZXRhaWxzLgotICAg
ICAgICBpZiAody5pc0ZpeGVkKCkgJiYgdy52YWx1ZSgpID4gMCkKLSAgICAgICAgICAgIHcgPSBM
ZW5ndGgobWF4KDAsIHcudmFsdWUoKSAtIGJvcmRlckxlZnQoKSAtIGJvcmRlclJpZ2h0KCkgLSBw
YWRkaW5nTGVmdCgpIC0gcGFkZGluZ1JpZ2h0KCkpLCBGaXhlZCk7CisgICAgICAgIGlmIChjb2xX
aWR0aFN1bS5pc0ZpeGVkKCkgJiYgY29sV2lkdGhTdW0udmFsdWUoKSA+IDApCisgICAgICAgICAg
ICBjb2xXaWR0aFN1bSA9IExlbmd0aChtYXgoMCwgY29sV2lkdGhTdW0udmFsdWUoKSAtIGJvcmRl
ckxlZnQoKSAtIGJvcmRlclJpZ2h0KCkgLSBwYWRkaW5nTGVmdCgpIC0gcGFkZGluZ1JpZ2h0KCkp
LCBGaXhlZCk7CisgICAgICAgIHJldHVybiBjb2xXaWR0aFN1bTsKICAgICB9CisKICAgICByZXR1
cm4gdzsKIH0KIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTM5MTgpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wMS0yNyAgRG1pdHJ5
IEdvcmJpayAgPHNvY2tldC5oQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB3aWR0aCBjYWxjdWxhdGlvbiBmb3IgY2VsbHMg
d2l0aCBzcGFuIHdoZW4gPGNvbD4gaXMgZGVmaW5lZAorCisgICAgICAgICogZmFzdC90YWJsZS9j
b2wtd2lkdGgtc3Bhbi1leHBhbmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3RhYmxlL2NvbC13aWR0aC1zcGFuLWV4cGFuZC5odG1sOiBBZGRlZC4KKwogMjAxMC0wMS0yNyAg
TWF0dCBQZXJyeSAgPG1wY29tcGxldGVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90YWJsZS9jb2wtd2lkdGgt
c3Bhbi1leHBhbmQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
dGFibGUvY29sLXdpZHRoLXNwYW4tZXhwYW5kLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvdGFibGUvY29sLXdpZHRoLXNwYW4tZXhwYW5kLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitUZXN0IFBBU1NFRAorwqAJwqAJwqAKK1dl
YktpdCBCdWcgIzE0ODU4CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RhYmxlL2NvbC13aWR0aC1z
cGFuLWV4cGFuZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvdGFibGUvY29s
LXdpZHRoLXNwYW4tZXhwYW5kLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L3RhYmxlL2NvbC13aWR0aC1zcGFuLWV4cGFuZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDYyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorCTxoZWFkPgorCQk8dGl0bGU+V2ViS2l0
IEJ1ZyAxNDg1ODogY29sIHdpZHRoIGlnbm9yZWQgd2hlbiBub3QgdGllZCB0byBhIHNpbmdsZSBj
ZWxsPC90aXRsZT4KKwkJPGxpbmsgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLUNTUzIv
dGFibGVzLmh0bWwjcTQiIHJlbD0iaGVscCIgLz4KKyAgICA8bGluayBocmVmPSIuLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3Mi
PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Cisg
ICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKQorICAg
ICAgeworICAgICAgICB2YXIgdGVzdENlbGwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVz
dENlbGwnKTsKKyAgICAgICAgdmFyIHRlc3RUYWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCd0ZXN0VGFibGUnKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdyZXN1bHQnKTsKKyAgICAgICAgdmFyIHRkV2lkdGggPSB3aW5kb3cuZ2V0Q29tcHV0ZWRT
dHlsZSh0ZXN0Q2VsbCkud2lkdGg7CisgICAgICAgIHZhciB0YWJsZVdpZHRoID0gd2luZG93Lmdl
dENvbXB1dGVkU3R5bGUodGVzdFRhYmxlKS53aWR0aDsKKyAgICAgICAgaWYgKHRkV2lkdGggIT0g
IjI1MHB4IiB8fCB0YWJsZVdpZHRoICE9ICI1MDBweCIpIHsKKyAgICAgICAgICByZXN1bHQuc3R5
bGUuY29sb3IgPSAicmVkIjsKKyAgICAgICAgICByZXN1bHQuaW5uZXJIVE1MID0gIlRlc3QgRkFJ
TEVEIjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICByZXN1bHQuc3R5bGUuY29sb3IgPSAi
Z3JlZW4iOworICAgICAgICAgIHJlc3VsdC5pbm5lckhUTUwgPSAiVGVzdCBQQVNTRUQiOworICAg
ICAgICB9CisgICAgICB9CisgICAgPC9zY3JpcHQ+CisJCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+
CitkaXYjdGVzdERpdiB7CisgIGxlZnQ6IDFlbTsKKyAgcG9zaXRpb246IGFic29sdXRlOworICB0
b3A6IDFlbTsKKyAgei1pbmRleDogLTEKK30KK3RhYmxlIHtib3JkZXItc3BhY2luZzogMH0KK3Rk
IHsKKyAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CisgIHBhZGRpbmc6IDAKK30KKwkJPC9zdHls
ZT4KKwk8L2hlYWQ+CisJPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorCQk8ZGl2IGlkPSJyZXN1
bHQiPjwvZGl2PgorICAgIDxkaXYgaWQ9InRlc3REaXYiPgorICAgICAgPHRhYmxlIGlkPSJ0ZXN0
VGFibGUiPgorICAgICAgICA8Y29sIHdpZHRoPSI1MCIgLz4KKyAgICAgICAgPGNvbCB3aWR0aD0i
MTAwIiAvPgorICAgICAgICA8Y29sIHdpZHRoPSIxNTAiIC8+CisgICAgICAgIDxjb2wgd2lkdGg9
IjIwMCIgLz4KKyAgICAgICAgPHRib2R5PgorICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgIDx0
ZD4mbmJzcDs8L3RkPgorICAgICAgICAgICAgPHRkIGlkPSJ0ZXN0Q2VsbCIgY29sc3Bhbj0iMiI+
Jm5ic3A7PC90ZD4KKyAgICAgICAgICAgIDx0ZD4mbmJzcDs8L3RkPgorICAgICAgICAgIDwvdHI+
CisgICAgICAgIDwvdGJvZHk+CisgICAgICA8L3RhYmxlPgorICAgIDwvZGl2PgorICAgIDxkaXYg
aWQ9ImluZm8iPgorICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0ODU4Ij5XZWJLaXQgQnVnICMxNDg1ODwvYT4KKyAgICA8L2Rpdj4KKwk8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="30299"
          type_id="1"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47772</attachid>
            <date>2010-01-30 13:19:47 -0800</date>
            <delta_ts>2010-01-30 13:24:07 -0800</delta_ts>
            <desc>Proposed fix v2.2</desc>
            <filename>mypatch.txt</filename>
            <type>text/plain</type>
            <size>6983</size>
            <attacher name="Dmitry Gorbik">socket.h</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzkxOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDEtMjcgIERtaXRyeSBHb3JiaWsgIDxzb2NrZXQuaEBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Rml4ZWQgd2lkdGggY2FsY3VsYXRpb24gZm9yIGNlbGxzIHdpdGggc3BhbiB3aGVuIDxjb2w+IGlz
IGRlZmluZWQKKworICAgICAgICBUZXN0OiBmYXN0L3RhYmxlL2NvbC13aWR0aC1zcGFuLWV4cGFu
ZC5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6c3R5bGVPckNvbFdpZHRoKTogYWRkZWQgdGhl
IGNhbGN1bGF0aW9uIG9mIGNlbGwgd2lkdGgKKyAgICAgICAgaW4gY2FzZSBvZiA8Y29sPiBkZWZp
bmVkIGFuZCBzcGFuPjEuCisKIDIwMTAtMDEtMjcgIE1hdHQgUGVycnkgIDxtcGNvbXBsZXRlQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkocmV2aXNpb24gNTM4NDQpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Mywx
OCArODMsNDMgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnVwZGF0ZUZyb21FbGVtZW50KAogTGVu
Z3RoIFJlbmRlclRhYmxlQ2VsbDo6c3R5bGVPckNvbFdpZHRoKCkgY29uc3QKIHsKICAgICBMZW5n
dGggdyA9IHN0eWxlKCktPndpZHRoKCk7Ci0gICAgaWYgKGNvbFNwYW4oKSA+IDEgfHwgIXcuaXNB
dXRvKCkpCisgICAgaWYgKCF3LmlzQXV0bygpKQogICAgICAgICByZXR1cm4gdzsKKwogICAgIFJl
bmRlclRhYmxlQ29sKiB0YWJsZUNvbCA9IHRhYmxlKCktPmNvbEVsZW1lbnQoY29sKCkpOwogICAg
IGlmICh0YWJsZUNvbCkgewotICAgICAgICB3ID0gdGFibGVDb2wtPnN0eWxlKCktPndpZHRoKCk7
Ci0gICAgICAgIAorICAgICAgICBpbnQgY29sU3BhbkNvdW50ID0gY29sU3BhbigpOworCisgICAg
ICAgIExlbmd0aCBjb2xXaWR0aFN1bSA9IExlbmd0aCgwLCBGaXhlZCk7CisgICAgICAgIGZvciAo
aW50IGkgPSAxOyBpIDw9IGNvbFNwYW5Db3VudDsgaSsrKSB7CisgICAgICAgICAgICBMZW5ndGgg
Y29sV2lkdGggPSB0YWJsZUNvbC0+c3R5bGUoKS0+d2lkdGgoKTsKKworICAgICAgICAgICAgLy8g
UGVyY2VudGFnZSB2YWx1ZSBzaG91bGQgYmUgcmV0dXJuZWQgb25seSBmb3IgY29sU3Bhbj0xLgor
ICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHdlIHJldHVybiBvcmlnaW5hbCB3aWR0aCBmb3IgdGhl
IGNlbGwuCisgICAgICAgICAgICBpZiAoIWNvbFdpZHRoLmlzRml4ZWQoKSkgeworICAgICAgICAg
ICAgICAgIGlmIChjb2xTcGFuQ291bnQgPiAxKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dzsKKyAgICAgICAgICAgICAgICByZXR1cm4gY29sV2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGNvbFdpZHRoU3VtID0gTGVuZ3RoKGNvbFdpZHRoU3VtLnZhbHVlKCkgKyBjb2xX
aWR0aC52YWx1ZSgpLCBGaXhlZCk7CisKKyAgICAgICAgICAgIFJlbmRlck9iamVjdCogY2hpbGQg
PSB0YWJsZUNvbC0+bmV4dFNpYmxpbmcoKTsKKworICAgICAgICAgICAgLy8gSWYgbm8gbmV4dCA8
Y29sPiB0YWcgZm91bmQgZm9yIHRoZSBzcGFuIHdlIGp1c3QgcmV0dXJuIHdoYXQgd2UgaGF2ZSBm
b3Igbm93LgorICAgICAgICAgICAgaWYgKCFjaGlsZCB8fCAhY2hpbGQtPmlzVGFibGVDb2woKSkK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHRhYmxlQ29sID0gdG9SZW5kZXJU
YWJsZUNvbChjaGlsZCk7CisgICAgICAgIH0KKwogICAgICAgICAvLyBDb2x1bW4gd2lkdGhzIHNw
ZWNpZmllZCBvbiA8Y29sPiBhcHBseSB0byB0aGUgYm9yZGVyIGJveCBvZiB0aGUgY2VsbC4KICAg
ICAgICAgLy8gUGVyY2VudGFnZXMgZG9uJ3QgbmVlZCB0byBiZSBoYW5kbGVkIHNpbmNlIHRoZXkn
cmUgYWx3YXlzIHRyZWF0ZWQgdGhpcyB3YXkgKGV2ZW4gd2hlbiBzcGVjaWZpZWQgb24gdGhlIGNl
bGxzKS4KICAgICAgICAgLy8gU2VlIEJ1Z3ppbGxhIGJ1ZyA4MTI2IGZvciBkZXRhaWxzLgotICAg
ICAgICBpZiAody5pc0ZpeGVkKCkgJiYgdy52YWx1ZSgpID4gMCkKLSAgICAgICAgICAgIHcgPSBM
ZW5ndGgobWF4KDAsIHcudmFsdWUoKSAtIGJvcmRlckxlZnQoKSAtIGJvcmRlclJpZ2h0KCkgLSBw
YWRkaW5nTGVmdCgpIC0gcGFkZGluZ1JpZ2h0KCkpLCBGaXhlZCk7CisgICAgICAgIGlmIChjb2xX
aWR0aFN1bS5pc0ZpeGVkKCkgJiYgY29sV2lkdGhTdW0udmFsdWUoKSA+IDApCisgICAgICAgICAg
ICBjb2xXaWR0aFN1bSA9IExlbmd0aChtYXgoMCwgY29sV2lkdGhTdW0udmFsdWUoKSAtIGJvcmRl
ckxlZnQoKSAtIGJvcmRlclJpZ2h0KCkgLSBwYWRkaW5nTGVmdCgpIC0gcGFkZGluZ1JpZ2h0KCkp
LCBGaXhlZCk7CisgICAgICAgIHJldHVybiBjb2xXaWR0aFN1bTsKICAgICB9CisKICAgICByZXR1
cm4gdzsKIH0KIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTM5MTgpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wMS0yNyAgRG1pdHJ5
IEdvcmJpayAgPHNvY2tldC5oQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB3aWR0aCBjYWxjdWxhdGlvbiBmb3IgY2VsbHMg
d2l0aCBzcGFuIHdoZW4gPGNvbD4gaXMgZGVmaW5lZAorCisgICAgICAgICogZmFzdC90YWJsZS9j
b2wtd2lkdGgtc3Bhbi1leHBhbmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3RhYmxlL2NvbC13aWR0aC1zcGFuLWV4cGFuZC5odG1sOiBBZGRlZC4KKwogMjAxMC0wMS0yNyAg
TWF0dCBQZXJyeSAgPG1wY29tcGxldGVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90YWJsZS9jb2wtd2lkdGgt
c3Bhbi1leHBhbmQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
dGFibGUvY29sLXdpZHRoLXNwYW4tZXhwYW5kLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvdGFibGUvY29sLXdpZHRoLXNwYW4tZXhwYW5kLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorVHdvIHJvd3Mgb2YgY2VsbHMgc2hvdWxk
IGxvb2sgaWRlbnRpY2FsLgorbGVmdAltaWRkbGUJcmlnaHQKK2xlZnQJbWlkZGxlCQlyaWdodAor
VGhpcyB0ZXN0cyBCdWcgMTQ4NTg6IDxjb2w+IHdpZHRoIGlnbm9yZWQgd2hlbiBub3QgdGllZCB0
byBhIHNpbmdsZSBjZWxsLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mgd2lu
ZG93LmdldENvbXB1dGVkU3R5bGUodGVzdENlbGwpLndpZHRoIGlzICcyNTBweCcKK1BBU1Mgd2lu
ZG93LmdldENvbXB1dGVkU3R5bGUodGVzdFRhYmxlKS53aWR0aCBpcyAnNTAwcHgnCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvdGFibGUvY29sLXdpZHRoLXNwYW4tZXhwYW5kLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90YWJsZS9jb2wtd2lkdGgtc3Bhbi1leHBhbmQuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvdGFibGUvY29sLXdpZHRoLXNwYW4t
ZXhwYW5kLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzMgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+CisJPGhlYWQ+CisJCTx0aXRsZT5XZWJLaXQgQnVnIDE0ODU4OiBjb2wgd2lkdGgg
aWdub3JlZCB3aGVuIG5vdCB0aWVkIHRvIGEgc2luZ2xlIGNlbGw8L3RpdGxlPgorCQk8bGluayBo
cmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtQ1NTMi90YWJsZXMuaHRtbCNxNCIgcmVsPSJo
ZWxwIiAvPgorICAgICAgICA8bGluayBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0i
dXRmLTgiPgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHZh
ciB0ZXN0Q2VsbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Q2VsbCcpOworICAgIHZh
ciB0ZXN0VGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdFRhYmxlJyk7CisgICAg
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgPGEgaHJlZj0naHR0cDovL3dlYmtpdC5vcmcvYi8xNDg1
OCc+QnVnIDE0ODU4OiAmbHQ7Y29sJmd0OyB3aWR0aCBpZ25vcmVkIHdoZW4gbm90IHRpZWQgdG8g
YSBzaW5nbGUgY2VsbDwvYT4uIik7CisgICAgc2hvdWxkQmUoIndpbmRvdy5nZXRDb21wdXRlZFN0
eWxlKHRlc3RDZWxsKS53aWR0aCIsICInMjUwcHgnIik7CisgICAgc2hvdWxkQmUoIndpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKHRlc3RUYWJsZSkud2lkdGgiLCAiJzUwMHB4JyIpOworICAgIGlzU3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKK30KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgIDxz
dHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitkaXYjdGVzdERpdiB7CisgICAgdG9wOiAxMHB4OworICAg
IHBvc2l0aW9uOiByZWxhdGl2ZQorfQorZGl2I2luZm8geworICAgIHBvc2l0aW9uOiByZWxhdGl2
ZQorfQordGFibGUge2JvcmRlci1zcGFjaW5nOiAwfQordGQgeworICAgIHBhZGRpbmc6IDA7Cit9
CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDwvaGVhZD4KKyAgICAgICAgPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorICAgICAgICAgICAgPGRpdiBpZD0iaW5mbyI+CisgICAgICAgICAgICAg
ICAgVHdvIHJvd3Mgb2YgY2VsbHMgc2hvdWxkIGxvb2sgaWRlbnRpY2FsLjxicj4KKyAgICAgICAg
ICAgIDwvZGl2PgorICAgICAgICAgICAgPGRpdiBpZD0idGVzdERpdiI+CisgICAgICAgICAgICA8
dGFibGUgaWQ9InRlc3RUYWJsZSI+CisgICAgICAgICAgICAgICAgPGNvbCB3aWR0aD0iNTAiIC8+
CisgICAgICAgICAgICAgICAgPGNvbCB3aWR0aD0iMTAwIiAvPgorICAgICAgICAgICAgICAgIDxj
b2wgd2lkdGg9IjE1MCIgLz4KKyAgICAgICAgICAgICAgICA8Y29sIHdpZHRoPSIyMDAiIC8+Cisg
ICAgICAgICAgICAgICAgPHRib2R5PgorICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAg
ICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6cmVkIj5sZWZ0PC90
ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjpn
cmVlbiIgaWQ9InRlc3RDZWxsIiBjb2xzcGFuPSIyIj5taWRkbGU8L3RkPgorICAgICAgICAgICAg
ICAgICAgICAgICAgPHRkIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmJsdWUiPnJpZ2h0PC90ZD4K
KyAgICAgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICA8L3Rib2R5PgorICAg
ICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDx0YWJsZSBpZD0iYmFzZVRhYmxlIj4KKyAg
ICAgICAgICAgICAgICA8Y29sIHdpZHRoPSI1MCIgLz4KKyAgICAgICAgICAgICAgICA8Y29sIHdp
ZHRoPSIxMDAiIC8+CisgICAgICAgICAgICAgICAgPGNvbCB3aWR0aD0iMTUwIiAvPgorICAgICAg
ICAgICAgICAgIDxjb2wgd2lkdGg9IjIwMCIgLz4KKyAgICAgICAgICAgICAgICA8dGJvZHk+Cisg
ICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHls
ZT0iYmFja2dyb3VuZC1jb2xvcjpyZWQiPmxlZnQ8L3RkPgorICAgICAgICAgICAgICAgICAgICAg
ICAgPHRkIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmdyZWVuIj5taWRkbGU8L3RkPgorICAgICAg
ICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmdyZWVuIj48L3Rk
PgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmJs
dWUiPnJpZ2h0PC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAg
ICA8L3Rib2R5PgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgPC9kaXY+CisgICAgICAg
IDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47773</attachid>
            <date>2010-01-30 13:24:07 -0800</date>
            <delta_ts>2010-01-30 14:09:37 -0800</delta_ts>
            <desc>Proposed fix v2.3</desc>
            <filename>mypatch.txt</filename>
            <type>text/plain</type>
            <size>6995</size>
            <attacher name="Dmitry Gorbik">socket.h</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzkxOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDEtMjcgIERtaXRyeSBHb3JiaWsgIDxzb2NrZXQuaEBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Rml4ZWQgd2lkdGggY2FsY3VsYXRpb24gZm9yIGNlbGxzIHdpdGggc3BhbiB3aGVuIDxjb2w+IGlz
IGRlZmluZWQKKworICAgICAgICBUZXN0OiBmYXN0L3RhYmxlL2NvbC13aWR0aC1zcGFuLWV4cGFu
ZC5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6c3R5bGVPckNvbFdpZHRoKTogYWRkZWQgdGhl
IGNhbGN1bGF0aW9uIG9mIGNlbGwgd2lkdGgKKyAgICAgICAgaW4gY2FzZSBvZiA8Y29sPiBkZWZp
bmVkIGFuZCBzcGFuPjEuCisKIDIwMTAtMDEtMjcgIE1hdHQgUGVycnkgIDxtcGNvbXBsZXRlQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkocmV2aXNpb24gNTM4NDQpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Mywx
OCArODMsNDMgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnVwZGF0ZUZyb21FbGVtZW50KAogTGVu
Z3RoIFJlbmRlclRhYmxlQ2VsbDo6c3R5bGVPckNvbFdpZHRoKCkgY29uc3QKIHsKICAgICBMZW5n
dGggdyA9IHN0eWxlKCktPndpZHRoKCk7Ci0gICAgaWYgKGNvbFNwYW4oKSA+IDEgfHwgIXcuaXNB
dXRvKCkpCisgICAgaWYgKCF3LmlzQXV0bygpKQogICAgICAgICByZXR1cm4gdzsKKwogICAgIFJl
bmRlclRhYmxlQ29sKiB0YWJsZUNvbCA9IHRhYmxlKCktPmNvbEVsZW1lbnQoY29sKCkpOwogICAg
IGlmICh0YWJsZUNvbCkgewotICAgICAgICB3ID0gdGFibGVDb2wtPnN0eWxlKCktPndpZHRoKCk7
Ci0gICAgICAgIAorICAgICAgICBpbnQgY29sU3BhbkNvdW50ID0gY29sU3BhbigpOworCisgICAg
ICAgIExlbmd0aCBjb2xXaWR0aFN1bSA9IExlbmd0aCgwLCBGaXhlZCk7CisgICAgICAgIGZvciAo
aW50IGkgPSAxOyBpIDw9IGNvbFNwYW5Db3VudDsgaSsrKSB7CisgICAgICAgICAgICBMZW5ndGgg
Y29sV2lkdGggPSB0YWJsZUNvbC0+c3R5bGUoKS0+d2lkdGgoKTsKKworICAgICAgICAgICAgLy8g
UGVyY2VudGFnZSB2YWx1ZSBzaG91bGQgYmUgcmV0dXJuZWQgb25seSBmb3IgY29sU3Bhbj0xLgor
ICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHdlIHJldHVybiBvcmlnaW5hbCB3aWR0aCBmb3IgdGhl
IGNlbGwuCisgICAgICAgICAgICBpZiAoIWNvbFdpZHRoLmlzRml4ZWQoKSkgeworICAgICAgICAg
ICAgICAgIGlmIChjb2xTcGFuQ291bnQgPiAxKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dzsKKyAgICAgICAgICAgICAgICByZXR1cm4gY29sV2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGNvbFdpZHRoU3VtID0gTGVuZ3RoKGNvbFdpZHRoU3VtLnZhbHVlKCkgKyBjb2xX
aWR0aC52YWx1ZSgpLCBGaXhlZCk7CisKKyAgICAgICAgICAgIFJlbmRlck9iamVjdCogY2hpbGQg
PSB0YWJsZUNvbC0+bmV4dFNpYmxpbmcoKTsKKworICAgICAgICAgICAgLy8gSWYgbm8gbmV4dCA8
Y29sPiB0YWcgZm91bmQgZm9yIHRoZSBzcGFuIHdlIGp1c3QgcmV0dXJuIHdoYXQgd2UgaGF2ZSBm
b3Igbm93LgorICAgICAgICAgICAgaWYgKCFjaGlsZCB8fCAhY2hpbGQtPmlzVGFibGVDb2woKSkK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHRhYmxlQ29sID0gdG9SZW5kZXJU
YWJsZUNvbChjaGlsZCk7CisgICAgICAgIH0KKwogICAgICAgICAvLyBDb2x1bW4gd2lkdGhzIHNw
ZWNpZmllZCBvbiA8Y29sPiBhcHBseSB0byB0aGUgYm9yZGVyIGJveCBvZiB0aGUgY2VsbC4KICAg
ICAgICAgLy8gUGVyY2VudGFnZXMgZG9uJ3QgbmVlZCB0byBiZSBoYW5kbGVkIHNpbmNlIHRoZXkn
cmUgYWx3YXlzIHRyZWF0ZWQgdGhpcyB3YXkgKGV2ZW4gd2hlbiBzcGVjaWZpZWQgb24gdGhlIGNl
bGxzKS4KICAgICAgICAgLy8gU2VlIEJ1Z3ppbGxhIGJ1ZyA4MTI2IGZvciBkZXRhaWxzLgotICAg
ICAgICBpZiAody5pc0ZpeGVkKCkgJiYgdy52YWx1ZSgpID4gMCkKLSAgICAgICAgICAgIHcgPSBM
ZW5ndGgobWF4KDAsIHcudmFsdWUoKSAtIGJvcmRlckxlZnQoKSAtIGJvcmRlclJpZ2h0KCkgLSBw
YWRkaW5nTGVmdCgpIC0gcGFkZGluZ1JpZ2h0KCkpLCBGaXhlZCk7CisgICAgICAgIGlmIChjb2xX
aWR0aFN1bS5pc0ZpeGVkKCkgJiYgY29sV2lkdGhTdW0udmFsdWUoKSA+IDApCisgICAgICAgICAg
ICBjb2xXaWR0aFN1bSA9IExlbmd0aChtYXgoMCwgY29sV2lkdGhTdW0udmFsdWUoKSAtIGJvcmRl
ckxlZnQoKSAtIGJvcmRlclJpZ2h0KCkgLSBwYWRkaW5nTGVmdCgpIC0gcGFkZGluZ1JpZ2h0KCkp
LCBGaXhlZCk7CisgICAgICAgIHJldHVybiBjb2xXaWR0aFN1bTsKICAgICB9CisKICAgICByZXR1
cm4gdzsKIH0KIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTM5MTgpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wMS0yNyAgRG1pdHJ5
IEdvcmJpayAgPHNvY2tldC5oQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB3aWR0aCBjYWxjdWxhdGlvbiBmb3IgY2VsbHMg
d2l0aCBzcGFuIHdoZW4gPGNvbD4gaXMgZGVmaW5lZAorCisgICAgICAgICogZmFzdC90YWJsZS9j
b2wtd2lkdGgtc3Bhbi1leHBhbmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3RhYmxlL2NvbC13aWR0aC1zcGFuLWV4cGFuZC5odG1sOiBBZGRlZC4KKwogMjAxMC0wMS0yNyAg
TWF0dCBQZXJyeSAgPG1wY29tcGxldGVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90YWJsZS9jb2wtd2lkdGgt
c3Bhbi1leHBhbmQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
dGFibGUvY29sLXdpZHRoLXNwYW4tZXhwYW5kLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvdGFibGUvY29sLXdpZHRoLXNwYW4tZXhwYW5kLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorVHdvIHJvd3Mgb2YgY2VsbHMgc2hvdWxk
IGxvb2sgaWRlbnRpY2FsLgorbGVmdAltaWRkbGUJcmlnaHQKK2xlZnQJbWlkZGxlCQlyaWdodAor
VGhpcyB0ZXN0cyBCdWcgMTQ4NTg6IDxjb2w+IHdpZHRoIGlnbm9yZWQgd2hlbiBub3QgdGllZCB0
byBhIHNpbmdsZSBjZWxsLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mgd2lu
ZG93LmdldENvbXB1dGVkU3R5bGUodGVzdENlbGwpLndpZHRoIGlzICcyNTBweCcKK1BBU1Mgd2lu
ZG93LmdldENvbXB1dGVkU3R5bGUodGVzdFRhYmxlKS53aWR0aCBpcyAnNTAwcHgnCisKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvdGFibGUvY29sLXdpZHRoLXNwYW4tZXhwYW5kLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90YWJsZS9jb2wtd2lkdGgtc3Bhbi1leHBhbmQuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvdGFibGUvY29sLXdpZHRoLXNwYW4t
ZXhwYW5kLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzMgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+CisJPGhlYWQ+CisgICAgICAgIDx0aXRsZT5XZWJLaXQgQnVnIDE0ODU4OiBjb2wg
d2lkdGggaWdub3JlZCB3aGVuIG5vdCB0aWVkIHRvIGEgc2luZ2xlIGNlbGw8L3RpdGxlPgorICAg
ICAgICA8bGluayBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtQ1NTMi90YWJsZXMuaHRt
bCNxNCIgcmVsPSJoZWxwIiAvPgorICAgICAgICA8bGluayBocmVmPSIuLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1zdHlsZS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVu
Y3Rpb24uanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgY2hhcnNldD0idXRmLTgiPgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK2Z1bmN0aW9uIHJ1blRlc3Qo
KQoreworICAgIHZhciB0ZXN0Q2VsbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Q2Vs
bCcpOworICAgIHZhciB0ZXN0VGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdFRh
YmxlJyk7CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgPGEgaHJlZj0naHR0cDovL3dlYmtp
dC5vcmcvYi8xNDg1OCc+QnVnIDE0ODU4OiAmbHQ7Y29sJmd0OyB3aWR0aCBpZ25vcmVkIHdoZW4g
bm90IHRpZWQgdG8gYSBzaW5nbGUgY2VsbDwvYT4uIik7CisgICAgc2hvdWxkQmUoIndpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKHRlc3RDZWxsKS53aWR0aCIsICInMjUwcHgnIik7CisgICAgc2hvdWxk
QmUoIndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRlc3RUYWJsZSkud2lkdGgiLCAiJzUwMHB4JyIp
OworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKK30KKyAgICAgICAgPC9zY3JpcHQ+
CisgICAgICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitkaXYjdGVzdERpdiB7CisgICAgdG9w
OiAxMHB4OworICAgIHBvc2l0aW9uOiByZWxhdGl2ZQorfQorZGl2I2luZm8geworICAgIHBvc2l0
aW9uOiByZWxhdGl2ZQorfQordGFibGUge2JvcmRlci1zcGFjaW5nOiAwfQordGQgeworICAgIHBh
ZGRpbmc6IDA7Cit9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDwvaGVhZD4KKyAgICAgICAg
PGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgICAgICAgICAgPGRpdiBpZD0iaW5mbyI+Cisg
ICAgICAgICAgICAgICAgVHdvIHJvd3Mgb2YgY2VsbHMgc2hvdWxkIGxvb2sgaWRlbnRpY2FsLjxi
cj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPGRpdiBpZD0idGVzdERpdiI+Cisg
ICAgICAgICAgICA8dGFibGUgaWQ9InRlc3RUYWJsZSI+CisgICAgICAgICAgICAgICAgPGNvbCB3
aWR0aD0iNTAiIC8+CisgICAgICAgICAgICAgICAgPGNvbCB3aWR0aD0iMTAwIiAvPgorICAgICAg
ICAgICAgICAgIDxjb2wgd2lkdGg9IjE1MCIgLz4KKyAgICAgICAgICAgICAgICA8Y29sIHdpZHRo
PSIyMDAiIC8+CisgICAgICAgICAgICAgICAgPHRib2R5PgorICAgICAgICAgICAgICAgICAgICA8
dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6
cmVkIj5sZWZ0PC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0iYmFja2dy
b3VuZC1jb2xvcjpncmVlbiIgaWQ9InRlc3RDZWxsIiBjb2xzcGFuPSIyIj5taWRkbGU8L3RkPgor
ICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmJsdWUi
PnJpZ2h0PC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICA8
L3Rib2R5PgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDx0YWJsZSBpZD0iYmFz
ZVRhYmxlIj4KKyAgICAgICAgICAgICAgICA8Y29sIHdpZHRoPSI1MCIgLz4KKyAgICAgICAgICAg
ICAgICA8Y29sIHdpZHRoPSIxMDAiIC8+CisgICAgICAgICAgICAgICAgPGNvbCB3aWR0aD0iMTUw
IiAvPgorICAgICAgICAgICAgICAgIDxjb2wgd2lkdGg9IjIwMCIgLz4KKyAgICAgICAgICAgICAg
ICA8dGJvZHk+CisgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAg
ICAgIDx0ZCBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjpyZWQiPmxlZnQ8L3RkPgorICAgICAgICAg
ICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmdyZWVuIj5taWRkbGU8
L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9y
OmdyZWVuIj48L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJiYWNrZ3Jv
dW5kLWNvbG9yOmJsdWUiPnJpZ2h0PC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPC90cj4KKyAg
ICAgICAgICAgICAgICA8L3Rib2R5PgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgPC9k
aXY+CisgICAgICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAgICAgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47775</attachid>
            <date>2010-01-30 14:09:37 -0800</date>
            <delta_ts>2010-02-23 13:02:07 -0800</delta_ts>
            <desc>Proposed fix v2.4</desc>
            <filename>mypatch.txt</filename>
            <type>text/plain</type>
            <size>7072</size>
            <attacher name="Dmitry Gorbik">socket.h</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzkxOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDEtMjcgIERtaXRyeSBHb3JiaWsgIDxzb2NrZXQuaEBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Rml4ZWQgd2lkdGggY2FsY3VsYXRpb24gZm9yIGNlbGxzIHdpdGggc3BhbiB3aGVuIDxjb2w+IGlz
IGRlZmluZWQKKworICAgICAgICBUZXN0OiBmYXN0L3RhYmxlL2NvbC13aWR0aC1zcGFuLWV4cGFu
ZC5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6c3R5bGVPckNvbFdpZHRoKTogYWRkZWQgdGhl
IGNhbGN1bGF0aW9uIG9mIGNlbGwgd2lkdGgKKyAgICAgICAgaW4gY2FzZSBvZiA8Y29sPiBkZWZp
bmVkIGFuZCBzcGFuPjEuCisKIDIwMTAtMDEtMjcgIE1hdHQgUGVycnkgIDxtcGNvbXBsZXRlQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkocmV2aXNpb24gNTM4NDQpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Mywx
OCArODMsNDMgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnVwZGF0ZUZyb21FbGVtZW50KAogTGVu
Z3RoIFJlbmRlclRhYmxlQ2VsbDo6c3R5bGVPckNvbFdpZHRoKCkgY29uc3QKIHsKICAgICBMZW5n
dGggdyA9IHN0eWxlKCktPndpZHRoKCk7Ci0gICAgaWYgKGNvbFNwYW4oKSA+IDEgfHwgIXcuaXNB
dXRvKCkpCisgICAgaWYgKCF3LmlzQXV0bygpKQogICAgICAgICByZXR1cm4gdzsKKwogICAgIFJl
bmRlclRhYmxlQ29sKiB0YWJsZUNvbCA9IHRhYmxlKCktPmNvbEVsZW1lbnQoY29sKCkpOwogICAg
IGlmICh0YWJsZUNvbCkgewotICAgICAgICB3ID0gdGFibGVDb2wtPnN0eWxlKCktPndpZHRoKCk7
Ci0gICAgICAgIAorICAgICAgICBpbnQgY29sU3BhbkNvdW50ID0gY29sU3BhbigpOworCisgICAg
ICAgIExlbmd0aCBjb2xXaWR0aFN1bSA9IExlbmd0aCgwLCBGaXhlZCk7CisgICAgICAgIGZvciAo
aW50IGkgPSAxOyBpIDw9IGNvbFNwYW5Db3VudDsgaSsrKSB7CisgICAgICAgICAgICBMZW5ndGgg
Y29sV2lkdGggPSB0YWJsZUNvbC0+c3R5bGUoKS0+d2lkdGgoKTsKKworICAgICAgICAgICAgLy8g
UGVyY2VudGFnZSB2YWx1ZSBzaG91bGQgYmUgcmV0dXJuZWQgb25seSBmb3IgY29sU3Bhbj0xLgor
ICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHdlIHJldHVybiBvcmlnaW5hbCB3aWR0aCBmb3IgdGhl
IGNlbGwuCisgICAgICAgICAgICBpZiAoIWNvbFdpZHRoLmlzRml4ZWQoKSkgeworICAgICAgICAg
ICAgICAgIGlmIChjb2xTcGFuQ291bnQgPiAxKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dzsKKyAgICAgICAgICAgICAgICByZXR1cm4gY29sV2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGNvbFdpZHRoU3VtID0gTGVuZ3RoKGNvbFdpZHRoU3VtLnZhbHVlKCkgKyBjb2xX
aWR0aC52YWx1ZSgpLCBGaXhlZCk7CisKKyAgICAgICAgICAgIFJlbmRlck9iamVjdCogY2hpbGQg
PSB0YWJsZUNvbC0+bmV4dFNpYmxpbmcoKTsKKworICAgICAgICAgICAgLy8gSWYgbm8gbmV4dCA8
Y29sPiB0YWcgZm91bmQgZm9yIHRoZSBzcGFuIHdlIGp1c3QgcmV0dXJuIHdoYXQgd2UgaGF2ZSBm
b3Igbm93LgorICAgICAgICAgICAgaWYgKCFjaGlsZCB8fCAhY2hpbGQtPmlzVGFibGVDb2woKSkK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHRhYmxlQ29sID0gdG9SZW5kZXJU
YWJsZUNvbChjaGlsZCk7CisgICAgICAgIH0KKwogICAgICAgICAvLyBDb2x1bW4gd2lkdGhzIHNw
ZWNpZmllZCBvbiA8Y29sPiBhcHBseSB0byB0aGUgYm9yZGVyIGJveCBvZiB0aGUgY2VsbC4KICAg
ICAgICAgLy8gUGVyY2VudGFnZXMgZG9uJ3QgbmVlZCB0byBiZSBoYW5kbGVkIHNpbmNlIHRoZXkn
cmUgYWx3YXlzIHRyZWF0ZWQgdGhpcyB3YXkgKGV2ZW4gd2hlbiBzcGVjaWZpZWQgb24gdGhlIGNl
bGxzKS4KICAgICAgICAgLy8gU2VlIEJ1Z3ppbGxhIGJ1ZyA4MTI2IGZvciBkZXRhaWxzLgotICAg
ICAgICBpZiAody5pc0ZpeGVkKCkgJiYgdy52YWx1ZSgpID4gMCkKLSAgICAgICAgICAgIHcgPSBM
ZW5ndGgobWF4KDAsIHcudmFsdWUoKSAtIGJvcmRlckxlZnQoKSAtIGJvcmRlclJpZ2h0KCkgLSBw
YWRkaW5nTGVmdCgpIC0gcGFkZGluZ1JpZ2h0KCkpLCBGaXhlZCk7CisgICAgICAgIGlmIChjb2xX
aWR0aFN1bS5pc0ZpeGVkKCkgJiYgY29sV2lkdGhTdW0udmFsdWUoKSA+IDApCisgICAgICAgICAg
ICBjb2xXaWR0aFN1bSA9IExlbmd0aChtYXgoMCwgY29sV2lkdGhTdW0udmFsdWUoKSAtIGJvcmRl
ckxlZnQoKSAtIGJvcmRlclJpZ2h0KCkgLSBwYWRkaW5nTGVmdCgpIC0gcGFkZGluZ1JpZ2h0KCkp
LCBGaXhlZCk7CisgICAgICAgIHJldHVybiBjb2xXaWR0aFN1bTsKICAgICB9CisKICAgICByZXR1
cm4gdzsKIH0KIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTM5MTgpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wMS0yNyAgRG1pdHJ5
IEdvcmJpayAgPHNvY2tldC5oQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBGaXhlZCB3aWR0aCBjYWxjdWxhdGlvbiBmb3IgY2VsbHMg
d2l0aCBzcGFuIHdoZW4gPGNvbD4gaXMgZGVmaW5lZAorCisgICAgICAgICogZmFzdC90YWJsZS9j
b2wtd2lkdGgtc3Bhbi1leHBhbmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3RhYmxlL2NvbC13aWR0aC1zcGFuLWV4cGFuZC5odG1sOiBBZGRlZC4KKwogMjAxMC0wMS0yNyAg
TWF0dCBQZXJyeSAgPG1wY29tcGxldGVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90YWJsZS9jb2wtd2lkdGgt
c3Bhbi1leHBhbmQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
dGFibGUvY29sLXdpZHRoLXNwYW4tZXhwYW5kLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvdGFibGUvY29sLXdpZHRoLXNwYW4tZXhwYW5kLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorVHdvIHJvd3Mgb2YgY2VsbHMgc2hvdWxk
IGxvb2sgaWRlbnRpY2FsLgorbGVmdAltaWRkbGUJcmlnaHQKK2xlZnQJbWlkZGxlCQlyaWdodAor
VGhpcyB0ZXN0cyBCdWcgMTQ4NTg6IDxjb2w+IHdpZHRoIGlnbm9yZWQgd2hlbiBub3QgdGllZCB0
byBhIHNpbmdsZSBjZWxsLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mgd2lu
ZG93LmdldENvbXB1dGVkU3R5bGUodGVzdENlbGwpLndpZHRoIGlzICcyNTBweCcKK1BBU1Mgd2lu
ZG93LmdldENvbXB1dGVkU3R5bGUodGVzdFRhYmxlKS53aWR0aCBpcyAnNTAwcHgnCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC90YWJsZS9jb2wtd2lkdGgtc3Bhbi1leHBhbmQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3RhYmxlL2NvbC13aWR0aC1zcGFuLWV4cGFuZC5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC90YWJsZS9jb2wtd2lkdGgtc3Bhbi1leHBhbmQu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKwk8aGVhZD4KKyAgICAgICAgPHRpdGxlPldlYktpdCBCdWcgMTQ4NTg6IGNvbCB3aWR0aCBp
Z25vcmVkIHdoZW4gbm90IHRpZWQgdG8gYSBzaW5nbGUgY2VsbDwvdGl0bGU+CisgICAgICAgIDxs
aW5rIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1DU1MyL3RhYmxlcy5odG1sI3E0IiBy
ZWw9ImhlbHAiIC8+CisgICAgICAgIDxsaW5rIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXN0eWxlLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5q
cyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFy
c2V0PSJ1dGYtOCI+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24gcnVuVGVzdCgpCit7Cisg
ICAgdmFyIHRlc3RDZWxsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3RDZWxsJyk7Cisg
ICAgdmFyIHRlc3RUYWJsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0VGFibGUnKTsK
KyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyA8YSBocmVmPSdodHRwOi8vd2Via2l0Lm9yZy9i
LzE0ODU4Jz5CdWcgMTQ4NTg6ICZsdDtjb2wmZ3Q7IHdpZHRoIGlnbm9yZWQgd2hlbiBub3QgdGll
ZCB0byBhIHNpbmdsZSBjZWxsPC9hPi4iKTsKKyAgICBzaG91bGRCZSgid2luZG93LmdldENvbXB1
dGVkU3R5bGUodGVzdENlbGwpLndpZHRoIiwgIicyNTBweCciKTsKKyAgICBzaG91bGRCZSgid2lu
ZG93LmdldENvbXB1dGVkU3R5bGUodGVzdFRhYmxlKS53aWR0aCIsICInNTAwcHgnIik7CisgICAg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOwor
fQorICAgICAgICA8L3NjcmlwdD4KKyAgICAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK2Rp
diN0ZXN0RGl2IHsKKyAgICB0b3A6IDEwcHg7CisgICAgcG9zaXRpb246IHJlbGF0aXZlCit9Citk
aXYjaW5mbyB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlCit9Cit0YWJsZSB7Ym9yZGVyLXNwYWNp
bmc6IDB9Cit0ZCB7CisgICAgcGFkZGluZzogMDsKK30KKyAgICAgICAgPC9zdHlsZT4KKyAgICAg
ICAgPC9oZWFkPgorICAgICAgICA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgICAgICAg
ICA8ZGl2IGlkPSJpbmZvIj4KKyAgICAgICAgICAgICAgICBUd28gcm93cyBvZiBjZWxscyBzaG91
bGQgbG9vayBpZGVudGljYWwuPGJyPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8
ZGl2IGlkPSJ0ZXN0RGl2Ij4KKyAgICAgICAgICAgIDx0YWJsZSBpZD0idGVzdFRhYmxlIj4KKyAg
ICAgICAgICAgICAgICA8Y29sIHdpZHRoPSI1MCIgLz4KKyAgICAgICAgICAgICAgICA8Y29sIHdp
ZHRoPSIxMDAiIC8+CisgICAgICAgICAgICAgICAgPGNvbCB3aWR0aD0iMTUwIiAvPgorICAgICAg
ICAgICAgICAgIDxjb2wgd2lkdGg9IjIwMCIgLz4KKyAgICAgICAgICAgICAgICA8dGJvZHk+Cisg
ICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHls
ZT0iYmFja2dyb3VuZC1jb2xvcjpyZWQiPmxlZnQ8L3RkPgorICAgICAgICAgICAgICAgICAgICAg
ICAgPHRkIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmdyZWVuIiBpZD0idGVzdENlbGwiIGNvbHNw
YW49IjIiPm1pZGRsZTwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJh
Y2tncm91bmQtY29sb3I6Ymx1ZSI+cmlnaHQ8L3RkPgorICAgICAgICAgICAgICAgICAgICA8L3Ry
PgorICAgICAgICAgICAgICAgIDwvdGJvZHk+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAg
ICAgICAgPHRhYmxlIGlkPSJiYXNlVGFibGUiPgorICAgICAgICAgICAgICAgIDxjb2wgd2lkdGg9
IjUwIiAvPgorICAgICAgICAgICAgICAgIDxjb2wgd2lkdGg9IjEwMCIgLz4KKyAgICAgICAgICAg
ICAgICA8Y29sIHdpZHRoPSIxNTAiIC8+CisgICAgICAgICAgICAgICAgPGNvbCB3aWR0aD0iMjAw
IiAvPgorICAgICAgICAgICAgICAgIDx0Ym9keT4KKyAgICAgICAgICAgICAgICAgICAgPHRyPgor
ICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOnJlZCI+
bGVmdDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJhY2tncm91bmQt
Y29sb3I6Z3JlZW4iPm1pZGRsZTwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5
bGU9ImJhY2tncm91bmQtY29sb3I6Z3JlZW4iPjwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAg
ICA8dGQgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6Ymx1ZSI+cmlnaHQ8L3RkPgorICAgICAgICAg
ICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgIDwvdGJvZHk+CisgICAgICAgICAgICA8
L3RhYmxlPgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgorICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>
<flag name="review"
          id="30311"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49318</attachid>
            <date>2010-02-23 13:02:07 -0800</date>
            <delta_ts>2010-03-21 12:44:36 -0700</delta_ts>
            <desc>proposed fix v2.5</desc>
            <filename>mypatch.txt</filename>
            <type>text/plain</type>
            <size>10313</size>
            <attacher name="Dmitry Gorbik">socket.h</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzkxOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDEtMjcgIERtaXRyeSBHb3JiaWsgIDxzb2NrZXQuaEBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Rml4ZWQgd2lkdGggY2FsY3VsYXRpb24gZm9yIGNlbGxzIHdpdGggc3BhbiB3aGVuIDxjb2w+IGlz
IGRlZmluZWQKKworICAgICAgICBUZXN0OiBmYXN0L3RhYmxlL2NvbC13aWR0aC1zcGFuLWV4cGFu
ZC5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6c3R5bGVPckNvbFdpZHRoKTogYWRkZWQgdGhl
IGNhbGN1bGF0aW9uIG9mIGNlbGwgd2lkdGgKKyAgICAgICAgaW4gY2FzZSBvZiA8Y29sPiBkZWZp
bmVkIGFuZCBzcGFuPjEuCisKIDIwMTAtMDEtMjcgIE1hdHQgUGVycnkgIDxtcGNvbXBsZXRlQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZS5jcHAJKHJldmlzaW9uIDUzODQ0KQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzgsNiArNTc4LDI1IEBA
IHZvaWQgUmVuZGVyVGFibGU6OmFwcGVuZENvbHVtbihpbnQgc3BhbikKICAgICBzZXROZWVkc0xh
eW91dEFuZFByZWZXaWR0aHNSZWNhbGMoKTsKIH0KIAorUmVuZGVyVGFibGVDb2wqIFJlbmRlclRh
YmxlOjpuZXh0Q29sRWxlbWVudChSZW5kZXJUYWJsZUNvbCogY3VycmVudCkgY29uc3QKK3sKKyAg
ICBSZW5kZXJPYmplY3QqIG5leHQgPSBjdXJyZW50LT5maXJzdENoaWxkKCk7CisgICAgaWYgKCFu
ZXh0KQorICAgICAgICBuZXh0ID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKTsKKyAgICBpZiAoIW5l
eHQgJiYgY3VycmVudC0+cGFyZW50KCktPmlzVGFibGVDb2woKSkKKyAgICAgICAgbmV4dCA9IGN1
cnJlbnQtPnBhcmVudCgpLT5uZXh0U2libGluZygpOworCisgICAgd2hpbGUgKG5leHQpIHsKKyAg
ICAgICAgaWYgKG5leHQtPmlzVGFibGVDb2woKSkKKyAgICAgICAgICAgIHJldHVybiB0b1JlbmRl
clRhYmxlQ29sKG5leHQpOworICAgICAgICBpZiAobmV4dCAhPSBtX2NhcHRpb24pCisgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgbmV4dCA9IG5leHQtPm5leHRTaWJsaW5nKCk7CisgICAg
fQorICAgIAorICAgIHJldHVybiAwOworfQorCiBSZW5kZXJUYWJsZUNvbCogUmVuZGVyVGFibGU6
OmNvbEVsZW1lbnQoaW50IGNvbCwgYm9vbCogc3RhcnRFZGdlLCBib29sKiBlbmRFZGdlKSBjb25z
dAogewogICAgIGlmICghbV9oYXNDb2xFbGVtZW50cykKQEAgLTU4NiwzMSArNjA1LDMyIEBAIFJl
bmRlclRhYmxlQ29sKiBSZW5kZXJUYWJsZTo6Y29sRWxlbWVudCgKICAgICBpbnQgY0NvbCA9IDA7
CiAKICAgICB3aGlsZSAoY2hpbGQpIHsKLSAgICAgICAgaWYgKGNoaWxkLT5pc1RhYmxlQ29sKCkp
IHsKLSAgICAgICAgICAgIFJlbmRlclRhYmxlQ29sKiBjb2xFbGVtID0gdG9SZW5kZXJUYWJsZUNv
bChjaGlsZCk7Ci0gICAgICAgICAgICBpbnQgc3BhbiA9IGNvbEVsZW0tPnNwYW4oKTsKLSAgICAg
ICAgICAgIGlmICghY29sRWxlbS0+Zmlyc3RDaGlsZCgpKSB7Ci0gICAgICAgICAgICAgICAgaW50
IHN0YXJ0Q29sID0gY0NvbDsKLSAgICAgICAgICAgICAgICBpbnQgZW5kQ29sID0gY0NvbCArIHNw
YW4gLSAxOwotICAgICAgICAgICAgICAgIGNDb2wgKz0gc3BhbjsKLSAgICAgICAgICAgICAgICBp
ZiAoY0NvbCA+IGNvbCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnRFZGdlKQotICAg
ICAgICAgICAgICAgICAgICAgICAgKnN0YXJ0RWRnZSA9IHN0YXJ0Q29sID09IGNvbDsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGVuZEVkZ2UpCi0gICAgICAgICAgICAgICAgICAgICAgICAqZW5k
RWRnZSA9IGVuZENvbCA9PSBjb2w7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2xFbGVt
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KKyAgICAgICAgaWYgKGNoaWxkLT5p
c1RhYmxlQ29sKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGNoaWxkICE9IG1f
Y2FwdGlvbikKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZygpOworICAgIH0KKyAgICBpZiAoIWNoaWxkKQorICAgICAgICByZXR1cm4gMDsK
IAotICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBuZXh0ID0gY2hpbGQtPmZpcnN0Q2hpbGQoKTsK
LSAgICAgICAgICAgIGlmICghbmV4dCkKLSAgICAgICAgICAgICAgICBuZXh0ID0gY2hpbGQtPm5l
eHRTaWJsaW5nKCk7Ci0gICAgICAgICAgICBpZiAoIW5leHQgJiYgY2hpbGQtPnBhcmVudCgpLT5p
c1RhYmxlQ29sKCkpCi0gICAgICAgICAgICAgICAgbmV4dCA9IGNoaWxkLT5wYXJlbnQoKS0+bmV4
dFNpYmxpbmcoKTsKLSAgICAgICAgICAgIGNoaWxkID0gbmV4dDsKLSAgICAgICAgfSBlbHNlIGlm
IChjaGlsZCA9PSBtX2NhcHRpb24pCi0gICAgICAgICAgICBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZygpOwotICAgICAgICBlbHNlCisgICAgUmVuZGVyVGFibGVDb2wqIGNvbEVsZW0gPSB0b1Jl
bmRlclRhYmxlQ29sKGNoaWxkKTsKKyAgICB3aGlsZSAoY29sRWxlbSkgeworICAgICAgICBpbnQg
c3BhbiA9IGNvbEVsZW0tPnNwYW4oKTsKKyAgICAgICAgaWYgKCFjb2xFbGVtLT5maXJzdENoaWxk
KCkpIHsKKyAgICAgICAgICAgIGludCBzdGFydENvbCA9IGNDb2w7CisgICAgICAgICAgICBpbnQg
ZW5kQ29sID0gY0NvbCArIHNwYW4gLSAxOworICAgICAgICAgICAgY0NvbCArPSBzcGFuOworICAg
ICAgICAgICAgaWYgKGNDb2wgPiBjb2wpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RhcnRFZGdl
KQorICAgICAgICAgICAgICAgICAgICAqc3RhcnRFZGdlID0gc3RhcnRDb2wgPT0gY29sOworICAg
ICAgICAgICAgICAgIGlmIChlbmRFZGdlKQorICAgICAgICAgICAgICAgICAgICAqZW5kRWRnZSA9
IGVuZENvbCA9PSBjb2w7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbEVsZW07CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY29sRWxlbSA9IG5leHRDb2xFbGVtZW50KGNvbEVs
ZW0pOworICAgICAgICBpZiAoIWNvbEVsZW0pCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAK
SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAkocmV2aXNpb24gNTM4NDQpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEzLDcg
QEAgcHVibGljOgogICAgIH0KIAogICAgIFJlbmRlclRhYmxlQ29sKiBjb2xFbGVtZW50KGludCBj
b2wsIGJvb2wqIHN0YXJ0RWRnZSA9IDAsIGJvb2wqIGVuZEVkZ2UgPSAwKSBjb25zdDsKKyAgICBS
ZW5kZXJUYWJsZUNvbCogbmV4dENvbEVsZW1lbnQoUmVuZGVyVGFibGVDb2wqIGN1cnJlbnQpIGNv
bnN0OwogCiAgICAgYm9vbCBuZWVkc1NlY3Rpb25SZWNhbGMoKSBjb25zdCB7IHJldHVybiBtX25l
ZWRzU2VjdGlvblJlY2FsYzsgfQogICAgIHZvaWQgc2V0TmVlZHNTZWN0aW9uUmVjYWxjKCkKSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAkocmV2aXNpb24gNTM4NDQpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MywxOCArODMsNDIgQEAgdm9pZCBSZW5kZXJUYWJsZUNlbGw6OnVwZGF0ZUZyb21FbGVtZW50
KAogTGVuZ3RoIFJlbmRlclRhYmxlQ2VsbDo6c3R5bGVPckNvbFdpZHRoKCkgY29uc3QKIHsKICAg
ICBMZW5ndGggdyA9IHN0eWxlKCktPndpZHRoKCk7Ci0gICAgaWYgKGNvbFNwYW4oKSA+IDEgfHwg
IXcuaXNBdXRvKCkpCisgICAgaWYgKCF3LmlzQXV0bygpKQogICAgICAgICByZXR1cm4gdzsKKwog
ICAgIFJlbmRlclRhYmxlQ29sKiB0YWJsZUNvbCA9IHRhYmxlKCktPmNvbEVsZW1lbnQoY29sKCkp
OworCiAgICAgaWYgKHRhYmxlQ29sKSB7Ci0gICAgICAgIHcgPSB0YWJsZUNvbC0+c3R5bGUoKS0+
d2lkdGgoKTsKLSAgICAgICAgCisgICAgICAgIGludCBjb2xTcGFuQ291bnQgPSBjb2xTcGFuKCk7
CisKKyAgICAgICAgTGVuZ3RoIGNvbFdpZHRoU3VtID0gTGVuZ3RoKDAsIEZpeGVkKTsKKyAgICAg
ICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gY29sU3BhbkNvdW50OyBpKyspIHsKKyAgICAgICAgICAg
IExlbmd0aCBjb2xXaWR0aCA9IHRhYmxlQ29sLT5zdHlsZSgpLT53aWR0aCgpOworCisgICAgICAg
ICAgICAvLyBQZXJjZW50YWdlIHZhbHVlIHNob3VsZCBiZSByZXR1cm5lZCBvbmx5IGZvciBjb2xT
cGFuPTEuCisgICAgICAgICAgICAvLyBPdGhlcndpc2Ugd2UgcmV0dXJuIG9yaWdpbmFsIHdpZHRo
IGZvciB0aGUgY2VsbC4KKyAgICAgICAgICAgIGlmICghY29sV2lkdGguaXNGaXhlZCgpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGNvbFNwYW5Db3VudCA+IDEpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiB3OworICAgICAgICAgICAgICAgIHJldHVybiBjb2xXaWR0aDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgY29sV2lkdGhTdW0gPSBMZW5ndGgoY29sV2lkdGhTdW0udmFsdWUo
KSArIGNvbFdpZHRoLnZhbHVlKCksIEZpeGVkKTsKKworICAgICAgICAgICAgdGFibGVDb2wgPSB0
YWJsZSgpLT5uZXh0Q29sRWxlbWVudCh0YWJsZUNvbCk7CisgICAgICAgICAgICAvLyBJZiBubyBu
ZXh0IDxjb2w+IHRhZyBmb3VuZCBmb3IgdGhlIHNwYW4gd2UganVzdCByZXR1cm4gd2hhdCB3ZSBo
YXZlIGZvciBub3cuCisgICAgICAgICAgICBpZiAoIXRhYmxlQ29sKQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgLy8gQ29sdW1uIHdpZHRocyBzcGVjaWZpZWQg
b24gPGNvbD4gYXBwbHkgdG8gdGhlIGJvcmRlciBib3ggb2YgdGhlIGNlbGwuCiAgICAgICAgIC8v
IFBlcmNlbnRhZ2VzIGRvbid0IG5lZWQgdG8gYmUgaGFuZGxlZCBzaW5jZSB0aGV5J3JlIGFsd2F5
cyB0cmVhdGVkIHRoaXMgd2F5IChldmVuIHdoZW4gc3BlY2lmaWVkIG9uIHRoZSBjZWxscykuCiAg
ICAgICAgIC8vIFNlZSBCdWd6aWxsYSBidWcgODEyNiBmb3IgZGV0YWlscy4KLSAgICAgICAgaWYg
KHcuaXNGaXhlZCgpICYmIHcudmFsdWUoKSA+IDApCi0gICAgICAgICAgICB3ID0gTGVuZ3RoKG1h
eCgwLCB3LnZhbHVlKCkgLSBib3JkZXJMZWZ0KCkgLSBib3JkZXJSaWdodCgpIC0gcGFkZGluZ0xl
ZnQoKSAtIHBhZGRpbmdSaWdodCgpKSwgRml4ZWQpOworICAgICAgICBpZiAoY29sV2lkdGhTdW0u
aXNGaXhlZCgpICYmIGNvbFdpZHRoU3VtLnZhbHVlKCkgPiAwKQorICAgICAgICAgICAgY29sV2lk
dGhTdW0gPSBMZW5ndGgobWF4KDAsIGNvbFdpZHRoU3VtLnZhbHVlKCkgLSBib3JkZXJMZWZ0KCkg
LSBib3JkZXJSaWdodCgpIC0gcGFkZGluZ0xlZnQoKSAtIHBhZGRpbmdSaWdodCgpKSwgRml4ZWQp
OworICAgICAgICByZXR1cm4gY29sV2lkdGhTdW07CiAgICAgfQorCiAgICAgcmV0dXJuIHc7CiB9
CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUzOTE4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDEtMjcgIERtaXRyeSBHb3JiaWsg
IDxzb2NrZXQuaEBnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgRml4ZWQgd2lkdGggY2FsY3VsYXRpb24gZm9yIGNlbGxzIHdpdGggc3Bh
biB3aGVuIDxjb2w+IGlzIGRlZmluZWQKKworICAgICAgICAqIGZhc3QvdGFibGUvY29sLXdpZHRo
LXNwYW4tZXhwYW5kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC90YWJsZS9j
b2wtd2lkdGgtc3Bhbi1leHBhbmQuaHRtbDogQWRkZWQuCisKIDIwMTAtMDEtMjcgIE1hdHQgUGVy
cnkgIDxtcGNvbXBsZXRlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IFNlaWRlbC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvdGFibGUvY29sLXdpZHRoLXNwYW4tZXhw
YW5kLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3RhYmxlL2Nv
bC13aWR0aC1zcGFuLWV4cGFuZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L3RhYmxlL2NvbC13aWR0aC1zcGFuLWV4cGFuZC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKK1R3byByb3dzIG9mIGNlbGxzIHNob3VsZCBsb29rIGlk
ZW50aWNhbC4KK2xlZnQJbWlkZGxlCXJpZ2h0CitsZWZ0CW1pZGRsZQkJcmlnaHQKK1RoaXMgdGVz
dHMgQnVnIDE0ODU4OiA8Y29sPiB3aWR0aCBpZ25vcmVkIHdoZW4gbm90IHRpZWQgdG8gYSBzaW5n
bGUgY2VsbC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitQQVNTIHdpbmRvdy5nZXRD
b21wdXRlZFN0eWxlKHRlc3RDZWxsKS53aWR0aCBpcyAnMjUwcHgnCitQQVNTIHdpbmRvdy5nZXRD
b21wdXRlZFN0eWxlKHRlc3RUYWJsZSkud2lkdGggaXMgJzUwMHB4JworUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvdGFibGUvY29sLXdpZHRoLXNwYW4tZXhwYW5kLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC90YWJsZS9jb2wtd2lkdGgtc3Bhbi1leHBhbmQuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvdGFibGUvY29sLXdpZHRoLXNwYW4tZXhwYW5kLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisJPGhl
YWQ+CisgICAgICAgIDx0aXRsZT5XZWJLaXQgQnVnIDE0ODU4OiBjb2wgd2lkdGggaWdub3JlZCB3
aGVuIG5vdCB0aWVkIHRvIGEgc2luZ2xlIGNlbGw8L3RpdGxlPgorICAgICAgICA8bGluayBocmVm
PSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtQ1NTMi90YWJsZXMuaHRtbCNxNCIgcmVsPSJoZWxw
IiAvPgorICAgICAgICA8bGluayBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgorICAgICAgICA8c2NyaXB0IHNy
Yz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRm
LTgiPgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHZhciB0
ZXN0Q2VsbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Q2VsbCcpOworICAgIHZhciB0
ZXN0VGFibGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdFRhYmxlJyk7CisgICAgZGVz
Y3JpcHRpb24oIlRoaXMgdGVzdHMgPGEgaHJlZj0naHR0cDovL3dlYmtpdC5vcmcvYi8xNDg1OCc+
QnVnIDE0ODU4OiAmbHQ7Y29sJmd0OyB3aWR0aCBpZ25vcmVkIHdoZW4gbm90IHRpZWQgdG8gYSBz
aW5nbGUgY2VsbDwvYT4uIik7CisgICAgc2hvdWxkQmUoIndpbmRvdy5nZXRDb21wdXRlZFN0eWxl
KHRlc3RDZWxsKS53aWR0aCIsICInMjUwcHgnIik7CisgICAgc2hvdWxkQmUoIndpbmRvdy5nZXRD
b21wdXRlZFN0eWxlKHRlc3RUYWJsZSkud2lkdGgiLCAiJzUwMHB4JyIpOworICAgIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CisgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKK30KKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitkaXYjdGVzdERp
diB7CisgICAgdG9wOiAxMHB4OworICAgIHBvc2l0aW9uOiByZWxhdGl2ZQorfQorZGl2I2luZm8g
eworICAgIHBvc2l0aW9uOiByZWxhdGl2ZQorfQordGFibGUge2JvcmRlci1zcGFjaW5nOiAwfQor
dGQgeworICAgIHBhZGRpbmc6IDA7Cit9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDwvaGVh
ZD4KKyAgICAgICAgPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICAgICAgICAgICAgPGRpdiBp
ZD0iaW5mbyI+CisgICAgICAgICAgICAgICAgVHdvIHJvd3Mgb2YgY2VsbHMgc2hvdWxkIGxvb2sg
aWRlbnRpY2FsLjxicj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPGRpdiBpZD0i
dGVzdERpdiI+CisgICAgICAgICAgICA8dGFibGUgaWQ9InRlc3RUYWJsZSI+CisgICAgICAgICAg
ICAgICAgPGNvbCB3aWR0aD0iNTAiIC8+CisgICAgICAgICAgICAgICAgPGNvbCB3aWR0aD0iMTAw
IiAvPgorICAgICAgICAgICAgICAgIDxjb2wgd2lkdGg9IjE1MCIgLz4KKyAgICAgICAgICAgICAg
ICA8Y29sIHdpZHRoPSIyMDAiIC8+CisgICAgICAgICAgICAgICAgPHRib2R5PgorICAgICAgICAg
ICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJhY2tn
cm91bmQtY29sb3I6cmVkIj5sZWZ0PC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBz
dHlsZT0iYmFja2dyb3VuZC1jb2xvcjpncmVlbiIgaWQ9InRlc3RDZWxsIiBjb2xzcGFuPSIyIj5t
aWRkbGU8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJiYWNrZ3JvdW5k
LWNvbG9yOmJsdWUiPnJpZ2h0PC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPC90cj4KKyAgICAg
ICAgICAgICAgICA8L3Rib2R5PgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDx0
YWJsZSBpZD0iYmFzZVRhYmxlIj4KKyAgICAgICAgICAgICAgICA8Y29sIHdpZHRoPSI1MCIgLz4K
KyAgICAgICAgICAgICAgICA8Y29sIHdpZHRoPSIxMDAiIC8+CisgICAgICAgICAgICAgICAgPGNv
bCB3aWR0aD0iMTUwIiAvPgorICAgICAgICAgICAgICAgIDxjb2wgd2lkdGg9IjIwMCIgLz4KKyAg
ICAgICAgICAgICAgICA8dGJvZHk+CisgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjpyZWQiPmxlZnQ8L3Rk
PgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmdy
ZWVuIj5taWRkbGU8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJiYWNr
Z3JvdW5kLWNvbG9yOmdyZWVuIj48L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0
eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmJsdWUiPnJpZ2h0PC90ZD4KKyAgICAgICAgICAgICAgICAg
ICAgPC90cj4KKyAgICAgICAgICAgICAgICA8L3Rib2R5PgorICAgICAgICAgICAgPC90YWJsZT4K
KyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKyAg
ICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="32157"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
    <flag name="commit-queue"
          id="34472"
          type_id="3"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
      

    </bug>

</bugzilla>