summaryrefslogtreecommitdiff
path: root/lib/ZSendPkt.c
diff options
context:
space:
mode:
authorGravatar Robert S. French <rfrench@mit.edu>1987-06-20 15:21:00 +0000
committerGravatar Robert S. French <rfrench@mit.edu>1987-06-20 15:21:00 +0000
commitcd73b10db92fd36835800ed839d010f5b69bdca6 (patch)
tree4e12d952a4ab1a087845c6f0bbbcb35747e7820f /lib/ZSendPkt.c
parent569d2fcd720d80cf47db8ea70ec17c02008dec79 (diff)
Safety checkin
Diffstat (limited to 'lib/ZSendPkt.c')
-rw-r--r--lib/ZSendPkt.c24
1 files changed, 11 insertions, 13 deletions
diff --git a/lib/ZSendPkt.c b/lib/ZSendPkt.c
index 7270054..60d84ae 100644
--- a/lib/ZSendPkt.c
+++ b/lib/ZSendPkt.c
@@ -24,7 +24,7 @@ Code_t ZSendPacket(packet,len)
int findack();
Code_t retval;
- struct sockaddr_in sin;
+ struct sockaddr_in dest;
struct timeval tv;
int auth,t1,t2,t3,i;
ZPacket_t ackpack;
@@ -37,22 +37,21 @@ Code_t ZSendPacket(packet,len)
if ((retval = ZOpenPort(0)) != ZERR_NONE)
return (retval);
- if ((retval = Z_GetHMPortAddr()) != ZERR_NONE)
- return (retval);
-
- sin.sin_family = AF_INET;
- sin.sin_port = htons(__HM_port);
- bcopy(__HM_addr,&sin.sin_addr,__HM_length);
-
- if (sendto(ZGetFD(),packet,len,0,&sin,sizeof(sin)) < 0)
+ dest = ZGetDestAddr();
+
+ if (sendto(ZGetFD(),packet,len,0,&dest,sizeof(dest)) < 0)
return (errno);
ZParseNotice(packet,len,&notice,&auth);
+ if (notice.z_kind == UNSAFE || notice.z_kind == HMACK ||
+ notice.z_kind == SERVACK || __HM_set)
+ return (ZERR_NONE);
+
tv.tv_sec = 0;
tv.tv_usec = 400000;
- for (i=0;i<4;i++) {
+ for (i=0;i<12;i++) {
select(0,&t1,&t2,&t3,&tv);
retval = ZCheckIfNotice(ackpack,sizeof ackpack,&notice,
&auth,findack,&notice.z_uid);
@@ -64,10 +63,9 @@ Code_t ZSendPacket(packet,len)
return (ZERR_HMDEAD);
}
-int findack(notice,uid)
+static int findack(notice,uid)
ZNotice_t *notice;
ZUnique_Id_t *uid;
{
- printf("FOO\n");
- return (!ZCompareUID(uid,&notice->z_uid));
+ return (ZCompareUID(uid,&notice->z_uid));
}