--repeats for UDP

This commit is contained in:
ruti 2024-10-18 12:30:48 +03:00
parent 2240039377
commit 225ccc8319
2 changed files with 18 additions and 10 deletions

View File

@ -452,11 +452,12 @@ ssize_t tcp_recv_hook(struct poolhd *pool, struct eval *val,
ssize_t udp_hook(struct eval *val, ssize_t udp_hook(struct eval *val,
char *buffer, size_t bfsize, ssize_t n, struct sockaddr_ina *dst) char *buffer, size_t bfsize, ssize_t n, struct sockaddr_ina *dst)
{ {
if (val->recv_count) { if (val->round_count > params.repeats) {
return send(val->fd, buffer, n, 0); return send(val->fd, buffer, n, 0);
} }
int m = val->attempt; int m = val->attempt;
if (!m) for (; m < params.dp_count; m++) { if (!m) {
for (; m < params.dp_count; m++) {
struct desync_params *dp = &params.dp[m]; struct desync_params *dp = &params.dp[m];
if (!dp->detect && if (!dp->detect &&
(!dp->proto || (dp->proto & IS_UDP)) && (!dp->proto || (dp->proto & IS_UDP)) &&
@ -467,6 +468,8 @@ ssize_t udp_hook(struct eval *val,
if (m >= params.dp_count) { if (m >= params.dp_count) {
return -1; return -1;
} }
val->attempt = m;
}
return desync_udp(val->fd, buffer, bfsize, n, &dst->sa, m); return desync_udp(val->fd, buffer, bfsize, n, &dst->sa, m);
} }

View File

@ -746,6 +746,11 @@ int on_udp_tunnel(struct eval *val, char *buffer, size_t bfsize)
return -1; return -1;
} }
val->recv_count += n; val->recv_count += n;
if (val->round_sent == 0) {
val->round_count++;
val->round_sent += n;
val->pair->round_sent = 0;
}
ssize_t ns; ssize_t ns;
if (val->flag == FLAG_CONN) { if (val->flag == FLAG_CONN) {