diff --git a/code/network/multi_portfwd.cpp b/code/network/multi_portfwd.cpp index d1184947d60..b2f410e3fa5 100644 --- a/code/network/multi_portfwd.cpp +++ b/code/network/multi_portfwd.cpp @@ -98,6 +98,7 @@ void multi_port_forward_init() void multi_port_forward_do() { + static bool failed_before = false; pcp_fstate_e state; size_t info_count = 0; int wait_ms; @@ -117,7 +118,10 @@ void multi_port_forward_do() // check progress and log if needed if ( pcp_eval_flow_state(PF_pcp_flow, &state) ) { if (state == pcp_state_failed) { - ml_string("Port forward => Mapping failed!"); + if ( !failed_before ) { + ml_string("Port forward => Mapping failed!"); + failed_before = true; // reduce log spam + } } else if (state == pcp_state_succeeded) { pcp_flow_info_t *flow_info = pcp_flow_get_info(PF_pcp_flow, &info_count); @@ -143,6 +147,8 @@ void multi_port_forward_do() ml_printf("Port forward => Mapping valid until %s", time_str); } + failed_before = false; + if (flow_info) { free(flow_info); // system call, allocated in lib ** don't change! ** } @@ -178,7 +184,7 @@ void multi_port_forward_close() #ifndef NDEBUG static void PF_logger_fn(pcp_loglvl_e /* lvl */, const char *msg) { - nprintf(("portfwd", "Port forward => %s", msg)); + nprintf(("portfwd", "Port forward => %s\n", msg)); } #endif diff --git a/lib/libpcpnatpmp/src/pcp_event_handler.c b/lib/libpcpnatpmp/src/pcp_event_handler.c index 72d06145a74..06c3a65883c 100644 --- a/lib/libpcpnatpmp/src/pcp_event_handler.c +++ b/lib/libpcpnatpmp/src/pcp_event_handler.c @@ -756,6 +756,7 @@ static int get_first_flow_iter(pcp_flow_t *f, void *data) { case pfs_idle: case pfs_wait_for_server_init: case pfs_send: + case pfs_failed: d->msg = f; return 1; default: