Index: libgmond.c
===================================================================
--- libgmond.c	(revision 2058)
+++ libgmond.c	(working copy)
@@ -288,8 +288,7 @@
     return (Ganglia_udp_send_channels)send_channels;
 
   /* Create my UDP send array */
-  send_channels = apr_array_make( context, num_udp_send_channels, 
-                                  sizeof(apr_socket_t *));
+  send_channels = apr_array_make( context, 1, sizeof(apr_socket_t *));
 
   for(i = 0; i< num_udp_send_channels; i++)
     {
@@ -325,9 +324,8 @@
           socket = create_mcast_client(pool, mcast_join, port, ttl, mcast_if, bind_address, bind_hostname);
           if(!socket)
             {
-              err_msg("Unable to join multicast channel %s:%d. Exiting\n",
-                  mcast_join, port);
-              exit(1);
+              err_msg("Unable to join multicast channel %s:%d.\n", mcast_join, port);
+              continue;
             }
         }
       else
@@ -336,9 +334,8 @@
           socket = create_udp_client( pool, host, port, bind_address, bind_hostname );
           if(!socket)
             {
-              err_msg("Unable to create UDP client for %s:%d. Exiting.\n",
-                      host? host: "NULL", port);
-              exit(1);
+              err_msg("Unable to create UDP client for %s:%d.\n", host? host: "NULL", port);
+              continue;
             }
         }
 
@@ -346,7 +343,15 @@
       *(apr_socket_t **)apr_array_push(send_channels) = socket;
     }
 
-  return (Ganglia_udp_send_channels)send_channels;
+  if( apr_is_empty_array(send_channels) )
+    {
+      err_msg("Unable to create any of the configured send channels. Exiting.\n");
+      exit(1);
+    }
+  else
+    {
+      return (Ganglia_udp_send_channels)send_channels;
+    }
 }
 
 
