diff --git a/nfq/helpers.c b/nfq/helpers.c index 00a0ce0..51188de 100644 --- a/nfq/helpers.c +++ b/nfq/helpers.c @@ -391,6 +391,12 @@ void fill_random_az09(uint8_t *p,size_t sz) } } +void disable_console_io_buffering(void) +{ + setvbuf(stdout, NULL, _IOLBF, 0); + setvbuf(stderr, NULL, _IOLBF, 0); +} + bool set_env_exedir(const char *argv0) { char *s,*d; diff --git a/nfq/helpers.h b/nfq/helpers.h index 6f3e5a6..04ef521 100644 --- a/nfq/helpers.h +++ b/nfq/helpers.h @@ -92,6 +92,7 @@ void fill_random_bytes(uint8_t *p,size_t sz); void fill_random_az(uint8_t *p,size_t sz); void fill_random_az09(uint8_t *p,size_t sz); +void disable_console_io_buffering(void); bool set_env_exedir(const char *argv0); diff --git a/nfq/nfqws.c b/nfq/nfqws.c index 717cdbb..cd2e359 100644 --- a/nfq/nfqws.c +++ b/nfq/nfqws.c @@ -499,7 +499,6 @@ static int win_main(const char *windivert_filter) if (!logical_net_filter_match()) { DLOG_CONDUP("logical network is not present. waiting it to appear.\n"); - fflush(stdout); do { if (bQuit) @@ -512,7 +511,6 @@ static int win_main(const char *windivert_filter) } while (!logical_net_filter_match()); DLOG_CONDUP("logical network now present\n"); - fflush(stdout); } if (!windivert_init(windivert_filter)) @@ -523,10 +521,6 @@ static int win_main(const char *windivert_filter) DLOG_CONDUP("windivert initialized. capture is started.\n"); - // cygwin auto flush fails when piping - fflush(stdout); - fflush(stderr); - for (id=0;;id++) { len = sizeof(packet); @@ -589,10 +583,6 @@ static int win_main(const char *windivert_filter) default: DLOG("packet: id=%u drop\n", id); } - - // cygwin auto flush fails when piping - fflush(stdout); - fflush(stderr); } } win_dark_deinit(); @@ -1424,6 +1414,7 @@ void check_dp(const struct desync_profile *dp) int main(int argc, char **argv) { + disable_console_io_buffering(); set_env_exedir(argv[0]); #ifdef __CYGWIN__ diff --git a/tpws/helpers.c b/tpws/helpers.c index 3724856..710b81a 100644 --- a/tpws/helpers.c +++ b/tpws/helpers.c @@ -383,6 +383,11 @@ bool pf_is_empty(const port_filter *pf) return !pf->neg && !pf->from && !pf->to; } +void disable_console_io_buffering(void) +{ + setvbuf(stdout, NULL, _IOLBF, 0); + setvbuf(stderr, NULL, _IOLBF, 0); +} bool set_env_exedir(const char *argv0) { diff --git a/tpws/helpers.h b/tpws/helpers.h index cda4dcf..4b36662 100644 --- a/tpws/helpers.h +++ b/tpws/helpers.h @@ -82,6 +82,7 @@ bool pf_in_range(uint16_t port, const port_filter *pf); bool pf_parse(const char *s, port_filter *pf); bool pf_is_empty(const port_filter *pf); +void disable_console_io_buffering(void); bool set_env_exedir(const char *argv0); #ifndef IN_LOOPBACK diff --git a/tpws/tpws.c b/tpws/tpws.c index fb794eb..205dcb9 100644 --- a/tpws/tpws.c +++ b/tpws/tpws.c @@ -1707,6 +1707,7 @@ int main(int argc, char *argv[]) struct salisten_s list[MAX_BINDS]; char ip_port[48]; + disable_console_io_buffering(); set_env_exedir(argv[0]); srand(time(NULL)); mask_from_preflen6_prepare(); diff --git a/tpws/tpws_conn.c b/tpws/tpws_conn.c index 1294e74..de6eed9 100644 --- a/tpws/tpws_conn.c +++ b/tpws/tpws_conn.c @@ -1755,8 +1755,6 @@ int event_loop(const int *listen_fd, size_t listen_fd_ct) // at least one leg was removed. recount legs print_legs(); } - - fflush(stderr); fflush(stdout); // for console messages } ex: