|
|
|
@ -126,7 +126,7 @@ size_t websocket_queue_len(struct websocket_conn *wc) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// adds data to output buffer (can be null) and optionally triggers specified response
|
|
|
|
|
int websocket_write_raw(struct websocket_conn *wc, const char *msg, size_t len,
|
|
|
|
|
void websocket_write_raw(struct websocket_conn *wc, const char *msg, size_t len,
|
|
|
|
|
enum lws_write_protocol protocol, bool done)
|
|
|
|
|
{
|
|
|
|
|
mutex_lock(&wc->lock);
|
|
|
|
@ -147,17 +147,17 @@ int websocket_write_raw(struct websocket_conn *wc, const char *msg, size_t len,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// adds data to output buffer (can be null) and triggers specified response: http or binary websocket
|
|
|
|
|
int websocket_write_http_len(struct websocket_conn *wc, const char *msg, size_t len, bool done) {
|
|
|
|
|
return websocket_write_raw(wc, msg, len, LWS_WRITE_HTTP, done);
|
|
|
|
|
void websocket_write_http_len(struct websocket_conn *wc, const char *msg, size_t len, bool done) {
|
|
|
|
|
websocket_write_raw(wc, msg, len, LWS_WRITE_HTTP, done);
|
|
|
|
|
}
|
|
|
|
|
int websocket_write_http(struct websocket_conn *wc, const char *msg, bool done) {
|
|
|
|
|
return websocket_write_http_len(wc, msg, msg ? strlen(msg) : 0, done);
|
|
|
|
|
void websocket_write_http(struct websocket_conn *wc, const char *msg, bool done) {
|
|
|
|
|
websocket_write_http_len(wc, msg, msg ? strlen(msg) : 0, done);
|
|
|
|
|
}
|
|
|
|
|
int websocket_write_text(struct websocket_conn *wc, const char *msg, bool done) {
|
|
|
|
|
return websocket_write_raw(wc, msg, strlen(msg), LWS_WRITE_TEXT, done);
|
|
|
|
|
void websocket_write_text(struct websocket_conn *wc, const char *msg, bool done) {
|
|
|
|
|
websocket_write_raw(wc, msg, strlen(msg), LWS_WRITE_TEXT, done);
|
|
|
|
|
}
|
|
|
|
|
int websocket_write_binary(struct websocket_conn *wc, const char *msg, size_t len, bool done) {
|
|
|
|
|
return websocket_write_raw(wc, msg, len, LWS_WRITE_BINARY, done);
|
|
|
|
|
void websocket_write_binary(struct websocket_conn *wc, const char *msg, size_t len, bool done) {
|
|
|
|
|
websocket_write_raw(wc, msg, len, LWS_WRITE_BINARY, done);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -332,19 +332,18 @@ void websocket_http_response(struct websocket_conn *wc, int status, const char *
|
|
|
|
|
wo->content_type = content_type;
|
|
|
|
|
wo->content_length = content_length;
|
|
|
|
|
}
|
|
|
|
|
const char *websocket_http_complete(struct websocket_conn *wc, int status, const char *content_type,
|
|
|
|
|
void websocket_http_complete(struct websocket_conn *wc, int status, const char *content_type,
|
|
|
|
|
ssize_t content_length, const char *content)
|
|
|
|
|
{
|
|
|
|
|
websocket_http_response(wc, status, content_type, content_length);
|
|
|
|
|
if (websocket_write_http(wc, content, true))
|
|
|
|
|
return "Failed to write pong response";
|
|
|
|
|
return NULL;
|
|
|
|
|
websocket_write_http(wc, content, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static const char *websocket_http_ping(struct websocket_message *wm) {
|
|
|
|
|
ilogs(http, LOG_DEBUG, "Respoding to GET /ping");
|
|
|
|
|
return websocket_http_complete(wm->wc, 200, "text/plain", 5, "pong\n");
|
|
|
|
|
websocket_http_complete(wm->wc, 200, "text/plain", 5, "pong\n");
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -381,7 +380,8 @@ static const char *websocket_http_metrics(struct websocket_message *wm) {
|
|
|
|
|
g_string_append_printf(outp, " %s\n", m->value_short);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return websocket_http_complete(wm->wc, 200, "text/plain", outp->len, outp->str);
|
|
|
|
|
websocket_http_complete(wm->wc, 200, "text/plain", outp->len, outp->str);
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -413,7 +413,8 @@ static const char *websocket_http_cli(struct websocket_message *wm) {
|
|
|
|
|
|
|
|
|
|
size_t len = websocket_queue_len(wm->wc);
|
|
|
|
|
|
|
|
|
|
return websocket_http_complete(wm->wc, 200, "text/plain", len, NULL);
|
|
|
|
|
websocket_http_complete(wm->wc, 200, "text/plain", len, NULL);
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -563,7 +564,8 @@ static int websocket_http_post(struct websocket_conn *wc) {
|
|
|
|
|
|
|
|
|
|
static const char *websocket_http_options_generic(struct websocket_message *wm) {
|
|
|
|
|
ilogs(http, LOG_DEBUG, "Respoding to OPTIONS");
|
|
|
|
|
return websocket_http_complete(wm->wc, 200, NULL, 0, NULL);
|
|
|
|
|
websocket_http_complete(wm->wc, 200, NULL, 0, NULL);
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|