Skip to content

Commit

Permalink
refactor(ws): cleanup, fixes and add sl_ws_send_event_host
Browse files Browse the repository at this point in the history
  • Loading branch information
sreimers committed Feb 4, 2025
1 parent ad2c0a7 commit 53818f1
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 50 deletions.
5 changes: 3 additions & 2 deletions include/mix.h
Original file line number Diff line number Diff line change
Expand Up @@ -201,8 +201,9 @@ int sl_ws_init(void);
int sl_ws_close(void);
int sl_ws_open(struct http_conn *httpc, const struct http_msg *msg,
struct mix *mix, struct session *sess);
void sl_ws_send_event(struct session *sess, char *str);
void sl_ws_send_event_self(struct session *sess, char *str);
void sl_ws_send_event(struct session *sess, char *json);
void sl_ws_send_event_self(struct session *sess, char *json);
void sl_ws_send_event_host(char *json);
void sl_ws_send_event_all(char *json);
void sl_ws_dummyh(const struct websock_hdr *hdr, struct mbuf *mb, void *arg);
void sl_ws_users_auth(const struct websock_hdr *hdr, struct mbuf *mb,
Expand Down
65 changes: 17 additions & 48 deletions src/ws.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,54 +43,6 @@ void sl_ws_dummyh(const struct websock_hdr *hdr, struct mbuf *mb, void *arg)
(void)arg;
}

#if 0
void sl_ws_users_auth(const struct websock_hdr *hdr, struct mbuf *mb,
void *arg)
{
struct ws_conn *wsc = arg;
struct pl sessid;
char *json = NULL;
(void)hdr;

sessid.p = (const char *)mbuf_buf(mb);
sessid.l = mbuf_get_left(mb);

wsc->sess = slmix_session_lookup(&wsc->mix->sessl, &sessid);
if (!wsc->sess) {
websock_close(wsc->c, WEBSOCK_INVALID_PAYLOAD,
"Session not found");
mem_deref(wsc);
return;
}

mem_ref(wsc->sess);
mem_ref(wsc->sess->user);

if (wsc->sess->connected) {
websock_close(wsc->c, WEBSOCK_INTERNAL_ERROR,
"Session in use");
mem_deref(wsc);
return;
}

wsc->sess->connected = true;

if (0 == users_json(&json, wsc->mix)) {
websock_send(wsc->c, WEBSOCK_TEXT, "%s", json);
json = mem_deref(json);
}

bool force = true;

slmix_update_room();
slmix_refresh_rooms(&force);

if (0 == user_event_json(&json, USER_ADDED, wsc->sess)) {
sl_ws_send_event(wsc->sess, json);
json = mem_deref(json);
}
}
#endif

static void conn_destroy(void *arg)
{
Expand Down Expand Up @@ -227,6 +179,23 @@ void sl_ws_send_event_self(struct session *sess, char *json)
}


void sl_ws_send_event_host(char *json)
{
struct le *le;

if (!json)
return;

LIST_FOREACH(&wsl, le)
{
struct ws_conn *ws_conn = le->data;
if (!ws_conn->sess->user->host)
continue;
websock_send(ws_conn->c, WEBSOCK_TEXT, "%s", json);
}
}


void sl_ws_send_event_all(char *json)
{
struct le *le;
Expand Down

0 comments on commit 53818f1

Please sign in to comment.