summaryrefslogtreecommitdiff
path: root/server/bdump.c
diff options
context:
space:
mode:
authorGravatar John Kohl <jtkohl@mit.edu>1988-06-15 18:48:30 +0000
committerGravatar John Kohl <jtkohl@mit.edu>1988-06-15 18:48:30 +0000
commitb68a61bbdea8bac1d245bf726ef4dc61e9b2be2b (patch)
treeefe7f0fdaf838fef6afa1e079b500377b6cb4281 /server/bdump.c
parent5991bda5dacd02da8be0e5c16a4586b71f5cbafc (diff)
new library fixes
Diffstat (limited to 'server/bdump.c')
-rw-r--r--server/bdump.c66
1 files changed, 35 insertions, 31 deletions
diff --git a/server/bdump.c b/server/bdump.c
index 54c65a6..d50bdb7 100644
--- a/server/bdump.c
+++ b/server/bdump.c
@@ -89,21 +89,18 @@ struct sockaddr_in *who;
return;
}
bzero((caddr_t) &bdump_sin, sizeof(bdump_sin));
- bdump_sin.sin_port = htons((u_short)((getpid()*8)&0xfff)+(((int)random()>>4)&0xf)+1024);
- bdump_sin.sin_addr = my_addr;
+ /* a port field of 0 and an address of INADDR_ANY makes the UNIX
+ kernel choose an appropriate port/address pair */
+
+ bdump_sin.sin_port = 0;
+ bdump_sin.sin_addr.s_addr = INADDR_ANY;
bdump_sin.sin_family = AF_INET;
- do {
- if ((retval = bind(bdump_socket, (struct sockaddr *) &bdump_sin, sizeof(bdump_sin))) < 0) {
- if (errno == EADDRINUSE)
- bdump_sin.sin_port = htons(ntohs(bdump_sin.sin_port) + 1);
- else {
- syslog(LOG_ERR, "bdump bind %d: %m", htons(bdump_sin.sin_port));
- (void) close(bdump_socket);
- bdump_socket = -1;
- return;
- }
- }
- } while (retval < 0);
+ if ((retval = bind(bdump_socket, (struct sockaddr *) &bdump_sin, sizeof(bdump_sin))) < 0) {
+ syslog(LOG_ERR, "bdump bind %d: %m", htons(bdump_sin.sin_port));
+ (void) close(bdump_socket);
+ bdump_socket = -1;
+ return;
+ }
#else
int bdump_port = IPPORT_RESERVED - 1;
/*
@@ -439,7 +436,7 @@ int num;
{
ZNotice_t notice;
register ZNotice_t *pnotice; /* speed hack */
- ZPacket_t pack;
+ char *pack;
int packlen, count;
Code_t retval;
u_short length;
@@ -456,28 +453,31 @@ int num;
pnotice->z_recipient = recip;
pnotice->z_default_format = 0;
- packlen = sizeof(pack);
-
- if ((retval = ZFormatNoticeList(pnotice, lyst, num, pack, packlen, &packlen, ZNOAUTH)) != ZERR_NONE)
+ if ((retval = ZFormatNoticeList(pnotice, lyst, num, &pack, &packlen, ZNOAUTH)) != ZERR_NONE)
return(retval);
length = htons((u_short) packlen);
if ((count = net_write(live_socket, (caddr_t) &length, sizeof(length))) != sizeof(length))
- if (count < 0)
+ if (count < 0) {
+ xfree(pack); /* free allocated storage */
return(errno);
- else {
+ } else {
syslog(LOG_WARNING, "slt xmit: %d vs %d",sizeof(length),count);
+ xfree(pack); /* free allocated storage */
return(ZSRV_PKSHORT);
}
if ((count = net_write(live_socket, pack, packlen)) != packlen)
- if (count < 0)
+ if (count < 0) {
+ xfree(pack); /* free allocated storage */
return(errno);
- else {
+ } else {
syslog(LOG_WARNING, "slt xmit: %d vs %d",packlen, count);
+ xfree(pack); /* free allocated storage */
return(ZSRV_PKSHORT);
}
+ xfree(pack); /* free allocated storage */
return(ZERR_NONE);
}
@@ -984,7 +984,7 @@ int num;
{
ZNotice_t notice;
register ZNotice_t *pnotice; /* speed hack */
- ZPacket_t pack;
+ char *pack;
int packlen;
Code_t retval;
@@ -1000,17 +1000,18 @@ int num;
pnotice->z_recipient = recip;
pnotice->z_default_format = 0;
- packlen = sizeof(pack);
- if ((retval = ZFormatNoticeList(pnotice, lyst, num, pack, packlen, &packlen, ZNOAUTH)) != ZERR_NONE) {
+ if ((retval = ZFormatNoticeList(pnotice, lyst, num, &pack, &packlen, ZNOAUTH)) != ZERR_NONE) {
syslog(LOG_WARNING, "sl format: %s", error_message(retval));
return(retval);
}
- if ((retval = ZSendPacket(pack, packlen)) != ZERR_NONE) {
+ if ((retval = ZSendPacket(pack, packlen, 0)) != ZERR_NONE) {
syslog(LOG_WARNING, "sl xmit: %s", error_message(retval));
+ xfree(pack); /* free allocated storage */
return(retval);
}
+ xfree(pack); /* free allocated storage */
return(ZERR_NONE);
}
@@ -1028,7 +1029,7 @@ int len;
{
ZNotice_t notice;
register ZNotice_t *pnotice; /* speed hack */
- ZPacket_t pack;
+ char *pack;
int packlen, count;
Code_t retval;
u_short length;
@@ -1047,9 +1048,7 @@ int len;
pnotice->z_message = message;
pnotice->z_message_len = len;
- packlen = sizeof(pack);
-
- if ((retval = ZFormatNotice(pnotice, pack, packlen, &packlen, ZNOAUTH)) != ZERR_NONE) {
+ if ((retval = ZFormatNotice(pnotice, &pack, &packlen, ZNOAUTH)) != ZERR_NONE) {
syslog(LOG_WARNING, "sn format: %s", error_message(retval));
return(retval);
}
@@ -1059,20 +1058,25 @@ int len;
if ((count = net_write(live_socket, (caddr_t) &length, sizeof(length))) != sizeof(length)) {
if (count < 0) {
syslog(LOG_WARNING, "snt xmit/len: %m");
+ xfree(pack); /* free allocated storage */
return(errno);
} else {
syslog(LOG_WARNING, "snt xmit: %d vs %d",sizeof(length),count);
+ xfree(pack); /* free allocated storage */
return(ZSRV_LEN);
}
}
- if ((count = net_write(live_socket, pack, packlen)) != packlen)
+ if ((count = net_write(live_socket, *pack, packlen)) != packlen)
if (count < 0) {
syslog(LOG_WARNING, "snt xmit: %m");
+ xfree(pack); /* free allocated storage */
return(errno);
} else {
syslog(LOG_WARNING, "snt xmit: %d vs %d",packlen, count);
+ xfree(pack); /* free allocated storage */
return(ZSRV_LEN);
}
+ xfree(pack); /* free allocated storage */
return(ZERR_NONE);
}