diff options
Diffstat (limited to 'src/transport/transport_api.c')
-rw-r--r-- | src/transport/transport_api.c | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/src/transport/transport_api.c b/src/transport/transport_api.c index 47bdef88e..dca9b4b78 100644 --- a/src/transport/transport_api.c +++ b/src/transport/transport_api.c | |||
@@ -743,6 +743,8 @@ demultiplexer (void *cls, | |||
743 | if (size < sizeof (struct ConnectInfoMessage)) | 743 | if (size < sizeof (struct ConnectInfoMessage)) |
744 | { | 744 | { |
745 | GNUNET_break (0); | 745 | GNUNET_break (0); |
746 | h->reconnecting = GNUNET_YES; | ||
747 | disconnect_and_schedule_reconnect (h); | ||
746 | break; | 748 | break; |
747 | } | 749 | } |
748 | cim = (const struct ConnectInfoMessage *) msg; | 750 | cim = (const struct ConnectInfoMessage *) msg; |
@@ -750,6 +752,8 @@ demultiplexer (void *cls, | |||
750 | sizeof (struct ConnectInfoMessage)) | 752 | sizeof (struct ConnectInfoMessage)) |
751 | { | 753 | { |
752 | GNUNET_break (0); | 754 | GNUNET_break (0); |
755 | h->reconnecting = GNUNET_YES; | ||
756 | disconnect_and_schedule_reconnect (h); | ||
753 | break; | 757 | break; |
754 | } | 758 | } |
755 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 759 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
@@ -759,6 +763,8 @@ demultiplexer (void *cls, | |||
759 | if (NULL != n) | 763 | if (NULL != n) |
760 | { | 764 | { |
761 | GNUNET_break (0); | 765 | GNUNET_break (0); |
766 | h->reconnecting = GNUNET_YES; | ||
767 | disconnect_and_schedule_reconnect (h); | ||
762 | break; | 768 | break; |
763 | } | 769 | } |
764 | n = neighbour_add (h, | 770 | n = neighbour_add (h, |
@@ -777,6 +783,8 @@ demultiplexer (void *cls, | |||
777 | if (size != sizeof (struct DisconnectInfoMessage)) | 783 | if (size != sizeof (struct DisconnectInfoMessage)) |
778 | { | 784 | { |
779 | GNUNET_break (0); | 785 | GNUNET_break (0); |
786 | h->reconnecting = GNUNET_YES; | ||
787 | disconnect_and_schedule_reconnect (h); | ||
780 | break; | 788 | break; |
781 | } | 789 | } |
782 | dim = (const struct DisconnectInfoMessage *) msg; | 790 | dim = (const struct DisconnectInfoMessage *) msg; |
@@ -788,6 +796,8 @@ demultiplexer (void *cls, | |||
788 | if (NULL == n) | 796 | if (NULL == n) |
789 | { | 797 | { |
790 | GNUNET_break (0); | 798 | GNUNET_break (0); |
799 | h->reconnecting = GNUNET_YES; | ||
800 | disconnect_and_schedule_reconnect (h); | ||
791 | break; | 801 | break; |
792 | } | 802 | } |
793 | neighbour_delete (h, | 803 | neighbour_delete (h, |
@@ -798,6 +808,8 @@ demultiplexer (void *cls, | |||
798 | if (size != sizeof (struct SendOkMessage)) | 808 | if (size != sizeof (struct SendOkMessage)) |
799 | { | 809 | { |
800 | GNUNET_break (0); | 810 | GNUNET_break (0); |
811 | h->reconnecting = GNUNET_YES; | ||
812 | disconnect_and_schedule_reconnect (h); | ||
801 | break; | 813 | break; |
802 | } | 814 | } |
803 | okm = (const struct SendOkMessage *) msg; | 815 | okm = (const struct SendOkMessage *) msg; |
@@ -811,9 +823,11 @@ demultiplexer (void *cls, | |||
811 | &okm->peer); | 823 | &okm->peer); |
812 | if (NULL == n) | 824 | if (NULL == n) |
813 | { | 825 | { |
814 | /* we should never get a 'SEND_OK' for a peer that we are not | 826 | /* We should never get a 'SEND_OK' for a peer that we are not |
815 | connected to */ | 827 | connected to */ |
816 | GNUNET_break (0); | 828 | GNUNET_break (0); |
829 | h->reconnecting = GNUNET_YES; | ||
830 | disconnect_and_schedule_reconnect (h); | ||
817 | break; | 831 | break; |
818 | } | 832 | } |
819 | if (bytes_physical >= bytes_msg) | 833 | if (bytes_physical >= bytes_msg) |
@@ -847,6 +861,8 @@ demultiplexer (void *cls, | |||
847 | sizeof (struct InboundMessage) + sizeof (struct GNUNET_MessageHeader)) | 861 | sizeof (struct InboundMessage) + sizeof (struct GNUNET_MessageHeader)) |
848 | { | 862 | { |
849 | GNUNET_break (0); | 863 | GNUNET_break (0); |
864 | h->reconnecting = GNUNET_YES; | ||
865 | disconnect_and_schedule_reconnect (h); | ||
850 | break; | 866 | break; |
851 | } | 867 | } |
852 | im = (const struct InboundMessage *) msg; | 868 | im = (const struct InboundMessage *) msg; |
@@ -854,6 +870,8 @@ demultiplexer (void *cls, | |||
854 | if (ntohs (imm->size) + sizeof (struct InboundMessage) != size) | 870 | if (ntohs (imm->size) + sizeof (struct InboundMessage) != size) |
855 | { | 871 | { |
856 | GNUNET_break (0); | 872 | GNUNET_break (0); |
873 | h->reconnecting = GNUNET_YES; | ||
874 | disconnect_and_schedule_reconnect (h); | ||
857 | break; | 875 | break; |
858 | } | 876 | } |
859 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 877 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
@@ -863,6 +881,8 @@ demultiplexer (void *cls, | |||
863 | if (NULL == n) | 881 | if (NULL == n) |
864 | { | 882 | { |
865 | GNUNET_break (0); | 883 | GNUNET_break (0); |
884 | h->reconnecting = GNUNET_YES; | ||
885 | disconnect_and_schedule_reconnect (h); | ||
866 | break; | 886 | break; |
867 | } | 887 | } |
868 | if (NULL != h->rec) | 888 | if (NULL != h->rec) |
@@ -874,12 +894,19 @@ demultiplexer (void *cls, | |||
874 | if (size != sizeof (struct QuotaSetMessage)) | 894 | if (size != sizeof (struct QuotaSetMessage)) |
875 | { | 895 | { |
876 | GNUNET_break (0); | 896 | GNUNET_break (0); |
897 | h->reconnecting = GNUNET_YES; | ||
898 | disconnect_and_schedule_reconnect (h); | ||
877 | break; | 899 | break; |
878 | } | 900 | } |
879 | qm = (const struct QuotaSetMessage *) msg; | 901 | qm = (const struct QuotaSetMessage *) msg; |
880 | n = neighbour_find (h, &qm->peer); | 902 | n = neighbour_find (h, &qm->peer); |
881 | if (NULL == n) | 903 | if (NULL == n) |
904 | { | ||
905 | GNUNET_break (0); | ||
906 | h->reconnecting = GNUNET_YES; | ||
907 | disconnect_and_schedule_reconnect (h); | ||
882 | break; | 908 | break; |
909 | } | ||
883 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 910 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
884 | "Receiving SET_QUOTA message for `%s' with quota %u\n", | 911 | "Receiving SET_QUOTA message for `%s' with quota %u\n", |
885 | GNUNET_i2s (&qm->peer), | 912 | GNUNET_i2s (&qm->peer), |
@@ -1305,7 +1332,7 @@ disconnect_and_schedule_reconnect (struct GNUNET_TRANSPORT_Handle *h) | |||
1305 | { | 1332 | { |
1306 | struct GNUNET_TRANSPORT_TransmitHandle *th; | 1333 | struct GNUNET_TRANSPORT_TransmitHandle *th; |
1307 | 1334 | ||
1308 | GNUNET_assert (h->reconnect_task == NULL); | 1335 | GNUNET_assert (NULL == h->reconnect_task); |
1309 | if (NULL != h->cth) | 1336 | if (NULL != h->cth) |
1310 | { | 1337 | { |
1311 | GNUNET_CLIENT_notify_transmit_ready_cancel (h->cth); | 1338 | GNUNET_CLIENT_notify_transmit_ready_cancel (h->cth); |