Access-Control-Allow-Origin ; session bug workaround
[electrum-server.git] / transports / stratum_http.py
index 25e0738..d628df7 100644 (file)
@@ -47,11 +47,7 @@ from the processor point of view:
 """
 
 
-def random_string(N):
-    import random, string
-    return ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(N))
-
-
+from processor import random_string
 
 
 def get_version(request):
@@ -168,6 +164,7 @@ class StratumJSONRPCRequestHandler(
             self.send_header("Set-Cookie", "SESSION=%s"%session_id)
 
         self.send_header("Content-type", "application/json-rpc")
+        self.send_header("Access-Control-Allow-Origin", "*")
         self.send_header("Content-length", str(len(response)))
         self.end_headers()
         self.wfile.write(response)
@@ -216,6 +213,7 @@ class StratumJSONRPCRequestHandler(
             self.send_header("Set-Cookie", "SESSION=%s"%session_id)
 
         self.send_header("Content-type", "application/json-rpc")
+        self.send_header("Access-Control-Allow-Origin", "*")
         self.send_header("Content-length", str(len(response)))
         self.end_headers()
         self.wfile.write(response)
@@ -259,7 +257,6 @@ class StratumJSONRPCServer(SocketServer.TCPServer, StratumJSONRPCDispatcher):
         self.sessions = {}
 
 
-
     def create_session(self):
         session_id = random_string(10)
         self.sessions[session_id] = HttpSession(session_id)
@@ -283,7 +280,8 @@ class HttpSession(Session):
     def __init__(self, session_id):
         Session.__init__(self)
         self.pending_responses = Queue.Queue()
-        print "new http session", session_id
+        self.address = session_id
+        self.name = "HTTP session"
 
     def send_response(self, response):
         raw_response = json.dumps(response)
@@ -307,6 +305,7 @@ class HttpServer(threading.Thread):
         self.server = StratumThreadedJSONRPCServer(( self.host, self.port))
         self.server.dispatcher = self.dispatcher
         self.server.register_function(None, 'server.stop')
+        self.server.register_function(None, 'server.info')
 
         print "HTTP server started."
         self.server.serve_forever()