From 7ea0c2f3bf893fdb843d0854aae5b0dd60b84ac7 Mon Sep 17 00:00:00 2001
From: gardners <paul@servalproject.org>
Date: Fri, 22 Jun 2012 13:56:37 +0930
Subject: [PATCH] fixed bug in dummynet interface handling with new event
 scheduler.

---
 overlay_interface.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/overlay_interface.c b/overlay_interface.c
index 52675952..5a0f9a6f 100644
--- a/overlay_interface.c
+++ b/overlay_interface.c
@@ -189,6 +189,7 @@ overlay_interface_init_socket(int interface, struct sockaddr_in src_addr, struct
 
   I(fd) = socket(PF_INET,SOCK_DGRAM,0);
   fd_watch(I(fd),overlay_interface_poll,POLL_IN);
+  WHYF("Watching fd#%d for interface #%d",I(fd),interface);
   if (I(fd) < 0) {
       WHY_perror("socket()");
       WHYF("Could not create UDP socket for interface: %s",strerror(errno));
@@ -271,7 +272,6 @@ int overlay_interface_init(char *name,struct sockaddr_in src_addr,struct sockadd
 
   if (name[0]=='>') {
     I(fileP)=1;
-    fd_setalarm(overlay_dummy_poll,10,10);
     char dummyfile[1024];
     if (name[1]=='/') {
       /* Absolute path */
@@ -295,6 +295,7 @@ int overlay_interface_init(char *name,struct sockaddr_in src_addr,struct sockadd
   }
 
   overlay_interface_count++;
+  fd_setalarm(overlay_dummy_poll,10,10);
 #undef I
   return 0;
 }
@@ -350,7 +351,7 @@ void overlay_dummy_poll()
   unsigned char packet[16384];
   int plen=0;
   int c[OVERLAY_MAX_INTERFACES];
-  int count=0;
+  int count=1;
   int dummys=0;
 
   /* Check for input on any dummy interfaces that are attached to ordinary
@@ -625,7 +626,7 @@ void overlay_interface_discover(void) {
       /* We already know about this interface, so just update it */
       overlay_interfaces[i].observed = 1;
     else {
-      /* New interface, so register it */
+      /* New interface, so register it */      
       if (overlay_interface_init(r->namespec,dummyaddr,dummyaddr,
 				 1000000,PORT_DNA,OVERLAY_INTERFACE_WIFI)) {
 	if (debug & DEBUG_OVERLAYINTERFACES) WHYF("Could not initialise newly seen interface %s", r->namespec);