aboutsummaryrefslogtreecommitdiff
path: root/src/ats
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2011-11-09 16:37:44 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2011-11-09 16:37:44 +0000
commit0eb7262331293c2a0edff4fc392d3a1d6cc4923f (patch)
tree02dd23466680c0ab4875051259036c027c85d083 /src/ats
parent45fee720e9a36672778cd12754f6eb38840a121b (diff)
downloadgnunet-0eb7262331293c2a0edff4fc392d3a1d6cc4923f.tar.gz
gnunet-0eb7262331293c2a0edff4fc392d3a1d6cc4923f.zip
cancel address suggests
Diffstat (limited to 'src/ats')
-rw-r--r--src/ats/ats_api_scheduling.c31
-rw-r--r--src/ats/gnunet-service-ats.c3
-rw-r--r--src/ats/gnunet-service-ats_scheduling.c24
-rw-r--r--src/ats/gnunet-service-ats_scheduling.h10
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 */
643void
644GNUNET_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 */
180void
181GAS_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 */
100void
101GAS_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.