<?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>38428</bug_id>
          
          <creation_ts>2010-05-02 03:24:41 -0700</creation_ts>
          <short_desc>HTTP code 500 (and other non-4xx codes) wrongfully treated as success for subresources</short_desc>
          <delta_ts>2010-08-20 22:06:46 -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></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="Thomas Steinacher">tom</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>playmobil</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>219809</commentid>
    <comment_count>0</comment_count>
    <who name="Thomas Steinacher">tom</who>
    <bug_when>2010-05-02 03:24:41 -0700</bug_when>
    <thetext>The following code produces an alert in Firefox, but none in Safari/Chrome:

&lt;html&gt;
&lt;head&gt;
&lt;script src=&quot;http://example.com/NOTFOUND.js&quot; type=&quot;text/javascript&quot; onerror=&quot;alert(&apos;error&apos;)&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;/body&gt;
&lt;/html&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>219812</commentid>
    <comment_count>1</comment_count>
    <who name="Thomas Steinacher">tom</who>
    <bug_when>2010-05-02 03:36:20 -0700</bug_when>
    <thetext>Sorry, my first example is actually working correctly in both browsers (although I thought I tested it, maybe a cache issue). Here&apos;s another test case that doesn&apos;t work however:

test.php:
&lt;?php
header(&apos;HTTP/1.1 500 Internal Server Error&apos;);
?&gt;
alert(&apos;executing script&apos;);


onerror.html:
&lt;html&gt;
&lt;head&gt;
&lt;script onerror=&quot;alert(&apos;error&apos;);&quot; src=&quot;test.php&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;head&gt;
&lt;body&gt;
&lt;/body&gt;
&lt;/html&gt;


Firefox displays an &quot;error&quot; alert here, whereas Safari/Chrome try to execute the script (i.e. the &quot;executing script&quot; alert box shows up). As 500 is an error code, I believe Firefox&apos; behavior is correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220181</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-05-03 10:48:12 -0700</bug_when>
    <thetext>Yes, we wrongfully only treat 4xx as error for subresources:

    if (resource-&gt;response().httpStatusCode() / 100 == 4) {
        // Treat a 4xx response like a network error for all resources but images (which will ignore the error and continue to load for 
        // legacy compatibility).
        resource-&gt;httpStatusCodeError();
        return;
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220185</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-05-03 11:01:07 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Yes, we wrongfully only treat 4xx as error for subresources:
&gt; 
&gt;     if (resource-&gt;response().httpStatusCode() / 100 == 4) {
&gt;         // Treat a 4xx response like a network error for all resources but
&gt; images (which will ignore the error and continue to load for 
&gt;         // legacy compatibility).
&gt;         resource-&gt;httpStatusCodeError();
&gt;         return;
&gt;     }

Funny thing is we do a `&gt;= 400` check in many other places.


Resource.js:         
if (this.statusCode &gt;= 400)

InspectorController.cpp:     
if (response.httpStatusCode() &gt;= 400) {

DocumentLoader.cpp:     
return m_substituteData.isValid() || m_response.httpStatusCode() &gt;= 400;

HistoryController.cpp:     
if (!unreachableURL.isEmpty() || !docLoader || docLoader-&gt;response().httpStatusCode() &gt;= 400)

NetscapePlugInStreamLoader.cpp:     
if (response.httpStatusCode() &lt; 100 || response.httpStatusCode() &gt;= 400)

I wonder if there&apos;s any particular reason the cache doesn&apos;t do that, or if it&apos;s just an ancient bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>220212</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-05-03 11:30:27 -0700</bug_when>
    <thetext>ApplicationCache does &quot;response.httpStatusCode() / 100 != 2&quot;, which I thought was the formally correct thing to do. Of course, the networking layer insulates us from seeing things like 101 or 304 in the loader too often.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267498</commentid>
    <comment_count>5</comment_count>
      <attachid>65013</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-08-20 17:50:08 -0700</bug_when>
    <thetext>Created attachment 65013
proposed patch

Let&apos;s try and see what breaks?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267519</commentid>
    <comment_count>6</comment_count>
      <attachid>65013</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-08-20 19:58:39 -0700</bug_when>
    <thetext>Comment on attachment 65013
proposed patch

Yes.  Let&apos;s see.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267533</commentid>
    <comment_count>7</comment_count>
      <attachid>65013</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-20 22:06:40 -0700</bug_when>
    <thetext>Comment on attachment 65013
proposed patch

Clearing flags on attachment: 65013

Committed r65774: &lt;http://trac.webkit.org/changeset/65774&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267534</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-20 22:06:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65013</attachid>
            <date>2010-08-20 17:50:08 -0700</date>
            <delta_ts>2010-08-20 22:06:40 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>500.txt</filename>
            <type>text/plain</type>
            <size>3450</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTc3MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTAtMDgtMjAgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NDI4CisgICAgICAgIEhU
VFAgY29kZSA1MDAgKGFuZCBvdGhlciBub24tNHh4IGNvZGVzKSB3cm9uZ2Z1bGx5IHRyZWF0ZWQg
YXMgc3VjY2VzcyBmb3Igc3VicmVzb3VyY2VzCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9t
aXNjL3NjcmlwdC01MDAuaHRtbAorCisgICAgICAgICogbG9hZGVyL2xvYWRlci5jcHA6IChXZWJD
b3JlOjpMb2FkZXI6Okhvc3Q6OmRpZFJlY2VpdmVEYXRhKTogVHJlYXQgYWxsIEhUVFAgY29kZXMg
Pj0gNDAwIGFzCisgICAgICAgIGVycm9yIG9uZXMsIHNpbmNlIHRoZXkgYXJlLgorCiAyMDEwLTA4
LTIwICBUb255IEdlbnRpbGNvcmUgIDx0b255Z0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcAkocmV2aXNpb24gNjU3MzcpCisr
KyBXZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTEsOSArNTUx
LDcgQEAgdm9pZCBMb2FkZXI6Okhvc3Q6OmRpZFJlY2VpdmVEYXRhKFN1YnJlcwogICAgIGlmIChy
ZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAg
IGlmIChyZXNvdXJjZS0+cmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpIC8gMTAwID09IDQpIHsK
LSAgICAgICAgLy8gVHJlYXQgYSA0eHggcmVzcG9uc2UgbGlrZSBhIG5ldHdvcmsgZXJyb3IgZm9y
IGFsbCByZXNvdXJjZXMgYnV0IGltYWdlcyAod2hpY2ggd2lsbCBpZ25vcmUgdGhlIGVycm9yIGFu
ZCBjb250aW51ZSB0byBsb2FkIGZvciAKLSAgICAgICAgLy8gbGVnYWN5IGNvbXBhdGliaWxpdHkp
LgorICAgIGlmIChyZXNvdXJjZS0+cmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpID49IDQwMCkg
ewogICAgICAgICByZXNvdXJjZS0+aHR0cFN0YXR1c0NvZGVFcnJvcigpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjU3NzApCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wOC0yMCAgQWxleGV5
IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mzg0MjgKKyAgICAgICAgSFRUUCBjb2RlIDUwMCAoYW5kIG90aGVyIG5vbi00eHggY29k
ZXMpIHdyb25nZnVsbHkgdHJlYXRlZCBhcyBzdWNjZXNzIGZvciBzdWJyZXNvdXJjZXMKKworICAg
ICAgICAqIGh0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMvc2NyaXB0LTUwMC5waHA6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9zY3JpcHQtNTAwLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL3NjcmlwdC01MDAuaHRtbDogQWRkZWQuCisKIDIw
MTAtMDgtMjAgIFRvbnkgR2VudGlsY29yZSAgPHRvbnlnQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9t
aXNjL3NjcmlwdC01MDAtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbWlzYy9zY3JpcHQtNTAwLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9zY3JpcHQtNTAwLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwyIEBACitUZXN0IHRoYXQgb25lcnJvciBmaXJlcyBmb3IgYSBzY3Jp
cHQgd2l0aCBIVFRQIHN0YXR1cyA1MDAuCitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21pc2Mvc2NyaXB0LTUwMC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvbWlzYy9zY3JpcHQtNTAwLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21pc2Mvc2NyaXB0LTUwMC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEx
IEBACis8aHRtbD4KKzxib2R5PgorPGRpdj5UZXN0IHRoYXQgb25lcnJvciBmaXJlcyBmb3IgYSBz
Y3JpcHQgd2l0aCBIVFRQIHN0YXR1cyA1MDAuPC9kaXY+Cis8ZGl2IGlkPXJlc3VsdD5UZXN0aW5n
Li4uPC9kaXY+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
b25lcnJvcj0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdQ
QVNTJzsiIHNyYz0icmVzb3VyY2VzL3NjcmlwdC01MDAucGhwIiB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9taXNjL3Jlc291cmNlcy9zY3JpcHQtNTAwLnBocAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL3NjcmlwdC01MDAucGhwCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9zY3JpcHQtNTAwLnBo
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACis8P3BocAoraGVhZGVyKCdIVFRQLzEuMSA1
MDAgSW50ZXJuYWwgU2VydmVyIEVycm9yJyk7Cis/PgorZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlMJzsK
</data>

          </attachment>
      

    </bug>

</bugzilla>