import SocketServer
import socket
import logging
-import os
+import os, time
import types
import traceback
import sys, threading
session = self.dispatcher.get_session_by_address(session_id)
if not session:
return 'Error: session not found'
+ session.time = time.time()
responses = []
if type(request) is not types.ListType:
responses.append(result.response())
continue
- self.dispatcher.process(session, req_entry)
+ self.dispatcher.do_dispatch(session, req_entry)
if req_entry['method'] == 'server.stop':
return json.dumps({'result':'ok'})
class StratumJSONRPCRequestHandler(
SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):
-
+
+ def do_OPTIONS(self):
+ self.send_response(200)
+ self.send_header('Allow', 'GET, POST, OPTIONS')
+ self.send_header('Access-Control-Allow-Origin', '*')
+ self.send_header('Access-Control-Allow-Headers', 'X-Request, X-Requested-With')
+ self.send_header('Content-Length', '0')
+ self.end_headers()
+
def do_GET(self):
if not self.is_rpc_path_valid():
self.report_404()
Session.__init__(self)
self.pending_responses = Queue.Queue()
self.address = session_id
- self.name = "HTTP session"
+ self.name = "HTTP"
def send_response(self, response):
raw_response = json.dumps(response)
self.pending_responses.put(response)
+ def stopped(self):
+ with self.lock:
+ if time.time() - self.time > 60:
+ self._stopped = True
+ return self._stopped
+
class HttpServer(threading.Thread):
def __init__(self, dispatcher, host, port):
self.shared = dispatcher.shared