瀏覽代碼

fix xhr race condition

ericz 12 年之前
父節點
當前提交
d5f72731ab
共有 2 個文件被更改,包括 13 次插入6 次删除
  1. 12 5
      lib/server.js
  2. 1 1
      package.json

+ 12 - 5
lib/server.js

@@ -224,14 +224,21 @@ PeerServer.prototype._initializeHTTP = function() {
   var handle = function(req, res) {
     var key = req.params.key;
     var id = req.params.id;
-    if (!self._clients[key]) {
-      // Retry this request
-      res.send(202);
+    
+    var client;
+    if (!self._clients[key] || !(client = self._clients[key][id])) {
+      if (req.params.retry) {
+        res.send(401);
+      } else {
+        // Retry this request
+        req.params.retry = true;
+        setTimeout(handle, 25, req, res);
+      }
       return;
     }
-    var client = self._clients[key][id];
+    
     // Auth the req
-    if (!client || req.params.token !== client.token) {
+    if (req.params.token !== client.token) {
       res.send(401);
       return;
     } else {

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "peer",
-  "version": "0.1.3",
+  "version": "0.1.4",
   "description": "Peer-to-peer data in browsers",
   "main": "lib/server.js",
   "repository": {