|
|
|
|
@ -103,21 +103,21 @@ static void __websocket_queue_raw(struct websocket_conn *wc, const char *msg, si
|
|
|
|
|
|
|
|
|
|
// appends to output buffer without triggering a response
|
|
|
|
|
void websocket_queue_raw(struct websocket_conn *wc, const char *msg, size_t len) {
|
|
|
|
|
mutex_lock(&wc->lock);
|
|
|
|
|
LOCK(&wc->lock);
|
|
|
|
|
__websocket_queue_raw(wc, msg, len);
|
|
|
|
|
mutex_unlock(&wc->lock);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// num bytes in output buffer
|
|
|
|
|
size_t websocket_queue_len(struct websocket_conn *wc) {
|
|
|
|
|
mutex_lock(&wc->lock);
|
|
|
|
|
LOCK(&wc->lock);
|
|
|
|
|
|
|
|
|
|
size_t ret = 0;
|
|
|
|
|
for (GList *l = wc->output_q.head; l; l = l->next) {
|
|
|
|
|
struct websocket_output *wo = l->data;
|
|
|
|
|
ret += (wo->str->len - LWS_PRE);
|
|
|
|
|
}
|
|
|
|
|
mutex_unlock(&wc->lock);
|
|
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -159,9 +159,8 @@ int websocket_write_binary(struct websocket_conn *wc, const char *msg, size_t le
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void websocket_write_next(struct websocket_conn *wc) {
|
|
|
|
|
mutex_lock(&wc->lock);
|
|
|
|
|
LOCK(&wc->lock);
|
|
|
|
|
g_queue_push_tail(&wc->output_q, websocket_output_new());
|
|
|
|
|
mutex_unlock(&wc->lock);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -176,7 +175,7 @@ static const char *websocket_echo_process(struct websocket_message *wm) {
|
|
|
|
|
static void websocket_message_push(struct websocket_conn *wc, websocket_message_func_t func) {
|
|
|
|
|
ilogs(http, LOG_DEBUG, "Adding HTTP/WS message to processing queue");
|
|
|
|
|
|
|
|
|
|
mutex_lock(&wc->lock);
|
|
|
|
|
LOCK(&wc->lock);
|
|
|
|
|
|
|
|
|
|
struct websocket_message *wm = wc->wm;
|
|
|
|
|
assert(wm != NULL);
|
|
|
|
|
@ -187,8 +186,6 @@ static void websocket_message_push(struct websocket_conn *wc, websocket_message_
|
|
|
|
|
g_thread_pool_push(websocket_threads, wc, NULL);
|
|
|
|
|
|
|
|
|
|
wc->wm = websocket_message_new(wc);
|
|
|
|
|
|
|
|
|
|
mutex_unlock(&wc->lock);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|