fix even more hang situations due to client_mutex

This commit is contained in:
ha7ilm 2014-12-11 20:04:24 +01:00
parent 7b680a8ed3
commit 4332466210
2 changed files with 11 additions and 2 deletions

View File

@ -1259,9 +1259,15 @@ function on_ws_error(event)
divlog("WebSocket error.",1); divlog("WebSocket error.",1);
} }
String.prototype.startswith=function(str){ return this.indexOf(str) == 0; }; //http://stackoverflow.com/questions/646628/how-to-check-if-a-string-startswith-another-string
function open_websocket() function open_websocket()
{ {
//ws_url="ws://"+(window.location.origin.split("://")[1])+"/ws/" //guess automatically if(ws_url.startswith("ws://localhost:")&&window.location.hostname!="127.0.0.1"&&window.location.hostname!="localhost")
{
divlog("Server administrator should set <em>server_hostname</em> correctly, because it is left as <em>\"localhost\"</em>. Now guessing hostname from page URL.",1);
ws_url="ws://"+(window.location.origin.split("://")[1])+"/ws/"; //guess automatically
}
if (!("WebSocket" in window)) if (!("WebSocket" in window))
divlog("Your browser does not support WebSocket, which is required for WebRX to run. Please upgrade to a HTML5 compatible browser."); divlog("Your browser does not support WebSocket, which is required for WebRX to run. Please upgrade to a HTML5 compatible browser.");
ws = new WebSocket(ws_url+client_id); ws = new WebSocket(ws_url+client_id);

View File

@ -153,10 +153,13 @@ def spectrum_thread_function():
data=dsp.read(cfg.fft_size*4) data=dsp.read(cfg.fft_size*4)
#print "gotcha",len(data),"bytes of spectrum data via spectrum_thread_function()" #print "gotcha",len(data),"bytes of spectrum data via spectrum_thread_function()"
clients_mutex.acquire() clients_mutex.acquire()
correction=0
for i in range(0,len(clients)): for i in range(0,len(clients)):
i-=correction
if (clients[i].ws_started): if (clients[i].ws_started):
if clients[i].spectrum_queue.full(): if clients[i].spectrum_queue.full():
close_client(i, False) close_client(i, False)
correction+=1
else: else:
clients[i].spectrum_queue.put([data]) # add new string by "reference" to all clients clients[i].spectrum_queue.put([data]) # add new string by "reference" to all clients
clients_mutex.release() clients_mutex.release()