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