diff options
author | Robert S. French <rfrench@mit.edu> | 1987-07-31 12:14:44 +0000 |
---|---|---|
committer | Robert S. French <rfrench@mit.edu> | 1987-07-31 12:14:44 +0000 |
commit | 7dadbb8495b935c60641623d781a4ced2cfca1ca (patch) | |
tree | 4f81d4315dc02b910f13bedad8d903ab751f43f8 /zhm/zhm.c | |
parent | 3702c04bd627e90800be33952c4cb2d14a9bc1d8 (diff) |
Fixed index lossage
Diffstat (limited to 'zhm/zhm.c')
-rw-r--r-- | zhm/zhm.c | 42 |
1 files changed, 14 insertions, 28 deletions
@@ -56,7 +56,7 @@ extern char *index(); void init_hm(), detach(), handle_timeout(), resend_notices(), die_gracefully(); void set_sig_type(); -char *upcase(), *convert(); +char *upcase(); main(argc, argv) char *argv[]; @@ -256,26 +256,6 @@ char *upcase(s) return(r); } -/* This must first change the \0 at the end of addr to a '.' */ -char *convert(addr) - caddr_t addr; -{ - static char result[4]; - char *c, *r; - int i; - - *index(addr, '\0') = '.'; - c = addr; - for (i=0; i<4; i++) { - if ((r = index(c, '.')) > 0) { - *r = '\0'; - result[i] = (char)atoi(c); - c = r+1; - } - } - return(result); -} - /* Argument is whether we are actually booting, or just attaching after a server switch */ send_boot_notice(op) @@ -435,16 +415,22 @@ hm_control(notice) Code_t ret; struct hostent *hp; char suggested_server[64]; + long addr; DPR("Control message!\n"); if (!strcmp(notice->z_opcode, SERVER_SHUTDOWN)) { - if ((hp = gethostbyaddr(convert(notice->z_message), - 4, - AF_INET)) != NULL) { - strcpy(suggested_server, hp->h_name); - new_server(suggested_server); - } else - new_server(NULL); + if (notice->z_message_len) { + addr = inet_addr(notice->z_message); + if ((hp = gethostbyaddr(&addr, + 4, + AF_INET)) != NULL) { + strcpy(suggested_server, hp->h_name); + new_server(suggested_server); + } else + new_server(NULL); + } + else + new_server(NULL); } else if (!strcmp(notice->z_opcode, SERVER_PING)) { if (no_server) (void)alarm(0); |