summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--res/res_http_websocket.c10
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));