mirror of
https://github.com/bol-van/zapret.git
synced 2024-12-22 14:26:03 +00:00
tpws: check for kernel version in fixseg
This commit is contained in:
parent
e12dd237c2
commit
cc30a90556
@ -105,6 +105,7 @@ struct params_s
|
||||
|
||||
uint8_t proxy_type;
|
||||
unsigned int fix_seg;
|
||||
bool fix_seg_avail;
|
||||
bool no_resolve;
|
||||
bool skip_nodelay;
|
||||
bool droproot;
|
||||
|
@ -538,6 +538,8 @@ void parse_params(int argc, char *argv[])
|
||||
params.pf_enable = true; // OpenBSD and MacOS have no other choice
|
||||
#endif
|
||||
|
||||
params.fix_seg_avail = socket_supports_notsent();
|
||||
|
||||
LIST_INIT(¶ms.hostlists);
|
||||
LIST_INIT(¶ms.ipsets);
|
||||
|
||||
@ -1236,7 +1238,7 @@ void parse_params(int argc, char *argv[])
|
||||
}
|
||||
break;
|
||||
case 65: /* fix-seg */
|
||||
if (!socket_supports_notsent())
|
||||
if (!params.fix_seg_avail)
|
||||
{
|
||||
DLOG_ERR("--fix-seg is supported since kernel 4.6\n");
|
||||
exit_clean(1);
|
||||
|
@ -1248,19 +1248,22 @@ static bool handle_epoll(tproxy_conn_t *conn, struct tailhead *conn_list, uint32
|
||||
bApplyOOB = i==0 && (split_flags & SPLIT_FLAG_OOB);
|
||||
len = to-from;
|
||||
#ifdef __linux__
|
||||
if (params.fix_seg)
|
||||
if (params.fix_seg_avail)
|
||||
{
|
||||
unsigned int wasted;
|
||||
bool bWaitOK = socket_wait_notsent(conn->partner->fd, params.fix_seg, &wasted);
|
||||
if (wasted)
|
||||
VPRINT("WARNING ! wasted %u ms to fix segmenation\n", wasted);
|
||||
if (!bWaitOK)
|
||||
report_segfail();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (socket_has_notsent(conn->partner->fd))
|
||||
report_segfail();
|
||||
if (params.fix_seg)
|
||||
{
|
||||
unsigned int wasted;
|
||||
bool bWaitOK = socket_wait_notsent(conn->partner->fd, params.fix_seg, &wasted);
|
||||
if (wasted)
|
||||
VPRINT("WARNING ! wasted %u ms to fix segmenation\n", wasted);
|
||||
if (!bWaitOK)
|
||||
report_segfail();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (socket_has_notsent(conn->partner->fd))
|
||||
report_segfail();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
VPRINT("Sending multisplit part %d %zd-%zd (len %zd)%s%s : ", i+1, from, to, len, bApplyDisorder ? " with disorder" : "", bApplyOOB ? " with OOB" : "");
|
||||
|
Loading…
Reference in New Issue
Block a user