I have two nodes connected on the same IP.  I take this to mean that
the is_local is true in inet.c.  I have entries in my log like this,

07-02-18 00:18:37 (MESSAGE): FW: got no connection to port xxxx for 3600 secs
07-02-18 00:18:37 (MESSAGE): FW: we're not TCP-firewalled for port xxxx
07-02-18 00:18:45 (MESSAGE): FW: got no connection to port xxxx for 3600 secs
07-02-18 00:18:46 (MESSAGE): FW: we're not TCP-firewalled for port xxxx
07-02-18 00:18:53 (MESSAGE): FW: got no connection to port xxxx for 3600 secs
07-02-18 00:18:54 (MESSAGE): FW: we're not TCP-firewalled for port xxxx
07-02-18 00:19:00 (MESSAGE): FW: got no connection to port xxxx for 3600 secs
07-02-18 00:19:01 (MESSAGE): FW: we're not TCP-firewalled for port xxxx
07-02-18 00:19:12 (MESSAGE): FW: got no connection to port xxxx for 3600 secs
07-02-18 00:19:13 (MESSAGE): FW: we're not TCP-firewalled for port xxxx

The time stamps are obviously not one hour (3600 secs) apart.  I can
visually see the firewall icon flipping back and forth.  I guess that
multiple cq_inserts would cause two event call backs to
"got_no_connection".  This would seem to jive with my symptoms.  This
needs to be fixed as all the "connect callbacks" aren't kind to the
neighbour ultras.

I also added code to update the solicited udp.  This was behaving
rather bizarrely.  I think that we had an issue with this before, but
I cann't locate anything in the history.  Without moving the
"activity_seen" in inet_udp_got_solicited, my node becomes udp
firewalled upon starting.  After many hours, it becomes happy.  With
moving the "activity_seen", I never see the UDP firewall (in my highly
scientific test group of one test run).  This might not need to be
fixed, I think it may just increase the amount of callout queue items.

fwiw,
Bill Pringlemeir.

Index: inet.c
===================================================================
--- inet.c      (revision 12874)
+++ inet.c      (working copy)
@@ -331,10 +331,11 @@
 {
        gnet_prop_set_boolean_val(PROP_RECV_SOLICITED_UDP, TRUE);
 
+    activity_seen++;
        if (solicited_udp_ev == NULL) {
-               activity_seen++;
-               cq_insert(callout_queue,
-                       FW_SOLICITED_WINDOW * 1000, got_no_udp_solicited, NULL);
+               solicited_udp_ev =
+            cq_insert(callout_queue,
+                      FW_SOLICITED_WINDOW * 1000, got_no_udp_solicited, NULL);
                if (dbg)
                        printf("FW: got solicited UDP traffic\n");
        } else
@@ -433,7 +434,8 @@
 
        if (!is_firewalled) {
                g_assert(incoming_ev);
-               cq_resched(callout_queue, incoming_ev, FW_INCOMING_WINDOW * 
1000);
+        if(!is_local)
+            cq_resched(callout_queue, incoming_ev, FW_INCOMING_WINDOW * 1000);
                return;
        }
 
@@ -442,12 +444,13 @@
         * If we're not, then we're not firewalled.
         */
 
-       if (!is_local)
+       if (!is_local) {
                inet_not_firewalled();
 
-       incoming_ev = cq_insert(
-               callout_queue, FW_INCOMING_WINDOW * 1000,
-               got_no_connection, NULL);
+        incoming_ev = cq_insert(
+            callout_queue, FW_INCOMING_WINDOW * 1000,
+            got_no_connection, NULL);
+    }
 }
 
 /**
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Gtk-gnutella-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtk-gnutella-devel

Reply via email to