diff options
Diffstat (limited to 'test/session_debugger/session_debugger.c')
| -rw-r--r-- | test/session_debugger/session_debugger.c | 63 |
1 files changed, 37 insertions, 26 deletions
diff --git a/test/session_debugger/session_debugger.c b/test/session_debugger/session_debugger.c index 1fdf13e..e2a1023 100644 --- a/test/session_debugger/session_debugger.c +++ b/test/session_debugger/session_debugger.c @@ -56,7 +56,7 @@ static void session_debugger_log(int fd, const char *fmt, ...) char buf[PATH_MAX * 2] = {0}; char *p = buf; char *end = buf + sizeof(buf); - va_list args; + va_list arg; struct tm local; time_t t; @@ -67,9 +67,9 @@ static void session_debugger_log(int fd, const char *fmt, ...) weekday_str[local.tm_wday], month_str[local.tm_mon], local.tm_mday, local.tm_hour, local.tm_min, local.tm_sec, local.tm_year + 1900); p += snprintf(p, end - p, "%lu ", pthread_self()); p += snprintf(p, end - p, "(%s), ", module); - va_start(args, fmt); - p += vsnprintf(p, end - p, fmt, args); - va_end(args); + va_start(arg, fmt); + p += vsnprintf(p, end - p, fmt, arg); + va_end(arg); p += snprintf(p, end - p, "\n"); do @@ -107,20 +107,6 @@ static void session_debugger_exdata_free(struct session_debugger_exdata *exdata) { if (exdata) { - char buff[PATH_MAX] = {0}; - session_to_str(exdata->sess, 0, buff, sizeof(buff) - 1); - session_debugger_log(exdata->dbg->fd, "sess free: %s", buff); - session_debugger_log(exdata->dbg->fd, "session %lu %s stat:\n" - "C2S rx packets: %6lu, C2S rx bytes: %6lu\n" - "S2C rx packets: %6lu, S2C rx bytes: %6lu\n" - "C2S rx TCP segments: %6lu, C2S rx TCP bytes: %6lu\n" - "S2C rx TCP segments: %6lu, S2C rx TCP bytes: %6lu\n", - session_get_id(exdata->sess), session_get0_readable_addr(exdata->sess), - exdata->c2s_rx_pkts, exdata->c2s_rx_bytes, - exdata->s2c_rx_pkts, exdata->s2c_rx_bytes, - exdata->c2s_rx_tcp_seg, exdata->c2s_rx_tcp_bytes, - exdata->s2c_rx_tcp_seg, exdata->s2c_rx_tcp_bytes); - if (exdata->c2s_tcp_seg_hexdump_fd > 0) { close(exdata->c2s_tcp_seg_hexdump_fd); @@ -142,9 +128,29 @@ static void session_debugger_exdata_free_callback(int idx, void *ex_ptr, void *a session_debugger_exdata_free((struct session_debugger_exdata *)ex_ptr); } -static void on_sess_msg(struct session *sess, struct packet *pkt, void *args) +static void on_sess_free(struct session *sess, void *arg) { - struct session_debugger *dbg = (struct session_debugger *)args; + struct session_debugger *dbg = (struct session_debugger *)arg; + struct session_debugger_exdata *exdata = (struct session_debugger_exdata *)session_get_exdata(sess, dbg->sess_exdata_idx); + + char buff[PATH_MAX] = {0}; + session_to_str(exdata->sess, 0, buff, sizeof(buff) - 1); + session_debugger_log(exdata->dbg->fd, "sess free: %s", buff); + session_debugger_log(exdata->dbg->fd, "session %lu %s stat:\n" + "C2S rx packets: %6lu, C2S rx bytes: %6lu\n" + "S2C rx packets: %6lu, S2C rx bytes: %6lu\n" + "C2S rx TCP segments: %6lu, C2S rx TCP bytes: %6lu\n" + "S2C rx TCP segments: %6lu, S2C rx TCP bytes: %6lu\n", + session_get_id(exdata->sess), session_get0_readable_addr(exdata->sess), + exdata->c2s_rx_pkts, exdata->c2s_rx_bytes, + exdata->s2c_rx_pkts, exdata->s2c_rx_bytes, + exdata->c2s_rx_tcp_seg, exdata->c2s_rx_tcp_bytes, + exdata->s2c_rx_tcp_seg, exdata->s2c_rx_tcp_bytes); +} + +static void on_sess_packet(struct session *sess, struct packet *pkt, void *arg) +{ + struct session_debugger *dbg = (struct session_debugger *)arg; char buff[PATH_MAX]; struct session_debugger_exdata *exdata = (struct session_debugger_exdata *)session_get_exdata(sess, dbg->sess_exdata_idx); @@ -178,9 +184,9 @@ static void on_sess_msg(struct session *sess, struct packet *pkt, void *args) pthread_spin_unlock(&dbg->lock); } -static void on_tcp_stream_msg(struct session *sess, const char *tcp_payload, uint32_t tcp_payload_len, void *args) +static void on_tcp_stream(struct session *sess, const char *tcp_payload, uint32_t tcp_payload_len, void *arg) { - struct session_debugger *dbg = (struct session_debugger *)args; + struct session_debugger *dbg = (struct session_debugger *)arg; char buff[PATH_MAX]; struct session_debugger_exdata *exdata = (struct session_debugger_exdata *)session_get_exdata(sess, dbg->sess_exdata_idx); @@ -251,22 +257,27 @@ static struct session_debugger *session_debugger_new(struct session_manager *ses goto error_out; } - if (session_manager_subscribe_tcp(sess_mgr, on_sess_msg, dbg) == -1) + if (session_manager_subscribe_free(sess_mgr, on_sess_free, dbg) == -1) + { + session_debugger_log(STDERR_FILENO, "subscribe free failed\n"); + goto error_out; + } + if (session_manager_subscribe_tcp(sess_mgr, on_sess_packet, dbg) == -1) { session_debugger_log(STDERR_FILENO, "subscribe tcp failed\n"); goto error_out; } - if (session_manager_subscribe_udp(sess_mgr, on_sess_msg, dbg) == -1) + if (session_manager_subscribe_udp(sess_mgr, on_sess_packet, dbg) == -1) { session_debugger_log(STDERR_FILENO, "subscribe udp failed\n"); goto error_out; } - if (session_manager_subscribe_control_packet(sess_mgr, on_sess_msg, dbg) == -1) + if (session_manager_subscribe_control_packet(sess_mgr, on_sess_packet, dbg) == -1) { session_debugger_log(STDERR_FILENO, "subscribe control packet failed\n"); goto error_out; } - if (session_manager_subscribe_tcp_stream(sess_mgr, on_tcp_stream_msg, dbg) == -1) + if (session_manager_subscribe_tcp_stream(sess_mgr, on_tcp_stream, dbg) == -1) { session_debugger_log(STDERR_FILENO, "subscribe tcp stream failed\n"); goto error_out; |
