diff options
author | Christian Grothoff <christian@grothoff.org> | 2010-02-17 22:17:37 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2010-02-17 22:17:37 +0000 |
commit | fcc5b889b3c4783313567deb995d7437434469a3 (patch) | |
tree | 974c89a98a69c6e60fee1791c2a742853eec6e1f | |
parent | 662188ec6b6726338b1aba1480521c211a197b6a (diff) | |
download | gnunet-fcc5b889b3c4783313567deb995d7437434469a3.tar.gz gnunet-fcc5b889b3c4783313567deb995d7437434469a3.zip |
fix state machine update
-rw-r--r-- | src/transport/gnunet-service-transport.c | 9 | ||||
-rw-r--r-- | src/transport/test_transport_api_tcp_peer1.conf | 2 | ||||
-rw-r--r-- | src/transport/test_transport_api_tcp_peer2.conf | 4 | ||||
-rw-r--r-- | src/transport/transport_api.c | 28 |
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] |
51 | PLUGINS = tcp | 51 | PLUGINS = tcp |
52 | #DEBUG = YES | 52 | DEBUG = 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 |
55 | ALLOW_SHUTDOWN = YES | 55 | ALLOW_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] |
51 | PLUGINS = tcp | 51 | PLUGINS = tcp |
52 | #DEBUG = YES | 52 | DEBUG = YES |
53 | PREFIX = | 53 | # PREFIX = |
54 | ALLOW_SHUTDOWN = YES | 54 | ALLOW_SHUTDOWN = YES |
55 | ACCEPT_FROM6 = ::1; | 55 | ACCEPT_FROM6 = ::1; |
56 | ACCEPT_FROM = 127.0.0.1; | 56 | ACCEPT_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: |