diff --git a/res/res_http_websocket.c b/res/res_http_websocket.c index 84138234ebffd89de0329f54e16adb8d41da2851..799eb848fad35308ae2b538555a5e609f1d79d0b 100644 --- a/res/res_http_websocket.c +++ b/res/res_http_websocket.c @@ -529,10 +529,12 @@ static inline int ws_safe_read(struct ast_websocket *session, char *buf, int len return -1; } } - xlen = xlen - rlen; - rbuf = rbuf + rlen; - if (!xlen) { - break; + if (rlen > 0) { + xlen = xlen - rlen; + rbuf = rbuf + rlen; + if (!xlen) { + break; + } } if (ast_wait_for_input(ast_iostream_get_fd(session->stream), 1000) < 0) { ast_log(LOG_ERROR, "ast_wait_for_input returned err: %s\n", strerror(errno));