summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--Src/Modules/tcp.c13
2 files changed, 10 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 9fdb41625..353fe460e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,7 +2,8 @@
* unposted: Src/Modules/tcp.c:
don't segfault on -a if
- the session table is empty.
+ the session table is empty,
+ and other fixes.
* 15772: Src/Modules/tcp.c:
add -t (test) for ztcp.
diff --git a/Src/Modules/tcp.c b/Src/Modules/tcp.c
index 0a81ba9db..bdc842f40 100644
--- a/Src/Modules/tcp.c
+++ b/Src/Modules/tcp.c
@@ -282,6 +282,8 @@ zts_delete(Tcp_session sess)
tsess = zts_head();
+ if(!sess) return 1;
+
if (tsess == sess)
{
ztcp_head = sess->next;
@@ -289,15 +291,16 @@ zts_delete(Tcp_session sess)
return 0;
}
- while((tsess->next != sess) && (tsess->next))
- {
+ while((tsess->next != sess) && (tsess->next)) {
tsess = zts_next(tsess);
}
if (!tsess->next) return 1;
- tsess->next = tsess->next->next;
- free(tsess->next);
+ if (ztcp_tail == sess)
+ ztcp_tail = tsess;
+ tsess->next = sess->next;
+ free(sess);
return 0;
}
@@ -417,7 +420,7 @@ bin_ztcp(char *nam, char **args, char *ops, int func)
}
else
{
- zwarnnam(nam, "fd not found in tcp table", NULL, 0);
+ zwarnnam(nam, "fd %s not found in tcp table", args[0], 0);
return 1;
}
}