From 8013ef44db80f7fa941c4c404c848ba46cb1706b Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Sat, 4 Oct 2025 19:03:47 -0500 Subject: [PATCH] extmod/modwebsocket: Save a few bytes of text by using bit checks. .. at least on x86_64 (unix standard build). Size was unchanged on RPI_PICO_W. Signed-off-by: Jeff Epler --- extmod/modwebsocket.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/extmod/modwebsocket.c b/extmod/modwebsocket.c index 6640dbe422..6a35dc1dbe 100644 --- a/extmod/modwebsocket.c +++ b/extmod/modwebsocket.c @@ -143,13 +143,13 @@ static mp_uint_t websocket_read(mp_obj_t self_in, void *buf, mp_uint_t size, int } case FRAME_OPT: { - if ((self->buf_pos & 3) == 2) { - // First two bytes are message length + if (self->buf_pos & 2) { // to_recv was 2 or 6 + assert(self->buf_pos == 2 || self->buf_pos == 6); // First two bytes are message length. Technically the size must be at least 126 per RFC6455 // but MicroPython skips checking that. self->msg_sz = (self->buf[0] << 8) | self->buf[1]; } - if (self->buf_pos >= 4) { + if (self->buf_pos & 4) { // Last 4 bytes is mask memcpy(self->mask, self->buf + self->buf_pos - 4, 4); }