diff options
-rw-r--r-- | res/res_http_websocket.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/res/res_http_websocket.c b/res/res_http_websocket.c index 84138234e..799eb848f 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)); |