Consolidate duplicated code in add_listener(), and make sure
authorMichael Poole <mdpoole@troilus.org>
Mon, 13 Sep 2004 18:38:32 +0000 (18:38 +0000)
committerMichael Poole <mdpoole@troilus.org>
Mon, 13 Sep 2004 18:38:32 +0000 (18:38 +0000)
listener->server is set before calling inetport() on it.

git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/trunk@1138 c9e4aea6-c8fd-4c43-8297-357d70d61c8c

ChangeLog
ircd/listener.c

index 3ba5b71ad0bccba24a68db1fd7e8714f6205e912..6cc43f227938ff76181e9bea300a62d726222c82 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2004-09-13  Michael Poole <mdpoole@troilus.org>
+
+       * ircd/listener.c (add_listener): Consolidate duplicated code, and
+       make sure listener->server is set before calling inetport() on it.
+
 2004-09-12  Michael Poole <mdpoole@troilus.org>
 
        * include/channel.c (mode_parse_upass, mode_parse_apass): Only let
index 08167710234fca559430c35468a961466381f60b..e2b41fb1c850e91af7a73042e4169141e327e200 100644 (file)
@@ -256,31 +256,21 @@ void add_listener(int port, const char* vhost_ip, const char* mask,
       && !ircd_aton(&vaddr, vhost_ip))
       return;
 
-  if ((listener = find_listener(port, &vaddr))) {
-    /*
-     * set active flag and change connect mask here, it's the only thing
-     * that can change on a rehash
-     */
-    listener->active = 1;
-    if (mask)
-      ipmask_parse(mask, &listener->mask, &listener->mask_bits);
-    else
-      listener->mask_bits = 0;
-    listener->hidden = is_hidden;
-    listener->server = is_server;
-    return;
-  }
-
-  listener = make_listener(port, &vaddr);
+  listener = find_listener(port, &vaddr);
+  if (!listener)
+    listener = make_listener(port, &vaddr);
+  listener->active = 1;
+  listener->hidden = is_hidden;
+  listener->server = is_server;
+  if (mask)
+    ipmask_parse(mask, &listener->mask, &listener->mask_bits);
+  else
+    listener->mask_bits = 0;
 
-  if (inetport(listener)) {
-    listener->active = 1;
-    if (mask)
-      ipmask_parse(mask, &listener->mask, &listener->mask_bits);
-    else
-      listener->mask_bits = 0;
-    listener->hidden = is_hidden;
-    listener->server = is_server;
+  if (listener->fd >= 0) {
+    /* If the listener is already open, do not try to re-open. */
+  }
+  else if (inetport(listener)) {
     listener->next   = ListenerPollList;
     ListenerPollList = listener;
   }