summaryrefslogtreecommitdiff
path: root/zhm/zhm.c
diff options
context:
space:
mode:
authorGravatar David C. Jedlinsky <opus@mit.edu>1987-07-29 10:53:00 +0000
committerGravatar David C. Jedlinsky <opus@mit.edu>1987-07-29 10:53:00 +0000
commit3d4a3919420a98e95ce19cdeae7472adcd3a4266 (patch)
treed55460d3fdfcccb8d3ce4313f241c3802e8172c7 /zhm/zhm.c
parent7a2ce9ef1185f6b91b74f09380415c74a434ce46 (diff)
Throws away byte-swapped notices, ignores servers on the wrong port.
Diffstat (limited to 'zhm/zhm.c')
-rw-r--r--zhm/zhm.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/zhm/zhm.c b/zhm/zhm.c
index b63f782..bd89f9e 100644
--- a/zhm/zhm.c
+++ b/zhm/zhm.c
@@ -117,7 +117,10 @@ char *argv[];
(notice.z_kind == HMCTL)) {
server_manager(&notice);
} else {
- if (bcmp(loopback, &from.sin_addr, 4) == 0) {
+ if ((bcmp(loopback, &from.sin_addr, 4) == 0) &&
+ ((notice.z_kind == UNSAFE) ||
+ (notice.z_kind == UNACKED) ||
+ (notice.z_kind == ACKED))) {
/* Client program... */
transmission_tower(&notice, packet);
DPR2 ("Pending = %d\n", ZPending());
@@ -403,12 +406,13 @@ void set_sig_type(sig)
server_manager(notice)
ZNotice_t *notice;
{
- DPR ("A notice came in from the server.\n");
- if (bcmp(&serv_sin.sin_addr, &from.sin_addr, 4) != 0) {
+ if ((bcmp(&serv_sin.sin_addr, &from.sin_addr, 4) != 0) ||
+ (serv_sin.sin_port != from.sin_port)) {
syslog (LOG_INFO, "Bad notice from port %u.", notice->z_port);
/* Sent a notice back saying this hostmanager isn't theirs */
} else {
/* This is our server, handle the notice */
+ DPR ("A notice came in from the server.\n");
nserv++;
switch(notice->z_kind) {
case HMCTL: