aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2010-02-17 22:17:37 +0000
committerChristian Grothoff <christian@grothoff.org>2010-02-17 22:17:37 +0000
commitfcc5b889b3c4783313567deb995d7437434469a3 (patch)
tree974c89a98a69c6e60fee1791c2a742853eec6e1f
parent662188ec6b6726338b1aba1480521c211a197b6a (diff)
downloadgnunet-fcc5b889b3c4783313567deb995d7437434469a3.tar.gz
gnunet-fcc5b889b3c4783313567deb995d7437434469a3.zip
fix state machine update
-rw-r--r--src/transport/gnunet-service-transport.c9
-rw-r--r--src/transport/test_transport_api_tcp_peer1.conf2
-rw-r--r--src/transport/test_transport_api_tcp_peer2.conf4
-rw-r--r--src/transport/transport_api.c28
4 files changed, 36 insertions, 7 deletions
diff --git a/src/transport/gnunet-service-transport.c b/src/transport/gnunet-service-transport.c
index 8f88311b0..b89bc8bce 100644
--- a/src/transport/gnunet-service-transport.c
+++ b/src/transport/gnunet-service-transport.c
@@ -1194,9 +1194,6 @@ try_transmission_to_peer (struct NeighbourList *neighbour)
1194 /* FIXME: support bi-directional use of TCP */ 1194 /* FIXME: support bi-directional use of TCP */
1195 if (mq->specific_address == NULL) 1195 if (mq->specific_address == NULL)
1196 mq->specific_address = find_ready_address(neighbour); 1196 mq->specific_address = find_ready_address(neighbour);
1197 GNUNET_CONTAINER_DLL_remove (neighbour->messages_head,
1198 neighbour->messages_tail,
1199 mq);
1200 if (mq->specific_address == NULL) 1197 if (mq->specific_address == NULL)
1201 { 1198 {
1202 timeout = GNUNET_TIME_absolute_get_remaining (mq->timeout); 1199 timeout = GNUNET_TIME_absolute_get_remaining (mq->timeout);
@@ -1210,6 +1207,9 @@ try_transmission_to_peer (struct NeighbourList *neighbour)
1210#endif 1207#endif
1211 if (mq->client != NULL) 1208 if (mq->client != NULL)
1212 transmit_send_ok (mq->client, neighbour, GNUNET_NO); 1209 transmit_send_ok (mq->client, neighbour, GNUNET_NO);
1210 GNUNET_CONTAINER_DLL_remove (neighbour->messages_head,
1211 neighbour->messages_tail,
1212 mq);
1213 GNUNET_free (mq); 1213 GNUNET_free (mq);
1214 return; /* nobody ready */ 1214 return; /* nobody ready */
1215 } 1215 }
@@ -1229,6 +1229,9 @@ try_transmission_to_peer (struct NeighbourList *neighbour)
1229#endif 1229#endif
1230 return; 1230 return;
1231 } 1231 }
1232 GNUNET_CONTAINER_DLL_remove (neighbour->messages_head,
1233 neighbour->messages_tail,
1234 mq);
1232 if (mq->specific_address->connected == GNUNET_NO) 1235 if (mq->specific_address->connected == GNUNET_NO)
1233 mq->specific_address->connect_attempts++; 1236 mq->specific_address->connect_attempts++;
1234 rl = mq->specific_address->ready_list; 1237 rl = mq->specific_address->ready_list;
diff --git a/src/transport/test_transport_api_tcp_peer1.conf b/src/transport/test_transport_api_tcp_peer1.conf
index 77902fd20..e854db16a 100644
--- a/src/transport/test_transport_api_tcp_peer1.conf
+++ b/src/transport/test_transport_api_tcp_peer1.conf
@@ -49,7 +49,7 @@ MINIMUM-FRIENDS = 0
49 49
50[transport] 50[transport]
51PLUGINS = tcp 51PLUGINS = tcp
52#DEBUG = YES 52DEBUG = YES
53#PREFIX = xterm -T transport2 -e gdb --command=cmd --args 53#PREFIX = xterm -T transport2 -e gdb --command=cmd --args
54#PREFIX = valgrind --leak-check=full 54#PREFIX = valgrind --leak-check=full
55ALLOW_SHUTDOWN = YES 55ALLOW_SHUTDOWN = YES
diff --git a/src/transport/test_transport_api_tcp_peer2.conf b/src/transport/test_transport_api_tcp_peer2.conf
index 870a4809e..44c6850ce 100644
--- a/src/transport/test_transport_api_tcp_peer2.conf
+++ b/src/transport/test_transport_api_tcp_peer2.conf
@@ -49,8 +49,8 @@ MINIMUM-FRIENDS = 0
49 49
50[transport] 50[transport]
51PLUGINS = tcp 51PLUGINS = tcp
52#DEBUG = YES 52DEBUG = YES
53PREFIX = 53# PREFIX =
54ALLOW_SHUTDOWN = YES 54ALLOW_SHUTDOWN = YES
55ACCEPT_FROM6 = ::1; 55ACCEPT_FROM6 = ::1;
56ACCEPT_FROM = 127.0.0.1; 56ACCEPT_FROM = 127.0.0.1;
diff --git a/src/transport/transport_api.c b/src/transport/transport_api.c
index 020253bc7..b99e8969b 100644
--- a/src/transport/transport_api.c
+++ b/src/transport/transport_api.c
@@ -640,6 +640,26 @@ transport_notify_ready (void *cls, size_t size, void *buf)
640 ret += (mret + sizeof (struct OutboundMessage)); 640 ret += (mret + sizeof (struct OutboundMessage));
641 size -= (mret + sizeof (struct OutboundMessage)); 641 size -= (mret + sizeof (struct OutboundMessage));
642 } 642 }
643 else
644 {
645 switch (n->transmit_stage)
646 {
647 case TS_NEW:
648 GNUNET_break (0);
649 break;
650 case TS_QUEUED:
651 GNUNET_break (0);
652 break;
653 case TS_TRANSMITTED:
654 n->transmit_stage = TS_NEW;
655 break;
656 case TS_TRANSMITTED_QUEUED:
657 GNUNET_break (0);
658 break;
659 default:
660 GNUNET_break (0);
661 }
662 }
643 } 663 }
644 schedule_transmission (h); 664 schedule_transmission (h);
645#if DEBUG_TRANSPORT 665#if DEBUG_TRANSPORT
@@ -1565,9 +1585,15 @@ peer_transmit_timeout (void *cls,
1565 void *notify_cls; 1585 void *notify_cls;
1566 1586
1567 th->notify_delay_task = GNUNET_SCHEDULER_NO_TASK; 1587 th->notify_delay_task = GNUNET_SCHEDULER_NO_TASK;
1588 n = th->neighbour;
1589#if DEBUG_TRANSPORT
1590 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1591 "Triggering timeout for request to transmit to `%4s' (%d)\n",
1592 GNUNET_i2s (&n->id),
1593 n->transmit_stage);
1594#endif
1568 notify = th->notify; 1595 notify = th->notify;
1569 notify_cls = th->notify_cls; 1596 notify_cls = th->notify_cls;
1570 n = th->neighbour;
1571 switch (n->transmit_stage) 1597 switch (n->transmit_stage)
1572 { 1598 {
1573 case TS_NEW: 1599 case TS_NEW: