<?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>117342</bug_id>
          
          <creation_ts>2013-06-07 05:44:05 -0700</creation_ts>
          <short_desc>[curl] Merge http response header values</short_desc>
          <delta_ts>2013-06-13 21:47:30 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Curl</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>117300</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Peter Gal">galpeter</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>898131</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Gal">galpeter</who>
    <bug_when>2013-06-07 05:44:05 -0700</bug_when>
    <thetext>If the server returns multiple headers with the same name then the values should be merged into one list where the values are separated by a &apos;,&apos; character. This behavior is described in the RFC 2616 section 4.2 (http://tools.ietf.org/html/rfc2616#section-4.2).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898133</commentid>
    <comment_count>1</comment_count>
    <who name="Peter Gal">galpeter</who>
    <bug_when>2013-06-07 05:45:39 -0700</bug_when>
    <thetext>For example if the server returns the following headers:

X-MY: one
X-MY: two

then the client should merge these values into a single:

X-MY: one, two

entry.

This is tested with the &apos;http/tests/xmlhttprequest/xmlhttprequest-test-custom-headers.html&apos; testcase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898135</commentid>
    <comment_count>2</comment_count>
      <attachid>204033</attachid>
    <who name="Peter Gal">galpeter</who>
    <bug_when>2013-06-07 05:51:38 -0700</bug_when>
    <thetext>Created attachment 204033
proposed patch

The current implement used the setHTTPHeaderField method which replaced the previous header. There the addHTTPHeaderField method which will concatenate the values if required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898379</commentid>
    <comment_count>3</comment_count>
      <attachid>204033</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-06-08 04:17:23 -0700</bug_when>
    <thetext>Comment on attachment 204033
proposed patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        No new tests, already covered by existing ones, for example:
&gt; +        http/tests/xmlhttprequest/xmlhttprequest-test-custom-headers.html

why no updated results?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898382</commentid>
    <comment_count>4</comment_count>
    <who name="Peter Gal">galpeter</who>
    <bug_when>2013-06-08 04:33:43 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 204033 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=204033&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        No new tests, already covered by existing ones, for example:
&gt; &gt; +        http/tests/xmlhttprequest/xmlhttprequest-test-custom-headers.html
&gt; 
&gt; why no updated results?

The test results are ok, it&apos;s just that the test was failing before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898410</commentid>
    <comment_count>5</comment_count>
      <attachid>204033</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-06-08 14:17:18 -0700</bug_when>
    <thetext>Comment on attachment 204033
proposed patch

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

&gt; Source/WebCore/platform/network/curl/ResourceHandleManager.cpp:320
&gt; +            d-&gt;m_response.addHTTPHeaderField(header.left(splitPos), header.substring(splitPos+1).stripWhiteSpace());

Are there ever cases where we do want to replace the HTTP header field, rather than appending?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>898566</commentid>
    <comment_count>6</comment_count>
    <who name="Peter Gal">galpeter</who>
    <bug_when>2013-06-10 00:38:33 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 204033 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=204033&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/ResourceHandleManager.cpp:320
&gt; &gt; +            d-&gt;m_response.addHTTPHeaderField(header.left(splitPos), header.substring(splitPos+1).stripWhiteSpace());
&gt; 
&gt; Are there ever cases where we do want to replace the HTTP header field, rather than appending?

I was wondering on that also, so I&apos;ve re-read the rfc multiple times and as far as I can see most of the headers are allowed to be merged. If I remember correctly libsoup merges all HTTP headers. In the blackberry they have a white list to specify which headers can be merged.

Should I do something like the blackberry guys and add a white list?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899997</commentid>
    <comment_count>7</comment_count>
      <attachid>204578</attachid>
    <who name="Peter Gal">galpeter</who>
    <bug_when>2013-06-13 06:14:12 -0700</bug_when>
    <thetext>Created attachment 204578
advanced patch

So then... After studying the HTTP RFC and other things I&apos;ve created a slightly more advanced implementation to merge HTTP header values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>899998</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-13 06:16:04 -0700</bug_when>
    <thetext>Attachment 204578 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/platform/network/curl/ResourceHandleManager.cpp&apos;]&quot; exit_code: 1
Source/WebCore/platform/network/curl/ResourceHandleManager.cpp:274:  Omit int when using unsigned  [runtime/unsigned] [1]
Total errors found: 1 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900005</commentid>
    <comment_count>9</comment_count>
      <attachid>204580</attachid>
    <who name="Peter Gal">galpeter</who>
    <bug_when>2013-06-13 06:47:17 -0700</bug_when>
    <thetext>Created attachment 204580
style fixed patch

fixed the style error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900131</commentid>
    <comment_count>10</comment_count>
      <attachid>204580</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-06-13 09:41:17 -0700</bug_when>
    <thetext>Comment on attachment 204580
style fixed patch

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

Looks great!  I had a couple of minor suggestions.  If you can clarify that comment I will be happy to approve the patch.

&gt; Source/WebCore/platform/network/curl/ResourceHandleManager.cpp:241
&gt; +    static const char *appendableHeaders[] = {

This should be &quot;static const char*&quot;  The fact that this is a &quot;const char pointer&quot; is part of the type.

&gt; Source/WebCore/platform/network/curl/ResourceHandleManager.cpp:270
&gt; +    // Custom headers usually starts with &apos;X-&apos;, allow them.

&quot;starts&quot; should be &quot;start&quot; (syntax).

If they usually start with &quot;X-&quot;, why do we test with &quot;x-&quot; (case insensitive)?  Do they usually start with either &quot;X-&quot; or &quot;x-&quot; and we are handling this case and exiting early?

Maybe the comments should be &quot;Custom headers start with &apos;X-&apos;, and need no further checking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900133</commentid>
    <comment_count>11</comment_count>
    <who name="Peter Gal">galpeter</who>
    <bug_when>2013-06-13 09:47:40 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 204580 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=204580&amp;action=review
&gt; 
&gt; Looks great!  I had a couple of minor suggestions.  If you can clarify that comment I will be happy to approve the patch.
&gt; 
&gt; &gt; Source/WebCore/platform/network/curl/ResourceHandleManager.cpp:241
&gt; &gt; +    static const char *appendableHeaders[] = {
&gt; 
&gt; This should be &quot;static const char*&quot;  The fact that this is a &quot;const char pointer&quot; is part of the type.
&gt; 

Ok.

&gt; &gt; Source/WebCore/platform/network/curl/ResourceHandleManager.cpp:270
&gt; &gt; +    // Custom headers usually starts with &apos;X-&apos;, allow them.
&gt; 
&gt; &quot;starts&quot; should be &quot;start&quot; (syntax).
&gt; 
&gt; If they usually start with &quot;X-&quot;, why do we test with &quot;x-&quot; (case insensitive)?  Do they usually start with either &quot;X-&quot; or &quot;x-&quot; and we are handling this case and exiting early?
&gt; 
&gt; Maybe the comments should be &quot;Custom headers start with &apos;X-&apos;, and need no further checking.

The http headers are case insensitive (at least that&apos;s what I read in the rfc) and most of the times the first character is in uppercase. I&apos;ll update the comment.
.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900143</commentid>
    <comment_count>12</comment_count>
      <attachid>204625</attachid>
    <who name="Peter Gal">galpeter</who>
    <bug_when>2013-06-13 09:56:14 -0700</bug_when>
    <thetext>Created attachment 204625
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900406</commentid>
    <comment_count>13</comment_count>
      <attachid>204625</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-06-13 21:24:47 -0700</bug_when>
    <thetext>Comment on attachment 204625
updated patch

r=me.  Thanks for working on this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900413</commentid>
    <comment_count>14</comment_count>
      <attachid>204625</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-13 21:47:27 -0700</bug_when>
    <thetext>Comment on attachment 204625
updated patch

Clearing flags on attachment: 204625

Committed r151580: &lt;http://trac.webkit.org/changeset/151580&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900414</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-13 21:47:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204033</attachid>
            <date>2013-06-07 05:51:38 -0700</date>
            <delta_ts>2013-06-13 06:14:12 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>curl_http_header_merge.patch</filename>
            <type>text/plain</type>
            <size>1563</size>
            <attacher name="Peter Gal">galpeter</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhYTk4MzQzLi4yMDZhN2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTMtMDYtMDcgIFBldGVyIEdhbCAgPGdhbHBldGVyQGluZi51LXN6ZWdlZC5odT4KKwor
ICAgICAgICBbY3VybF0gTWVyZ2UgaHR0cCByZXNwb25zZSBoZWFkZXIgdmFsdWVzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3MzQyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBh
bHJlYWR5IGNvdmVyZWQgYnkgZXhpc3Rpbmcgb25lcywgZm9yIGV4YW1wbGU6CisgICAgICAgIGh0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtdGVzdC1jdXN0b20taGVhZGVy
cy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVN
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhlYWRlckNhbGxiYWNrKTogVXNlIGFkZEhU
VFBIZWFkZXJGaWVsZCBpbnN0ZWFkIG9mIHNldEhUVFBIZWFkZXJGaWVsZC4KKwogMjAxMy0wNi0w
NyAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZyYW1lIGZsYXR0
ZW5pbmc6IGNyYXNoIHdoZW4gY2hpbGQgaWZyYW1lIGlzIHJlbW92ZWQgZHVyaW5nIGJlZm9yZWxv
YWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCmluZGV4IDBjYjgyMDcuLjFhMjJhNGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhh
bmRsZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCkBAIC0zMTcsNyArMzE3LDcgQEAgc3RhdGljIHNp
emVfdCBoZWFkZXJDYWxsYmFjayhjaGFyKiBwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1lbWIs
IHZvaWQqIGRhdGEpCiAgICAgfSBlbHNlIHsKICAgICAgICAgaW50IHNwbGl0UG9zID0gaGVhZGVy
LmZpbmQoIjoiKTsKICAgICAgICAgaWYgKHNwbGl0UG9zICE9IC0xKQotICAgICAgICAgICAgZC0+
bV9yZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoaGVhZGVyLmxlZnQoc3BsaXRQb3MpLCBoZWFk
ZXIuc3Vic3RyaW5nKHNwbGl0UG9zKzEpLnN0cmlwV2hpdGVTcGFjZSgpKTsKKyAgICAgICAgICAg
IGQtPm1fcmVzcG9uc2UuYWRkSFRUUEhlYWRlckZpZWxkKGhlYWRlci5sZWZ0KHNwbGl0UG9zKSwg
aGVhZGVyLnN1YnN0cmluZyhzcGxpdFBvcysxKS5zdHJpcFdoaXRlU3BhY2UoKSk7CiAgICAgfQog
CiAgICAgcmV0dXJuIHRvdGFsU2l6ZTsK
</data>
<flag name="review"
          id="225541"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204578</attachid>
            <date>2013-06-13 06:14:12 -0700</date>
            <delta_ts>2013-06-13 06:47:17 -0700</delta_ts>
            <desc>advanced patch</desc>
            <filename>curl_http_header_merge_2.patch</filename>
            <type>text/plain</type>
            <size>3092</size>
            <attacher name="Peter Gal">galpeter</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2Zjc2MjY0Li41YWM2N2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTMtMDYtMTMgIFBldGVyIEdhbCAgPGdhbHBldGVyQGluZi51LXN6ZWdlZC5odT4KKwor
ICAgICAgICBbY3VybF0gTWVyZ2UgaHR0cCByZXNwb25zZSBoZWFkZXIgdmFsdWVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTczNDIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBY2NvcmRpbmcgdG8gdGhl
IEhUVFAgUkZDIHNvbWUgSFRUUCBoZWFkZXIgdmFsdWVzIHNob3VsZCBiZQorICAgICAgICBtZXJn
ZWQgaWYgbXVsdGlwbGUgZW50cmllcyBmb3IgdGhlIHNhbWUgaGVhZGVyIGV4aXN0cy4KKworICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aXNBcHBlbmRhYmxlSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OmhlYWRlckNhbGxiYWNrKToKKwogMjAxMy0wNi0xMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgbm90aW9uIG9mIGluYWN0aXZlIHBs
dWctaW5zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCmluZGV4IDQ4NzE2ODUuLmYzZDNjNjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCkBAIC0yMzYsNiArMjM2LDQ4IEBAIHN0YXRp
YyBzaXplX3Qgd3JpdGVDYWxsYmFjayh2b2lkKiBwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1l
bWIsIHZvaWQqIGRhdGEpCiAgICAgcmV0dXJuIHRvdGFsU2l6ZTsKIH0KIAorc3RhdGljIGJvb2wg
aXNBcHBlbmRhYmxlSGVhZGVyKGNvbnN0IFN0cmluZyAma2V5KQoreworICAgIHN0YXRpYyBjb25z
dCBjaGFyICphcHBlbmRhYmxlSGVhZGVyc1tdID0geworICAgICAgICAiYWNjZXNzLWNvbnRyb2wt
YWxsb3ctaGVhZGVycyIsCisgICAgICAgICJhY2Nlc3MtY29udHJvbC1hbGxvdy1tZXRob2RzIiwK
KyAgICAgICAgImFjY2Vzcy1jb250cm9sLWFsbG93LW9yaWdpbiIsCisgICAgICAgICJhY2Nlc3Mt
Y29udHJvbC1leHBvc2UtaGVhZGVycyIsCisgICAgICAgICJhbGxvdyIsCisgICAgICAgICJjYWNo
ZS1jb250cm9sIiwKKyAgICAgICAgImNvbm5lY3Rpb24iLAorICAgICAgICAiY29udGVudC1lbmNv
ZGluZyIsCisgICAgICAgICJjb250ZW50LWxhbmd1YWdlIiwKKyAgICAgICAgImlmLW1hdGNoIiwK
KyAgICAgICAgImlmLW5vbmUtbWF0Y2giLAorICAgICAgICAia2VlcC1hbGl2ZSIsCisgICAgICAg
ICJwcmFnbWEiLAorICAgICAgICAicHJveHktYXV0aGVudGljYXRlIiwKKyAgICAgICAgInB1Ymxp
YyIsCisgICAgICAgICJzZXJ2ZXIiLAorICAgICAgICAidGUiLAorICAgICAgICAidHJhaWxlciIs
CisgICAgICAgICJ0cmFuc2Zlci1lbmNvZGluZyIsCisgICAgICAgICJ1cGdyYWRlIiwKKyAgICAg
ICAgInVzZXItYWdlbnQiLAorICAgICAgICAidmFyeSIsCisgICAgICAgICJ2aWEiLAorICAgICAg
ICAid2FybmluZyIsCisgICAgICAgICJ3d3ctYXV0aGVudGljYXRlIiwKKyAgICAgICAgMAorICAg
IH07CisKKyAgICAvLyBDdXN0b20gaGVhZGVycyB1c3VhbGx5IHN0YXJ0cyB3aXRoICdYLScsIGFs
bG93IHRoZW0uCisgICAgaWYgKGtleS5zdGFydHNXaXRoKCJ4LSIsIC8qIGNhc2VTZW5zaXRpdmUg
Ki8gZmFsc2UpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGZvciAodW5zaWduZWQgaW50
IGkgPSAwOyBhcHBlbmRhYmxlSGVhZGVyc1tpXTsgKytpKQorICAgICAgICBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2Uoa2V5LCBhcHBlbmRhYmxlSGVhZGVyc1tpXSkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwogLyoKICAqIFRoaXMgaXMgYmVpbmcgY2Fs
bGVkIGZvciBlYWNoIEhUVFAgaGVhZGVyIGluIHRoZSByZXNwb25zZS4gVGhpcyBpbmNsdWRlcyAn
XHJcbicKICAqIGZvciB0aGUgbGFzdCBsaW5lIG9mIHRoZSBoZWFkZXIuCkBAIC0zMTYsOCArMzU4
LDE1IEBAIHN0YXRpYyBzaXplX3QgaGVhZGVyQ2FsbGJhY2soY2hhciogcHRyLCBzaXplX3Qgc2l6
ZSwgc2l6ZV90IG5tZW1iLCB2b2lkKiBkYXRhKQogCiAgICAgfSBlbHNlIHsKICAgICAgICAgaW50
IHNwbGl0UG9zID0gaGVhZGVyLmZpbmQoIjoiKTsKLSAgICAgICAgaWYgKHNwbGl0UG9zICE9IC0x
KQotICAgICAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoaGVhZGVyLmxl
ZnQoc3BsaXRQb3MpLCBoZWFkZXIuc3Vic3RyaW5nKHNwbGl0UG9zKzEpLnN0cmlwV2hpdGVTcGFj
ZSgpKTsKKyAgICAgICAgaWYgKHNwbGl0UG9zICE9IC0xKSB7CisgICAgICAgICAgICBTdHJpbmcg
a2V5ID0gaGVhZGVyLmxlZnQoc3BsaXRQb3MpLnN0cmlwV2hpdGVTcGFjZSgpOworICAgICAgICAg
ICAgU3RyaW5nIHZhbHVlID0gaGVhZGVyLnN1YnN0cmluZyhzcGxpdFBvcyArIDEpLnN0cmlwV2hp
dGVTcGFjZSgpOworCisgICAgICAgICAgICBpZiAoaXNBcHBlbmRhYmxlSGVhZGVyKGtleSkpCisg
ICAgICAgICAgICAgICAgZC0+bV9yZXNwb25zZS5hZGRIVFRQSGVhZGVyRmllbGQoa2V5LCB2YWx1
ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZC0+bV9yZXNwb25zZS5zZXRI
VFRQSGVhZGVyRmllbGQoa2V5LCB2YWx1ZSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1
cm4gdG90YWxTaXplOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204580</attachid>
            <date>2013-06-13 06:47:17 -0700</date>
            <delta_ts>2013-06-13 09:56:14 -0700</delta_ts>
            <desc>style fixed patch</desc>
            <filename>curl_http_header_merge_2.patch</filename>
            <type>text/plain</type>
            <size>3088</size>
            <attacher name="Peter Gal">galpeter</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2Zjc2MjY0Li41YWM2N2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTMtMDYtMTMgIFBldGVyIEdhbCAgPGdhbHBldGVyQGluZi51LXN6ZWdlZC5odT4KKwor
ICAgICAgICBbY3VybF0gTWVyZ2UgaHR0cCByZXNwb25zZSBoZWFkZXIgdmFsdWVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTczNDIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBY2NvcmRpbmcgdG8gdGhl
IEhUVFAgUkZDIHNvbWUgSFRUUCBoZWFkZXIgdmFsdWVzIHNob3VsZCBiZQorICAgICAgICBtZXJn
ZWQgaWYgbXVsdGlwbGUgZW50cmllcyBmb3IgdGhlIHNhbWUgaGVhZGVyIGV4aXN0cy4KKworICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aXNBcHBlbmRhYmxlSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OmhlYWRlckNhbGxiYWNrKToKKwogMjAxMy0wNi0xMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB0aGUgbm90aW9uIG9mIGluYWN0aXZlIHBs
dWctaW5zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCmluZGV4IDQ4NzE2ODUuLjcwYmFkMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCkBAIC0yMzYsNiArMjM2LDQ4IEBAIHN0YXRp
YyBzaXplX3Qgd3JpdGVDYWxsYmFjayh2b2lkKiBwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1l
bWIsIHZvaWQqIGRhdGEpCiAgICAgcmV0dXJuIHRvdGFsU2l6ZTsKIH0KIAorc3RhdGljIGJvb2wg
aXNBcHBlbmRhYmxlSGVhZGVyKGNvbnN0IFN0cmluZyAma2V5KQoreworICAgIHN0YXRpYyBjb25z
dCBjaGFyICphcHBlbmRhYmxlSGVhZGVyc1tdID0geworICAgICAgICAiYWNjZXNzLWNvbnRyb2wt
YWxsb3ctaGVhZGVycyIsCisgICAgICAgICJhY2Nlc3MtY29udHJvbC1hbGxvdy1tZXRob2RzIiwK
KyAgICAgICAgImFjY2Vzcy1jb250cm9sLWFsbG93LW9yaWdpbiIsCisgICAgICAgICJhY2Nlc3Mt
Y29udHJvbC1leHBvc2UtaGVhZGVycyIsCisgICAgICAgICJhbGxvdyIsCisgICAgICAgICJjYWNo
ZS1jb250cm9sIiwKKyAgICAgICAgImNvbm5lY3Rpb24iLAorICAgICAgICAiY29udGVudC1lbmNv
ZGluZyIsCisgICAgICAgICJjb250ZW50LWxhbmd1YWdlIiwKKyAgICAgICAgImlmLW1hdGNoIiwK
KyAgICAgICAgImlmLW5vbmUtbWF0Y2giLAorICAgICAgICAia2VlcC1hbGl2ZSIsCisgICAgICAg
ICJwcmFnbWEiLAorICAgICAgICAicHJveHktYXV0aGVudGljYXRlIiwKKyAgICAgICAgInB1Ymxp
YyIsCisgICAgICAgICJzZXJ2ZXIiLAorICAgICAgICAidGUiLAorICAgICAgICAidHJhaWxlciIs
CisgICAgICAgICJ0cmFuc2Zlci1lbmNvZGluZyIsCisgICAgICAgICJ1cGdyYWRlIiwKKyAgICAg
ICAgInVzZXItYWdlbnQiLAorICAgICAgICAidmFyeSIsCisgICAgICAgICJ2aWEiLAorICAgICAg
ICAid2FybmluZyIsCisgICAgICAgICJ3d3ctYXV0aGVudGljYXRlIiwKKyAgICAgICAgMAorICAg
IH07CisKKyAgICAvLyBDdXN0b20gaGVhZGVycyB1c3VhbGx5IHN0YXJ0cyB3aXRoICdYLScsIGFs
bG93IHRoZW0uCisgICAgaWYgKGtleS5zdGFydHNXaXRoKCJ4LSIsIC8qIGNhc2VTZW5zaXRpdmUg
Ki8gZmFsc2UpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGFwcGVuZGFibGVIZWFkZXJzW2ldOyArK2kpCisgICAgICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShrZXksIGFwcGVuZGFibGVIZWFkZXJzW2ldKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiAvKgogICogVGhpcyBpcyBiZWluZyBjYWxsZWQg
Zm9yIGVhY2ggSFRUUCBoZWFkZXIgaW4gdGhlIHJlc3BvbnNlLiBUaGlzIGluY2x1ZGVzICdcclxu
JwogICogZm9yIHRoZSBsYXN0IGxpbmUgb2YgdGhlIGhlYWRlci4KQEAgLTMxNiw4ICszNTgsMTUg
QEAgc3RhdGljIHNpemVfdCBoZWFkZXJDYWxsYmFjayhjaGFyKiBwdHIsIHNpemVfdCBzaXplLCBz
aXplX3Qgbm1lbWIsIHZvaWQqIGRhdGEpCiAKICAgICB9IGVsc2UgewogICAgICAgICBpbnQgc3Bs
aXRQb3MgPSBoZWFkZXIuZmluZCgiOiIpOwotICAgICAgICBpZiAoc3BsaXRQb3MgIT0gLTEpCi0g
ICAgICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChoZWFkZXIubGVmdChz
cGxpdFBvcyksIGhlYWRlci5zdWJzdHJpbmcoc3BsaXRQb3MrMSkuc3RyaXBXaGl0ZVNwYWNlKCkp
OworICAgICAgICBpZiAoc3BsaXRQb3MgIT0gLTEpIHsKKyAgICAgICAgICAgIFN0cmluZyBrZXkg
PSBoZWFkZXIubGVmdChzcGxpdFBvcykuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgICAgICAgICBT
dHJpbmcgdmFsdWUgPSBoZWFkZXIuc3Vic3RyaW5nKHNwbGl0UG9zICsgMSkuc3RyaXBXaGl0ZVNw
YWNlKCk7CisKKyAgICAgICAgICAgIGlmIChpc0FwcGVuZGFibGVIZWFkZXIoa2V5KSkKKyAgICAg
ICAgICAgICAgICBkLT5tX3Jlc3BvbnNlLmFkZEhUVFBIZWFkZXJGaWVsZChrZXksIHZhbHVlKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldEhUVFBI
ZWFkZXJGaWVsZChrZXksIHZhbHVlKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiB0
b3RhbFNpemU7Cg==
</data>
<flag name="review"
          id="225985"
          type_id="1"
          status="-"
          setter="bfulgham"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204625</attachid>
            <date>2013-06-13 09:56:14 -0700</date>
            <delta_ts>2013-06-13 21:47:27 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>curl_http_header_merge_3.patch</filename>
            <type>text/plain</type>
            <size>3097</size>
            <attacher name="Peter Gal">galpeter</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4ZjQyMzM0Li40ZTA1ZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTMtMDYtMTMgIFBldGVyIEdhbCAgPGdhbHBldGVyQGluZi51LXN6ZWdlZC5odT4KKwor
ICAgICAgICBbY3VybF0gTWVyZ2UgaHR0cCByZXNwb25zZSBoZWFkZXIgdmFsdWVzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTczNDIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBY2NvcmRpbmcgdG8gdGhl
IEhUVFAgUkZDIHNvbWUgSFRUUCBoZWFkZXIgdmFsdWVzIHNob3VsZCBiZQorICAgICAgICBtZXJn
ZWQgaWYgbXVsdGlwbGUgZW50cmllcyBmb3IgdGhlIHNhbWUgaGVhZGVyIGV4aXN0cy4KKworICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6aXNBcHBlbmRhYmxlSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OmhlYWRlckNhbGxiYWNrKToKKwogMjAxMy0wNi0xMyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFt
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1dpbkNhaXJvXSBVbnJldmlld2VkIGJ1aWxkIGNvcnJl
Y3Rpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
UmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCmluZGV4IDQ4NzE2ODUuLjYwZDJmMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZU1hbmFnZXIuY3BwCkBAIC0yMzYsNiArMjM2LDQ4IEBAIHN0YXRp
YyBzaXplX3Qgd3JpdGVDYWxsYmFjayh2b2lkKiBwdHIsIHNpemVfdCBzaXplLCBzaXplX3Qgbm1l
bWIsIHZvaWQqIGRhdGEpCiAgICAgcmV0dXJuIHRvdGFsU2l6ZTsKIH0KIAorc3RhdGljIGJvb2wg
aXNBcHBlbmRhYmxlSGVhZGVyKGNvbnN0IFN0cmluZyAma2V5KQoreworICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBhcHBlbmRhYmxlSGVhZGVyc1tdID0geworICAgICAgICAiYWNjZXNzLWNvbnRyb2wt
YWxsb3ctaGVhZGVycyIsCisgICAgICAgICJhY2Nlc3MtY29udHJvbC1hbGxvdy1tZXRob2RzIiwK
KyAgICAgICAgImFjY2Vzcy1jb250cm9sLWFsbG93LW9yaWdpbiIsCisgICAgICAgICJhY2Nlc3Mt
Y29udHJvbC1leHBvc2UtaGVhZGVycyIsCisgICAgICAgICJhbGxvdyIsCisgICAgICAgICJjYWNo
ZS1jb250cm9sIiwKKyAgICAgICAgImNvbm5lY3Rpb24iLAorICAgICAgICAiY29udGVudC1lbmNv
ZGluZyIsCisgICAgICAgICJjb250ZW50LWxhbmd1YWdlIiwKKyAgICAgICAgImlmLW1hdGNoIiwK
KyAgICAgICAgImlmLW5vbmUtbWF0Y2giLAorICAgICAgICAia2VlcC1hbGl2ZSIsCisgICAgICAg
ICJwcmFnbWEiLAorICAgICAgICAicHJveHktYXV0aGVudGljYXRlIiwKKyAgICAgICAgInB1Ymxp
YyIsCisgICAgICAgICJzZXJ2ZXIiLAorICAgICAgICAidGUiLAorICAgICAgICAidHJhaWxlciIs
CisgICAgICAgICJ0cmFuc2Zlci1lbmNvZGluZyIsCisgICAgICAgICJ1cGdyYWRlIiwKKyAgICAg
ICAgInVzZXItYWdlbnQiLAorICAgICAgICAidmFyeSIsCisgICAgICAgICJ2aWEiLAorICAgICAg
ICAid2FybmluZyIsCisgICAgICAgICJ3d3ctYXV0aGVudGljYXRlIiwKKyAgICAgICAgMAorICAg
IH07CisKKyAgICAvLyBDdXN0b20gaGVhZGVycyBzdGFydCB3aXRoICdYLScsIGFuZCBuZWVkIG5v
IGZ1cnRoZXIgY2hlY2tpbmcuCisgICAgaWYgKGtleS5zdGFydHNXaXRoKCJ4LSIsIC8qIGNhc2VT
ZW5zaXRpdmUgKi8gZmFsc2UpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGFwcGVuZGFibGVIZWFkZXJzW2ldOyArK2kpCisgICAgICAgIGlmIChlcXVh
bElnbm9yaW5nQ2FzZShrZXksIGFwcGVuZGFibGVIZWFkZXJzW2ldKSkKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiAvKgogICogVGhpcyBpcyBiZWlu
ZyBjYWxsZWQgZm9yIGVhY2ggSFRUUCBoZWFkZXIgaW4gdGhlIHJlc3BvbnNlLiBUaGlzIGluY2x1
ZGVzICdcclxuJwogICogZm9yIHRoZSBsYXN0IGxpbmUgb2YgdGhlIGhlYWRlci4KQEAgLTMxNiw4
ICszNTgsMTUgQEAgc3RhdGljIHNpemVfdCBoZWFkZXJDYWxsYmFjayhjaGFyKiBwdHIsIHNpemVf
dCBzaXplLCBzaXplX3Qgbm1lbWIsIHZvaWQqIGRhdGEpCiAKICAgICB9IGVsc2UgewogICAgICAg
ICBpbnQgc3BsaXRQb3MgPSBoZWFkZXIuZmluZCgiOiIpOwotICAgICAgICBpZiAoc3BsaXRQb3Mg
IT0gLTEpCi0gICAgICAgICAgICBkLT5tX3Jlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChoZWFk
ZXIubGVmdChzcGxpdFBvcyksIGhlYWRlci5zdWJzdHJpbmcoc3BsaXRQb3MrMSkuc3RyaXBXaGl0
ZVNwYWNlKCkpOworICAgICAgICBpZiAoc3BsaXRQb3MgIT0gLTEpIHsKKyAgICAgICAgICAgIFN0
cmluZyBrZXkgPSBoZWFkZXIubGVmdChzcGxpdFBvcykuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAg
ICAgICAgICBTdHJpbmcgdmFsdWUgPSBoZWFkZXIuc3Vic3RyaW5nKHNwbGl0UG9zICsgMSkuc3Ry
aXBXaGl0ZVNwYWNlKCk7CisKKyAgICAgICAgICAgIGlmIChpc0FwcGVuZGFibGVIZWFkZXIoa2V5
KSkKKyAgICAgICAgICAgICAgICBkLT5tX3Jlc3BvbnNlLmFkZEhUVFBIZWFkZXJGaWVsZChrZXks
IHZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkLT5tX3Jlc3BvbnNl
LnNldEhUVFBIZWFkZXJGaWVsZChrZXksIHZhbHVlKTsKKyAgICAgICAgfQogICAgIH0KIAogICAg
IHJldHVybiB0b3RhbFNpemU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>