All pastes #2007861 Raw Edit

Something

public text v1 · immutable
#2007861 ·published 2010-12-01 17:39 UTC
rendered paste body
diff -Nur download/OpenLayers-2.10/lib/OpenLayers//Protocol/HTTP.js OpenLayers-2.10/lib/OpenLayers//Protocol/HTTP.js
--- download/OpenLayers-2.10/lib/OpenLayers//Protocol/HTTP.js	2010-09-02 23:43:25.000000000 +0200
+++ OpenLayers-2.10/lib/OpenLayers//Protocol/HTTP.js	2010-12-01 18:19:54.621164636 +0100
@@ -457,15 +457,34 @@
      */
     handleResponse: function(resp, options) {
         var request = resp.priv;
+        // As far as I remember, we do not have access to the
+        // request URL, so we cannot change behaviour depending
+        // on protocol
         if(options.callback) {
-            if(request.status >= 200 && request.status < 300) {
-                // success
-                if(resp.requestType != "delete") {
+            // TODO: we can also just key on request.status
+            try {
+                if (resp.requestType != "delete") {
                     resp.features = this.parseFeatures(request);
+                    // if we can get some features, then everything must be OK.
+                    if (resp.features) {
+                        resp.code = OpenLayers.Protocol.Response.SUCCESS;
+                    } else {
+                        resp.code = OpenLayers.Protocol.Response.FAILURE;
+                    }
+                } else {
+                  // for delete, we apparently do not get a response
+                  // that's worth parsing, so fall back to HTTP status code
+                  // since we probably never delete request over anything
+                  // other than http, we should be fine
+                  if ((request.status >= 200 && request.status < 300)) {
+                      resp.code = OpenLayers.Protocol.Response.SUCCESS;
+                  } else {
+                      resp.code = OpenLayers.Protocol.Response.FAILURE;
+                  }
+                   
                 }
-                resp.code = OpenLayers.Protocol.Response.SUCCESS;
-            } else {
-                // failure
+
+            } catch (e) {
                 resp.code = OpenLayers.Protocol.Response.FAILURE;
             }
             options.callback.call(options.scope, resp);