diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2011-11-09 16:37:44 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2011-11-09 16:37:44 +0000 |
commit | 0eb7262331293c2a0edff4fc392d3a1d6cc4923f (patch) | |
tree | 02dd23466680c0ab4875051259036c027c85d083 /src/ats | |
parent | 45fee720e9a36672778cd12754f6eb38840a121b (diff) | |
download | gnunet-0eb7262331293c2a0edff4fc392d3a1d6cc4923f.tar.gz gnunet-0eb7262331293c2a0edff4fc392d3a1d6cc4923f.zip |
cancel address suggests
Diffstat (limited to 'src/ats')
-rw-r--r-- | src/ats/ats_api_scheduling.c | 31 | ||||
-rw-r--r-- | src/ats/gnunet-service-ats.c | 3 | ||||
-rw-r--r-- | src/ats/gnunet-service-ats_scheduling.c | 24 | ||||
-rw-r--r-- | src/ats/gnunet-service-ats_scheduling.h | 10 |
4 files changed, 66 insertions, 2 deletions
diff --git a/src/ats/ats_api_scheduling.c b/src/ats/ats_api_scheduling.c index 13a4ce830..dd06916a1 100644 --- a/src/ats/ats_api_scheduling.c +++ b/src/ats/ats_api_scheduling.c | |||
@@ -499,8 +499,9 @@ process_ats_message (void *cls, const struct GNUNET_MessageHeader *msg) | |||
499 | s = find_session (sh, session_id, &m->peer); | 499 | s = find_session (sh, session_id, &m->peer); |
500 | if (s == NULL) | 500 | if (s == NULL) |
501 | { | 501 | { |
502 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "ATS tries to use outdated session `%s'\n", GNUNET_i2s(&m->peer)); | 502 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "ATS tries to use outdated session `%s'\n", GNUNET_i2s(&m->peer)); |
503 | GNUNET_break (0); | 503 | //GNUNET_break (0); |
504 | return; | ||
504 | } | 505 | } |
505 | } | 506 | } |
506 | address.peer = m->peer; | 507 | address.peer = m->peer; |
@@ -634,6 +635,32 @@ GNUNET_ATS_suggest_address (struct GNUNET_ATS_SchedulingHandle *sh, | |||
634 | 635 | ||
635 | 636 | ||
636 | /** | 637 | /** |
638 | * We would like to stop receiving address updates for this peer | ||
639 | * | ||
640 | * @param sh handle | ||
641 | * @param peer identity of the peer | ||
642 | */ | ||
643 | void | ||
644 | GNUNET_ATS_suggest_address_cancel (struct GNUNET_ATS_SchedulingHandle *sh, | ||
645 | const struct GNUNET_PeerIdentity *peer) | ||
646 | { | ||
647 | struct PendingMessage *p; | ||
648 | struct RequestAddressMessage *m; | ||
649 | |||
650 | p = GNUNET_malloc (sizeof (struct PendingMessage) + | ||
651 | sizeof (struct RequestAddressMessage)); | ||
652 | p->size = sizeof (struct RequestAddressMessage); | ||
653 | p->is_init = GNUNET_NO; | ||
654 | m = (struct RequestAddressMessage *) &p[1]; | ||
655 | m->header.type = htons (GNUNET_MESSAGE_TYPE_ATS_REQUEST_ADDRESS_CANCEL); | ||
656 | m->header.size = htons (sizeof (struct RequestAddressMessage)); | ||
657 | m->reserved = htonl (0); | ||
658 | m->peer = *peer; | ||
659 | GNUNET_CONTAINER_DLL_insert_tail (sh->pending_head, sh->pending_tail, p); | ||
660 | do_transmit (sh); | ||
661 | } | ||
662 | |||
663 | /** | ||
637 | * We have updated performance statistics for a given address. Note | 664 | * We have updated performance statistics for a given address. Note |
638 | * that this function can be called for addresses that are currently | 665 | * that this function can be called for addresses that are currently |
639 | * in use as well as addresses that are valid but not actively in use. | 666 | * in use as well as addresses that are valid but not actively in use. |
diff --git a/src/ats/gnunet-service-ats.c b/src/ats/gnunet-service-ats.c index ec374aef8..355a44c43 100644 --- a/src/ats/gnunet-service-ats.c +++ b/src/ats/gnunet-service-ats.c | |||
@@ -135,6 +135,9 @@ run (void *cls, struct GNUNET_SERVER_Handle *server, | |||
135 | {&GAS_handle_request_address, NULL, | 135 | {&GAS_handle_request_address, NULL, |
136 | GNUNET_MESSAGE_TYPE_ATS_REQUEST_ADDRESS, | 136 | GNUNET_MESSAGE_TYPE_ATS_REQUEST_ADDRESS, |
137 | sizeof (struct RequestAddressMessage)}, | 137 | sizeof (struct RequestAddressMessage)}, |
138 | {&GAS_handle_request_address_cancel, NULL, | ||
139 | GNUNET_MESSAGE_TYPE_ATS_REQUEST_ADDRESS_CANCEL, | ||
140 | sizeof (struct RequestAddressMessage)}, | ||
138 | {&GAS_handle_address_update, NULL, | 141 | {&GAS_handle_address_update, NULL, |
139 | GNUNET_MESSAGE_TYPE_ATS_ADDRESS_UPDATE, 0}, | 142 | GNUNET_MESSAGE_TYPE_ATS_ADDRESS_UPDATE, 0}, |
140 | {&GAS_handle_address_in_use, NULL, | 143 | {&GAS_handle_address_in_use, NULL, |
diff --git a/src/ats/gnunet-service-ats_scheduling.c b/src/ats/gnunet-service-ats_scheduling.c index fb4040417..d289ae594 100644 --- a/src/ats/gnunet-service-ats_scheduling.c +++ b/src/ats/gnunet-service-ats_scheduling.c | |||
@@ -171,6 +171,30 @@ GAS_handle_request_address (void *cls, struct GNUNET_SERVER_Client *client, | |||
171 | 171 | ||
172 | 172 | ||
173 | /** | 173 | /** |
174 | * Handle 'request address' messages from clients. | ||
175 | * | ||
176 | * @param cls unused, NULL | ||
177 | * @param client client that sent the request | ||
178 | * @param message the request message | ||
179 | */ | ||
180 | void | ||
181 | GAS_handle_request_address_cancel (void *cls, struct GNUNET_SERVER_Client *client, | ||
182 | const struct GNUNET_MessageHeader *message) | ||
183 | { | ||
184 | const struct RequestAddressMessage *msg = | ||
185 | (const struct RequestAddressMessage *) message; | ||
186 | |||
187 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Received `%s' message\n", | ||
188 | "REQUEST_ADDRESS_CANCEL"); | ||
189 | GNUNET_break (0 == ntohl (msg->reserved)); | ||
190 | |||
191 | /* TODO */ | ||
192 | |||
193 | GNUNET_SERVER_receive_done (client, GNUNET_OK); | ||
194 | } | ||
195 | |||
196 | |||
197 | /** | ||
174 | * Handle 'address update' messages from clients. | 198 | * Handle 'address update' messages from clients. |
175 | * | 199 | * |
176 | * @param cls unused, NULL | 200 | * @param cls unused, NULL |
diff --git a/src/ats/gnunet-service-ats_scheduling.h b/src/ats/gnunet-service-ats_scheduling.h index b97430b62..cb4e5e08e 100644 --- a/src/ats/gnunet-service-ats_scheduling.h +++ b/src/ats/gnunet-service-ats_scheduling.h | |||
@@ -90,6 +90,16 @@ GAS_handle_request_address (void *cls, struct GNUNET_SERVER_Client *client, | |||
90 | const struct GNUNET_MessageHeader *message); | 90 | const struct GNUNET_MessageHeader *message); |
91 | 91 | ||
92 | 92 | ||
93 | /** | ||
94 | * Cancel 'request address' messages from clients. | ||
95 | * | ||
96 | * @param cls unused, NULL | ||
97 | * @param client client that sent the request | ||
98 | * @param message the request message | ||
99 | */ | ||
100 | void | ||
101 | GAS_handle_request_address_cancel (void *cls, struct GNUNET_SERVER_Client *client, | ||
102 | const struct GNUNET_MessageHeader *message); | ||
93 | 103 | ||
94 | /** | 104 | /** |
95 | * Handle 'address update' messages from clients. | 105 | * Handle 'address update' messages from clients. |