diff options
author | John Kohl <jtkohl@mit.edu> | 1987-07-14 12:48:26 +0000 |
---|---|---|
committer | John Kohl <jtkohl@mit.edu> | 1987-07-14 12:48:26 +0000 |
commit | 36abe5c18513ae7333d865aed4ed10e66bea20c2 (patch) | |
tree | 1a6b5756da117102d7fc39b5902654df4e0eaa2c /server/dispatch.c | |
parent | edb2b139f6de5e5a6c002c5977a5d9fa863ddba6 (diff) |
plug up memory holes; change name of is_server to server_which_server
Diffstat (limited to 'server/dispatch.c')
-rw-r--r-- | server/dispatch.c | 33 |
1 files changed, 9 insertions, 24 deletions
diff --git a/server/dispatch.c b/server/dispatch.c index 3b70b59..d144b52 100644 --- a/server/dispatch.c +++ b/server/dispatch.c @@ -44,7 +44,6 @@ static char rcsid_dispatch_c[] = "$Header$"; */ static void xmit(), rexmit(), nack_cancel(); -static int is_server(); /* patchable magic numbers controlling the retransmission rate and count */ int num_rexmits = NUM_REXMITS; @@ -96,7 +95,7 @@ struct sockaddr_in *who; nack_cancel(notice, who); return; } - if (is_server(who)) { + if (server_which_server(who)) { server_dispatch(notice, auth, who); return; } else if (class_is_hm(notice)) { @@ -178,8 +177,9 @@ ZClient_t *client; /* go back, since remque will change things */ nack2 = nacked->q_back; timer_reset(nacked->na_timer); - xfree(nacked->na_packet); xremque(nacked); + xfree(nacked->na_packet); + xfree(nacked); /* now that the remque adjusted the linked list, we go forward again */ nacked = nack2->q_forw; @@ -189,26 +189,6 @@ ZClient_t *client; } /* - * Is this from a server? - */ -static int -is_server(who) -struct sockaddr_in *who; -{ - register ZServerDesc_t *servs; - register int num; - - if (who->sin_port != sock_sin.sin_port) - return(0); - - /* just look over the server list */ - for (servs = otherservers, num = 0; num < nservers; num++, servs++) - if (servs->zs_addr.sin_addr.s_addr == who->sin_addr.s_addr) - return(1); - return(0); -} - -/* * Send the notice to the client. After transmitting, put it onto the * not ack'ed list. */ @@ -264,10 +244,12 @@ int auth; if ((retval = ZSetDestAddr(&client->zct_sin)) != ZERR_NONE) { syslog(LOG_WARNING, "xmit set addr: %s", error_message(retval)); + xfree(noticepack); return; } if ((retval = ZSendPacket(noticepack, packlen)) != ZERR_NONE) { syslog(LOG_WARNING, "xmit xmit: %s", error_message(retval)); + xfree(noticepack); return; } @@ -276,6 +258,7 @@ int auth; if (!(nacked = (ZNotAcked_t *)xmalloc(sizeof(ZNotAcked_t)))) { /* no space: just punt */ syslog(LOG_WARNING, "xmit nack malloc"); + xfree(noticepack); return; } @@ -379,7 +362,8 @@ ZSentType sent; inet_ntoa(who->sin_addr), ntohs(who->sin_port))); - if (hostm_find_server(&who->sin_addr) != me_server) { + if (!server_which_server(who) && + (hostm_find_server(&who->sin_addr) != me_server)) { zdbug((LOG_DEBUG,"not me")); return; } @@ -459,6 +443,7 @@ struct sockaddr_in *who; timer_reset(nacked->na_timer); xfree(nacked->na_packet); xremque(nacked); + xfree(nacked); return; } zdbug((LOG_DEBUG,"nack not found")); |