diff options
author | Samba Release Account <samba-bugs@samba.org> | 1996-07-17 18:33:36 +0000 |
---|---|---|
committer | Samba Release Account <samba-bugs@samba.org> | 1996-07-17 18:33:36 +0000 |
commit | 25b30c08dce8c04b7b98c02ac1de61d7aa76798f (patch) | |
tree | 5d9cebebe73e69021e3fd0b5583db3a871543969 /source3/namedbserver.c | |
parent | a17469475973ca4e682753b6cfad7170577810fb (diff) | |
download | samba-25b30c08dce8c04b7b98c02ac1de61d7aa76798f.tar.gz samba-25b30c08dce8c04b7b98c02ac1de61d7aa76798f.tar.bz2 samba-25b30c08dce8c04b7b98c02ac1de61d7aa76798f.zip |
lots of changes to nmbd
lkcl
(This used to be commit 45d3b2644733333c657c48a69719fec72881f7df)
Diffstat (limited to 'source3/namedbserver.c')
-rw-r--r-- | source3/namedbserver.c | 51 |
1 files changed, 34 insertions, 17 deletions
diff --git a/source3/namedbserver.c b/source3/namedbserver.c index de0cda79cc..f695644129 100644 --- a/source3/namedbserver.c +++ b/source3/namedbserver.c @@ -103,6 +103,26 @@ static void add_server(struct work_record *work,struct server_record *s) /**************************************************************************** + find a server in a server list. + **************************************************************************/ +struct server_record *find_server(struct work_record *work, char *name) +{ + struct server_record *ret; + + if (!work) return NULL; + + for (ret = work->serverlist; ret; ret = ret->next) + { + if (strequal(ret->serv.name,name)) + { + return ret; + } + } + return NULL; +} + + +/**************************************************************************** add a server entry ****************************************************************************/ struct server_record *add_server_entry(struct subnet_record *d, @@ -115,33 +135,30 @@ struct server_record *add_server_entry(struct subnet_record *d, struct server_record *s; if (name[0] == '*') - { + { return (NULL); - } - - for (s = work->serverlist; s; s = s->next) - { - if (strequal(name,s->serv.name)) break; - } + } + s = find_server(work, name); + if (s && !replace) - { - DEBUG(4,("Not replacing %s\n",name)); - return(s); - } + { + DEBUG(4,("Not replacing %s\n",name)); + return(s); + } if (!s || s->serv.type != servertype || !strequal(s->serv.comment, comment)) updatedlists=True; if (!s) - { - newentry = True; - s = (struct server_record *)malloc(sizeof(*s)); + { + newentry = True; + s = (struct server_record *)malloc(sizeof(*s)); - if (!s) return(NULL); + if (!s) return(NULL); - bzero((char *)s,sizeof(*s)); - } + bzero((char *)s,sizeof(*s)); + } if (d->my_interface && strequal(lp_workgroup(),work->work_group)) |