提交 bf5210bf authored 作者: Seven Du's avatar Seven Du

retry send when the socket sent less than we want

上级 a961b0e9
......@@ -1456,6 +1456,9 @@ static void http_static_handler(switch_http_request_t *request, verto_vhost_t *v
for (;;) {
switch_status_t status;
ssize_t written = 0;
ssize_t ret = 0;
int sanity = 3;
flen = sizeof(chunk);
status = switch_file_read(fd, chunk, &flen);
......@@ -1464,7 +1467,17 @@ static void http_static_handler(switch_http_request_t *request, verto_vhost_t *v
break;
}
ws_raw_write(&jsock->ws, chunk, flen);
again:
ret = ws_raw_write(&jsock->ws, chunk + written, flen);
if (ret == -1) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "error write %" SWITCH_SIZE_T_FMT " bytes!\n", flen);
ws_close(&jsock->ws, WS_NONE);
} else if (ret > 0 && ret < flen && sanity > 0) {
switch_yield(1000);
flen -= ret;
written += ret;
goto again;
}
}
switch_file_close(fd);
} else {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论