Fixes.
This commit is contained in:
@@ -122,6 +122,22 @@ int cb_chat(
|
|||||||
|
|
||||||
free(out);
|
free(out);
|
||||||
yyjson_mut_doc_free(wdoc);
|
yyjson_mut_doc_free(wdoc);
|
||||||
|
|
||||||
|
// #1a: Stream history messages to new client.
|
||||||
|
for (size_t i = 0; i < history_count; ++i) {
|
||||||
|
size_t idx =
|
||||||
|
(history_pos + HISTORY_SIZE - history_count + i) %
|
||||||
|
HISTORY_SIZE;
|
||||||
|
size_t hist_len = history_len[idx];
|
||||||
|
size_t send_len = hist_len < SESSION_CHAT_BUF_SIZE
|
||||||
|
? hist_len
|
||||||
|
: SESSION_CHAT_BUF_SIZE;
|
||||||
|
memcpy(&sess->buf[LWS_PRE], history[idx], send_len);
|
||||||
|
lws_write(
|
||||||
|
sess->wsi, &sess->buf[LWS_PRE], send_len,
|
||||||
|
LWS_WRITE_TEXT
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// #2: Introduce our new client to everybody else.
|
// #2: Introduce our new client to everybody else.
|
||||||
@@ -275,21 +291,7 @@ int cb_chat(
|
|||||||
sess->wsi, &sess->buf[LWS_PRE], sess->buf_len,
|
sess->wsi, &sess->buf[LWS_PRE], sess->buf_len,
|
||||||
LWS_WRITE_TEXT
|
LWS_WRITE_TEXT
|
||||||
);
|
);
|
||||||
// #1b: Stream history messages to new client.
|
|
||||||
for (size_t i = 0; i < history_count; ++i) {
|
|
||||||
size_t idx =
|
|
||||||
(history_pos + HISTORY_SIZE - history_count + i) %
|
|
||||||
HISTORY_SIZE;
|
|
||||||
size_t hist_len = history_len[idx];
|
|
||||||
size_t send_len = hist_len < SESSION_CHAT_BUF_SIZE
|
|
||||||
? hist_len
|
|
||||||
: SESSION_CHAT_BUF_SIZE;
|
|
||||||
memcpy(&sess->buf[LWS_PRE], history[idx], send_len);
|
|
||||||
lws_write(
|
|
||||||
sess->wsi, &sess->buf[LWS_PRE], send_len,
|
|
||||||
LWS_WRITE_TEXT
|
|
||||||
);
|
|
||||||
}
|
|
||||||
free(ack_out);
|
free(ack_out);
|
||||||
yyjson_mut_doc_free(ackdoc);
|
yyjson_mut_doc_free(ackdoc);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user