提交 b7b5aea0 authored 作者: Anthony Minessale's avatar Anthony Minessale

try to rotate on failed write to cdr file

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@14948 d0543943-73ff-0310-b7d9-9358b9ac24b2
上级 dc6a92d1
...@@ -129,6 +129,7 @@ static void write_cdr(const char *path, const char *log_line) ...@@ -129,6 +129,7 @@ static void write_cdr(const char *path, const char *log_line)
{ {
cdr_fd_t *fd = NULL; cdr_fd_t *fd = NULL;
unsigned int bytes_in, bytes_out; unsigned int bytes_in, bytes_out;
int loops = 0;
if (!(fd = switch_core_hash_find(globals.fd_hash, path))) { if (!(fd = switch_core_hash_find(globals.fd_hash, path))) {
fd = switch_core_alloc(globals.pool, sizeof(*fd)); fd = switch_core_alloc(globals.pool, sizeof(*fd));
...@@ -155,11 +156,15 @@ static void write_cdr(const char *path, const char *log_line) ...@@ -155,11 +156,15 @@ static void write_cdr(const char *path, const char *log_line)
do_rotate(fd); do_rotate(fd);
} }
if ((bytes_in = write(fd->fd, log_line, bytes_out)) != bytes_out) { while ((bytes_in = write(fd->fd, log_line, bytes_out)) != bytes_out && ++loops < 10) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Write error to file %s %d/%d\n", path, (int) bytes_in, (int) bytes_out); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Write error to file %s %d/%d\n", path, (int) bytes_in, (int) bytes_out);
do_rotate(fd);
switch_yield(250000);
} }
if (bytes_in > 0) {
fd->bytes += bytes_in; fd->bytes += bytes_in;
}
end: end:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论