net: mqtt: websocket: Only accept data packets in RX
Check the message type and only accept MQTT binary data. Fixes #24156 Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
This commit is contained in:
parent
88d1d43842
commit
1ecac129c8
1 changed files with 15 additions and 2 deletions
|
@ -141,13 +141,26 @@ int mqtt_client_websocket_read(struct mqtt_client *client, u8_t *data,
|
|||
u32_t buflen, bool shall_block)
|
||||
{
|
||||
s32_t timeout = K_FOREVER;
|
||||
u32_t message_type = 0U;
|
||||
int ret;
|
||||
|
||||
if (!shall_block) {
|
||||
timeout = K_NO_WAIT;
|
||||
}
|
||||
|
||||
return websocket_recv_msg(client->transport.websocket.sock,
|
||||
data, buflen, NULL, NULL, timeout);
|
||||
ret = websocket_recv_msg(client->transport.websocket.sock,
|
||||
data, buflen, &message_type, NULL, timeout);
|
||||
if (ret > 0 && message_type > 0) {
|
||||
if (message_type & WEBSOCKET_FLAG_CLOSE) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!(message_type & WEBSOCKET_FLAG_BINARY)) {
|
||||
return -EAGAIN;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int mqtt_client_websocket_disconnect(struct mqtt_client *client)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue