return GNUNET_YES;
}
+static int reconnecting;
/**
* Function we use for handling incoming messages.
*
- * @param cls closure (struct GNUNET_TRANSPORT_Handle *)
+ * @param cls closure, a `struct GNUNET_TRANSPORT_Handle *`
* @param msg message received, NULL on timeout or fatal error
*/
static void
uint32_t bytes_physical;
GNUNET_assert (NULL != h->client);
+ if (GNUNET_YES == reconnecting)
+ {
+ return;
+ }
if (NULL == msg)
{
LOG (GNUNET_ERROR_TYPE_DEBUG,
"Error receiving from transport service, disconnecting temporarily.\n");
+ reconnecting = GNUNET_YES;
disconnect_and_schedule_reconnect (h);
return;
}
okm = (const struct SendOkMessage *) msg;
bytes_msg = ntohl (okm->bytes_msg);
bytes_physical = ntohl (okm->bytes_physical);
- LOG (GNUNET_ERROR_TYPE_DEBUG, "Receiving `%s' message, transmission %s.\n",
- "SEND_OK", ntohl (okm->success) == GNUNET_OK ? "succeeded" : "failed");
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
+ "Receiving SEND_OK message, transmission %s.\n",
+ ntohl (okm->success) == GNUNET_OK ? "succeeded" : "failed");
n = neighbour_find (h, &okm->peer);
if (NULL == n)
if (bytes_physical >= bytes_msg)
{
- LOG (GNUNET_ERROR_TYPE_DEBUG, "Overhead for %u byte message: %u \n",
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
+ "Overhead for %u byte message: %u\n",
bytes_msg, bytes_physical - bytes_msg);
n->traffic_overhead += bytes_physical - bytes_msg;
}
* Transmit message(s) to service.
*
* @param cls handle to transport
- * @param size number of bytes available in buf
+ * @param size number of bytes available in @a buf
* @param buf where to copy the message
- * @return number of bytes copied to buf
+ * @return number of bytes copied to @a buf
*/
static size_t
transport_notify_ready (void *cls, size_t size, void *buf)
{
GNUNET_CONTAINER_DLL_remove (h->control_head, h->control_tail, th);
nret = th->notify (th->notify_cls, size, &cbuf[ret]);
- LOG (GNUNET_ERROR_TYPE_DEBUG, "Added %u bytes of control message at %u\n",
+ LOG (GNUNET_ERROR_TYPE_DEBUG,
+ "Added %u bytes of control message at %u\n",
nret, ret);
GNUNET_free (th);
ret += nret;
* @param h handle to the transport service
* @param size number of bytes to be transmitted
* @param notify function to call to get the content
- * @param notify_cls closure for notify
+ * @param notify_cls closure for @a notify
* @return a `struct GNUNET_TRANSPORT_TransmitHandle`
*/
static struct GNUNET_TRANSPORT_TransmitHandle *
* Transmit START message to service.
*
* @param cls unused
- * @param size number of bytes available in buf
+ * @param size number of bytes available in @a buf
* @param buf where to copy the message
- * @return number of bytes copied to buf
+ * @return number of bytes copied to @a buf
*/
static size_t
send_start (void *cls, size_t size, void *buf)
GNUNET_assert (NULL == h->client);
GNUNET_assert (NULL == h->control_head);
GNUNET_assert (NULL == h->control_tail);
+ reconnecting = GNUNET_NO;
h->client = GNUNET_CLIENT_connect ("transport", h->cfg);
+
GNUNET_assert (NULL != h->client);
schedule_control_transmit (h, sizeof (struct StartMessage), &send_start, h);
}
{
GNUNET_CLIENT_disconnect (h->client);
h->client = NULL;
+/* LOG (GNUNET_ERROR_TYPE_ERROR,
+ "Client disconnect done \n");*/
}
/* Forget about all neighbours that we used to be connected to */
- GNUNET_CONTAINER_multipeermap_iterate (h->neighbours, &neighbour_delete, h);
+ GNUNET_CONTAINER_multipeermap_iterate (h->neighbours,
+ &neighbour_delete, h);
if (h->quota_task != GNUNET_SCHEDULER_NO_TASK)
{
GNUNET_SCHEDULER_cancel (h->quota_task);
}
+/**
+ * Checks if a given peer is connected to us
+ *
+ * @param handle connection to transport service
+ * @param peer the peer to check
+ * @return #GNUNET_YES (connected) or #GNUNET_NO (disconnected)
+ */
int
-GNUNET_TRANSPORT_check_neighbour_connected (struct GNUNET_TRANSPORT_Handle *handle,
- const struct GNUNET_PeerIdentity *peer)
+GNUNET_TRANSPORT_check_peer_connected (struct GNUNET_TRANSPORT_Handle *handle,
+ const struct GNUNET_PeerIdentity *peer)
{
if (GNUNET_YES ==
GNUNET_CONTAINER_multipeermap_contains (handle->neighbours,
/**
* Task to call the HelloUpdateCallback of the GetHelloHandle
*
- * @param cls the GetHelloHandle
+ * @param cls the `struct GNUNET_TRANSPORT_GetHelloHandle`
* @param tc the scheduler task context
*/
static void
/**
* Disconnect from the transport service.
*
- * @param handle handle to the service as returned from GNUNET_TRANSPORT_connect
+ * @param handle handle to the service as returned from #GNUNET_TRANSPORT_connect()
*/
void
GNUNET_TRANSPORT_disconnect (struct GNUNET_TRANSPORT_Handle *handle)