From 0313c8bcc6530b306c267f255a0aadeeb1e574f2 Mon Sep 17 00:00:00 2001 From: Max Lv Date: Sat, 6 May 2017 07:24:06 +0800 Subject: [PATCH] Fix stat_update_cb for UDP packets --- src/local.c | 10 ++++------ src/udprelay.c | 2 ++ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/local.c b/src/local.c index ead8ba2d..df35fed5 100644 --- a/src/local.c +++ b/src/local.c @@ -832,11 +832,12 @@ server_send_cb(EV_P_ ev_io *w, int revents) } #ifdef ANDROID -static void +void stat_update_cb() { + LOGI("stat: %" PRId64 ", %" PRId64 "", tx, rx); ev_tstamp now = ev_time(); - if (now - last > 1.0) { + if (now - last > 0.5) { send_traffic_stat(tx, rx); last = now; } @@ -870,10 +871,6 @@ remote_recv_cb(EV_P_ ev_io *w, int revents) ev_timer_again(EV_A_ & remote->recv_ctx->watcher); -#ifdef ANDROID - stat_update_cb(); -#endif - ssize_t r = recv(remote->fd, server->buf->data, BUF_SIZE, 0); if (r == 0) { @@ -899,6 +896,7 @@ remote_recv_cb(EV_P_ ev_io *w, int revents) if (!remote->direct) { #ifdef ANDROID rx += server->buf->len; + stat_update_cb(); #endif int err = crypto->decrypt(server->buf, server->d_ctx, BUF_SIZE); if (err == CRYPTO_ERROR) { diff --git a/src/udprelay.c b/src/udprelay.c index 29f664b8..e3470e72 100644 --- a/src/udprelay.c +++ b/src/udprelay.c @@ -89,6 +89,7 @@ static remote_ctx_t *new_remote(int fd, server_ctx_t *server_ctx); extern uint64_t tx; extern uint64_t rx; extern int vpn; +extern void stat_update_cb(); #endif extern int verbose; @@ -737,6 +738,7 @@ remote_recv_cb(EV_P_ ev_io *w, int revents) #else #ifdef ANDROID rx += buf->len; + stat_update_cb(); #endif // Construct packet brealloc(buf, buf->len + 3, buf_size);