<?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>27868</bug_id>
          
          <creation_ts>2009-07-30 22:43:52 -0700</creation_ts>
          <short_desc>http://www.ruthhuntcandy.com/ goes into infinite refresh in WebKit, works in others</short_desc>
          <delta_ts>2009-07-30 23:54:50 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.ruthhuntcandy.com/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>136105</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-07-30 22:43:52 -0700</bug_when>
    <thetext>http://www.ruthhuntcandy.com/ goes into infinite refresh in WebKit, works in Firefox.

They have this HTML in their main resource:
&lt;META HTTP-EQUIV=&quot;Refresh&quot; CONTENT=&quot;0; URL=&apos;http://www.ruthhuntcandy.com/default.asp&quot;&gt;

The quotes are mismatched:  Opens with a &apos; but closes with a &quot;.  parseHTTPRefresh() chokes in this case.

So we can&apos;t parse the URL and default to the main page URL of http://www.ruthhuntcandy.com/.  We do the scheduled refresh over and over, never moving on to http://www.ruthhuntcandy.com/default.asp

This is truly a site bug, but Firefox, Opera 10, and IE6+ are all tolerant of this.

In radar as &lt;rdar://problem/7106968&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136108</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-07-30 22:55:02 -0700</bug_when>
    <thetext>All the other browsers handle opening with a &apos; but closing with a &quot;
But none of them handle opening with a &quot; and closing with a &apos;

This is (probably and obviously) because &apos; is a legal URL character, but &quot; isn&apos;t.

So we just have to plug this specific case of &apos;-&quot; and leave &quot;-&apos; unanswered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136110</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-07-30 23:22:55 -0700</bug_when>
    <thetext>I completely missed the point here, actually.  The meta-equiv is:
&quot;0; URL=&apos;http://www.ruthhuntcandy.com/default.asp&quot;

The opening and closing quotes are stripped in this context as a matching pair, leaving us with:
0; URL=&apos;http://www.ruthhuntcandy.com/default.asp

The opening single quote has no closer.

Thats the case we need to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136112</commentid>
    <comment_count>3</comment_count>
      <attachid>33860</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-07-30 23:44:29 -0700</bug_when>
    <thetext>Created attachment 33860
Fix + Layout Test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136113</commentid>
    <comment_count>4</comment_count>
      <attachid>33860</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-07-30 23:48:47 -0700</bug_when>
    <thetext>Comment on attachment 33860
Fix + Layout Test

&gt; Index: WebCore/platform/network/HTTPParsers.cpp
&gt; ===================================================================
&gt; --- WebCore/platform/network/HTTPParsers.cpp	(revision 46514)
&gt; +++ WebCore/platform/network/HTTPParsers.cpp	(working copy)
&gt; @@ -100,6 +100,12 @@ bool parseHTTPRefresh(const String&amp; refr
&gt;                  if (refresh[urlEndPos] == quotationMark)
&gt;                      break;
&gt;              }
&gt; +            
&gt; +            // https://bugs.webkit.org/show_bug.cgi?id=27868
&gt; +            // Sometimes there is no closing quote for the end of the URL even though there was an opening quote.
&gt; +            // All of the other browsers handle this case.
&gt; +            if (urlEndPos == urlStartPos)
&gt; +                urlEndPos = len;
&gt;          }

The comment could be a little clearer about what it is we do to handle the stray quote (eg, skip over it).  I had to read back up in the code to work out how this code related to the quote at all.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>136114</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2009-07-30 23:54:50 -0700</bug_when>
    <thetext>Sending        LayoutTests/ChangeLog
Adding         LayoutTests/http/tests/misc/meta-refresh-stray-single-quote-expected.txt
Adding         LayoutTests/http/tests/misc/meta-refresh-stray-single-quote.html
Adding         LayoutTests/http/tests/misc/resources/success-notify-done.html
Sending        WebCore/ChangeLog
Sending        WebCore/platform/network/HTTPParsers.cpp
Transmitting file data ......
Committed revision 46624.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33860</attachid>
            <date>2009-07-30 23:44:29 -0700</date>
            <delta_ts>2009-07-30 23:48:46 -0700</delta_ts>
            <desc>Fix + Layout Test</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>4167</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NjYyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMDktMDctMzAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS83MTA2OTY4PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTI3ODY4CisgICAgICAgIGh0dHA6Ly93d3cucnV0aGh1bnRjYW5keS5jb20vIGdv
ZXMgaW50byBpbmZpbml0ZSByZWZyZXNoIGluIFdlYktpdCwgd29ya3MgaW4gb3RoZXJzLgorICAg
ICAgICAKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9taXNjL21ldGEtcmVmcmVzaC1zdHJheS1z
aW5nbGUtcXVvdGUuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vy
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUhUVFBSZWZyZXNoKTogQWxsb3cgZm9yIGEg
c3RyYXkgcXVvdGUgY2hhcmFjdGVyIGF0IHRoZSBzdGFydCBvZiB0aGUgVVJMIHN0cmluZy4KKwog
MjAwOS0wNy0zMCAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFkZWxlIFBldGVyc29uIGFuZCBKb24gSG9uZXljdXR0LgpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCShyZXZpc2lvbiA0NjUxNCkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
MCw2ICsxMDAsMTIgQEAgYm9vbCBwYXJzZUhUVFBSZWZyZXNoKGNvbnN0IFN0cmluZyYgcmVmcgog
ICAgICAgICAgICAgICAgIGlmIChyZWZyZXNoW3VybEVuZFBvc10gPT0gcXVvdGF0aW9uTWFyaykK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Nzg2OAorICAgICAgICAgICAgLy8gU29tZXRpbWVzIHRoZXJlIGlzIG5vIGNsb3NpbmcgcXVvdGUg
Zm9yIHRoZSBlbmQgb2YgdGhlIFVSTCBldmVuIHRob3VnaCB0aGVyZSB3YXMgYW4gb3BlbmluZyBx
dW90ZS4KKyAgICAgICAgICAgIC8vIEFsbCBvZiB0aGUgb3RoZXIgYnJvd3NlcnMgaGFuZGxlIHRo
aXMgY2FzZS4KKyAgICAgICAgICAgIGlmICh1cmxFbmRQb3MgPT0gdXJsU3RhcnRQb3MpCisgICAg
ICAgICAgICAgICAgdXJsRW5kUG9zID0gbGVuOwogICAgICAgICB9CiAKICAgICAgICAgdXJsID0g
cmVmcmVzaC5zdWJzdHJpbmcodXJsU3RhcnRQb3MsIHVybEVuZFBvcyAtIHVybFN0YXJ0UG9zKS5z
dHJpcFdoaXRlU3BhY2UoKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ2NjIzKQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDktMDctMzAg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTA2OTY4PiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3ODY4CisgICAgICAgIGh0
dHA6Ly93d3cucnV0aGh1bnRjYW5keS5jb20vIGdvZXMgaW50byBpbmZpbml0ZSByZWZyZXNoIGlu
IFdlYktpdCwgd29ya3MgaW4gb3RoZXJzLgorCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL21l
dGEtcmVmcmVzaC1zdHJheS1zaW5nbGUtcXVvdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL21pc2MvbWV0YS1yZWZyZXNoLXN0cmF5LXNpbmdsZS1xdW90ZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL3N1Y2Nlc3Mtbm90
aWZ5LWRvbmUuaHRtbDogQWRkZWQuCisKIDIwMDktMDctMzAgIEFkYW0gVHJlYXQgIDxhZGFtLnRy
ZWF0QHRvcmNobW9iaWxlLmNvbT4KIAogICAgICAgICBBZGQgZXhwZWN0ZWQgcmVzdWx0cyBmaWxl
IGZvciBuZXcgdGVzdC4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9tZXRhLXJl
ZnJlc2gtc3RyYXktc2luZ2xlLXF1b3RlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvbWV0YS1yZWZyZXNoLXN0cmF5LXNpbmdsZS1xdW90ZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2Mv
bWV0YS1yZWZyZXNoLXN0cmF5LXNpbmdsZS1xdW90ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEgQEAKK1NVQ0NFU1MKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlz
Yy9tZXRhLXJlZnJlc2gtc3RyYXktc2luZ2xlLXF1b3RlLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL21ldGEtcmVmcmVzaC1zdHJheS1zaW5nbGUtcXVvdGUu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9tZXRhLXJl
ZnJlc2gtc3RyYXktc2luZ2xlLXF1b3RlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkg
QEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworCWxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwlsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9Cis8L3NjcmlwdD4KKworPG1ldGEgaHR0cC1l
cXVpdj0iUmVmcmVzaCIgY29udGVudD0iMDsgdXJsPSdyZXNvdXJjZXMvc3VjY2Vzcy1ub3RpZnkt
ZG9uZS5odG1sIj4KKworPC9oZWFkPgorPGJvZHk+Cis8YSBocmVmPSJodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc4NjgiPmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNzg2ODwvYT48YnI+CitTb21lIGF1dGhvcnMgaGF2ZSBhY2NpZGVudGFs
bHkgd3JpdHRlbiBodHRwLWVxdXYgcmVmcmVzaCBoZWFkZXJzIHdpdGggYSBzdHJheSAnIGRlbm90
aW5nIHRoZSBVUkw8YnI+CitBbGwgb2YgdGhlIG90aGVyIGJyb3dzZXJzIGhhbmRsZSB0aGlzLCBz
byB3ZSBzaG91bGQgYWxzbyBmb3IgY29tcGF0aWJpbGl0eS48YnI+CitUaGlzIHBhZ2Ugd2lsbCBl
aXRoZXIgZ28gaW50byBpbmZpbml0ZSByZWZyZXNoLCBvciB3aWxsIGNvcnJlY3RseSByZWRpcmVj
dCBvbmNlLjxicj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWlzYy9yZXNvdXJjZXMvc3VjY2Vzcy1ub3RpZnktZG9uZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvc3VjY2Vzcy1ub3RpZnktZG9u
ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291
cmNlcy9zdWNjZXNzLW5vdGlmeS1kb25lLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNyBA
QAorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisJbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworPC9zY3JpcHQ+Cis8Ym9keT4KK1NVQ0NFU1MKKzwv
Ym9keT4K
</data>
<flag name="review"
          id="18054"
          type_id="1"
          status="+"
          setter="mrowe"
    />
          </attachment>
      

    </bug>

</bugzilla>