mirror of
https://github.com/shadowsocks/shadowsocks-libev.git
synced 2026-10-30 13:13:44 +00:00
Fix the traffic counter in UDP mode
This commit is contained in:
@@ -737,7 +737,6 @@ stat_update_cb(struct ev_loop *loop)
|
||||
last = now;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static void
|
||||
|
||||
+16
-2
@@ -91,8 +91,13 @@ static void query_resolve_cb(struct sockaddr *addr, void *data);
|
||||
static void close_and_free_remote(EV_P_ remote_ctx_t *ctx);
|
||||
static remote_ctx_t *new_remote(int fd, server_ctx_t *server_ctx);
|
||||
|
||||
extern int verbose;
|
||||
#ifdef ANDROID
|
||||
extern uint64_t tx;
|
||||
extern uint64_t rx;
|
||||
extern int vpn;
|
||||
#endif
|
||||
|
||||
extern int verbose;
|
||||
#ifdef MODULE_REMOTE
|
||||
extern uint64_t tx;
|
||||
extern uint64_t rx;
|
||||
@@ -723,6 +728,9 @@ remote_recv_cb(EV_P_ ev_io *w, int revents)
|
||||
memmove(buf->array + 3, buf->array, buf->len);
|
||||
memset(buf->array, 0, 3);
|
||||
buf->len += 3;
|
||||
#ifdef ANDROID
|
||||
rx += buf->len;
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -750,6 +758,7 @@ remote_recv_cb(EV_P_ ev_io *w, int revents)
|
||||
// drop the packet silently
|
||||
goto CLEAN_UP;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
if (buf->len > packet_size) {
|
||||
@@ -760,6 +769,7 @@ remote_recv_cb(EV_P_ ev_io *w, int revents)
|
||||
size_t remote_src_addr_len = get_sockaddr_len((struct sockaddr *)&remote_ctx->src_addr);
|
||||
|
||||
#ifdef MODULE_REDIR
|
||||
|
||||
size_t remote_dst_addr_len = get_sockaddr_len((struct sockaddr *)&dst_addr);
|
||||
|
||||
int src_fd = socket(remote_ctx->src_addr.ss_family, SOCK_DGRAM, 0);
|
||||
@@ -799,12 +809,14 @@ remote_recv_cb(EV_P_ ev_io *w, int revents)
|
||||
close(src_fd);
|
||||
|
||||
#else
|
||||
|
||||
int s = sendto(server_ctx->fd, buf->array, buf->len, 0,
|
||||
(struct sockaddr *)&remote_ctx->src_addr, remote_src_addr_len);
|
||||
if (s == -1) {
|
||||
ERROR("[udp] remote_recv_sendto");
|
||||
goto CLEAN_UP;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// handle the UDP packet successfully,
|
||||
@@ -885,7 +897,6 @@ server_recv_cb(EV_P_ ev_io *w, int revents)
|
||||
}
|
||||
|
||||
#ifdef MODULE_REMOTE
|
||||
|
||||
tx += buf->len;
|
||||
|
||||
int err = ss_decrypt_all(buf, server_ctx->method, server_ctx->auth, buf_size);
|
||||
@@ -897,6 +908,9 @@ server_recv_cb(EV_P_ ev_io *w, int revents)
|
||||
|
||||
#ifdef MODULE_LOCAL
|
||||
#if !defined(MODULE_TUNNEL) && !defined(MODULE_REDIR)
|
||||
#ifdef ANDROID
|
||||
tx += buf->len;
|
||||
#endif
|
||||
uint8_t frag = *(uint8_t *)(buf->array + 2);
|
||||
offset += 3;
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user