X-Git-Url: https://git.novaco.in/?p=electrum-server.git;a=blobdiff_plain;f=transports%2Fstratum_http.py;h=ef738e36d56600a638dd3a15fc2d0649ba8730bd;hp=6e13aac41f0736531dbb62df11016413cf17f470;hb=289ccdf9d4eb9b686d26b6482992cd4ad078df9f;hpb=08cf934e360070582956a69ad0d077d6d6092025 diff --git a/transports/stratum_http.py b/transports/stratum_http.py index 6e13aac..ef738e3 100644 --- a/transports/stratum_http.py +++ b/transports/stratum_http.py @@ -97,6 +97,10 @@ class StratumJSONRPCDispatcher(SimpleXMLRPCServer.SimpleXMLRPCDispatcher): response = fault.response() return response + session = self.dispatcher.get_session_by_address(session_id) + if not session: + return 'Error: session not found' + responses = [] if type(request) is not types.ListType: request = [ request ] @@ -107,13 +111,12 @@ class StratumJSONRPCDispatcher(SimpleXMLRPCServer.SimpleXMLRPCDispatcher): responses.append(result.response()) continue - session = self.sessions.get(session_id) self.dispatcher.process(session, req_entry) if req_entry['method'] == 'server.stop': return json.dumps({'result':'ok'}) - r = self.poll_session(session_id) + r = self.poll_session(session) for item in r: responses.append(json.dumps(item)) @@ -164,6 +167,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) @@ -212,6 +216,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) @@ -252,16 +257,16 @@ class StratumJSONRPCServer(SocketServer.TCPServer, StratumJSONRPCDispatcher): flags |= fcntl.FD_CLOEXEC fcntl.fcntl(self.fileno(), fcntl.F_SETFD, flags) - self.sessions = {} def create_session(self): session_id = random_string(10) - self.sessions[session_id] = HttpSession(session_id) + session = HttpSession(session_id) + self.dispatcher.add_session(session) return session_id - def poll_session(self, session_id): - q = self.sessions[session_id].pending_responses + def poll_session(self, session): + q = session.pending_responses responses = [] while not q.empty(): r = q.get()