s = find_session (sh, session_id, &m->peer);
if (s == NULL)
{
- GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "ATS tries to use outdated session `%s'\n", GNUNET_i2s(&m->peer));
- GNUNET_break (0);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "ATS tries to use outdated session `%s'\n", GNUNET_i2s(&m->peer));
+ //GNUNET_break (0);
+ return;
}
}
address.peer = m->peer;
}
+/**
+ * We would like to stop receiving address updates for this peer
+ *
+ * @param sh handle
+ * @param peer identity of the peer
+ */
+void
+GNUNET_ATS_suggest_address_cancel (struct GNUNET_ATS_SchedulingHandle *sh,
+ const struct GNUNET_PeerIdentity *peer)
+{
+ struct PendingMessage *p;
+ struct RequestAddressMessage *m;
+
+ p = GNUNET_malloc (sizeof (struct PendingMessage) +
+ sizeof (struct RequestAddressMessage));
+ p->size = sizeof (struct RequestAddressMessage);
+ p->is_init = GNUNET_NO;
+ m = (struct RequestAddressMessage *) &p[1];
+ m->header.type = htons (GNUNET_MESSAGE_TYPE_ATS_REQUEST_ADDRESS_CANCEL);
+ m->header.size = htons (sizeof (struct RequestAddressMessage));
+ m->reserved = htonl (0);
+ m->peer = *peer;
+ GNUNET_CONTAINER_DLL_insert_tail (sh->pending_head, sh->pending_tail, p);
+ do_transmit (sh);
+}
+
/**
* We have updated performance statistics for a given address. Note
* that this function can be called for addresses that are currently
{&GAS_handle_request_address, NULL,
GNUNET_MESSAGE_TYPE_ATS_REQUEST_ADDRESS,
sizeof (struct RequestAddressMessage)},
+ {&GAS_handle_request_address_cancel, NULL,
+ GNUNET_MESSAGE_TYPE_ATS_REQUEST_ADDRESS_CANCEL,
+ sizeof (struct RequestAddressMessage)},
{&GAS_handle_address_update, NULL,
GNUNET_MESSAGE_TYPE_ATS_ADDRESS_UPDATE, 0},
{&GAS_handle_address_in_use, NULL,
}
+/**
+ * Handle 'request address' messages from clients.
+ *
+ * @param cls unused, NULL
+ * @param client client that sent the request
+ * @param message the request message
+ */
+void
+GAS_handle_request_address_cancel (void *cls, struct GNUNET_SERVER_Client *client,
+ const struct GNUNET_MessageHeader *message)
+{
+ const struct RequestAddressMessage *msg =
+ (const struct RequestAddressMessage *) message;
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Received `%s' message\n",
+ "REQUEST_ADDRESS_CANCEL");
+ GNUNET_break (0 == ntohl (msg->reserved));
+
+ /* TODO */
+
+ GNUNET_SERVER_receive_done (client, GNUNET_OK);
+}
+
+
/**
* Handle 'address update' messages from clients.
*
const struct GNUNET_MessageHeader *message);
+/**
+ * Cancel 'request address' messages from clients.
+ *
+ * @param cls unused, NULL
+ * @param client client that sent the request
+ * @param message the request message
+ */
+void
+GAS_handle_request_address_cancel (void *cls, struct GNUNET_SERVER_Client *client,
+ const struct GNUNET_MessageHeader *message);
/**
* Handle 'address update' messages from clients.