X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fmesh%2Fmesh_api.c;h=6bdc2569508af09c37876b2aabb46e988428d5cf;hb=5d74fb965c6d619c323789da837e05a4b9c5def4;hp=ac1c3114ef0de876b1c95aef4e97f7b423f47be0;hpb=08f25a23f9750237979ca591c0ba8ca7002b2ea7;p=oweals%2Fgnunet.git diff --git a/src/mesh/mesh_api.c b/src/mesh/mesh_api.c index ac1c3114e..6bdc25695 100644 --- a/src/mesh/mesh_api.c +++ b/src/mesh/mesh_api.c @@ -443,6 +443,7 @@ create_tunnel (struct GNUNET_MESH_Handle *h, MESH_TunnelNumber tid) { t->tid = tid; } + t->max_pid = 1; return t; } @@ -1186,8 +1187,8 @@ msg_received (void *cls, const struct GNUNET_MessageHeader *msg) reconnect (h); return; } - LOG (GNUNET_ERROR_TYPE_DEBUG, "received a message type %hu from MESH\n", - ntohs (msg->type)); + LOG (GNUNET_ERROR_TYPE_DEBUG, "received a message type %s from MESH\n", + GNUNET_MESH_DEBUG_M2S (ntohs (msg->type))); switch (ntohs (msg->type)) { /* Notify of a new incoming tunnel */ @@ -1216,7 +1217,7 @@ msg_received (void *cls, const struct GNUNET_MessageHeader *msg) default: /* We shouldn't get any other packages, log and ignore */ LOG (GNUNET_ERROR_TYPE_WARNING, - "unsolicited message form service (type %d)\n", + "unsolicited message form service (type %hu)\n", ntohs (msg->type)); } LOG (GNUNET_ERROR_TYPE_DEBUG, "message processed\n"); @@ -1274,7 +1275,8 @@ send_callback (void *cls, size_t size, void *buf) if (GNUNET_YES == th_is_payload (th)) { LOG (GNUNET_ERROR_TYPE_DEBUG, " payload\n"); - if (t->max_pid < t->pid && ! PID_OVERFLOW (t->pid, t->max_pid)) { + if (t->max_pid < t->pid && GNUNET_NO == PID_OVERFLOW (t->pid, t->max_pid)) + { /* This tunnel is not ready to transmit yet, try next message */ next = th->next; continue; @@ -1289,8 +1291,8 @@ send_callback (void *cls, size_t size, void *buf) GNUNET_assert (size >= th->size); mh = (struct GNUNET_MessageHeader *) &cbuf[sizeof (to)]; psize = th->notify (th->notify_cls, size - sizeof (to), mh); - LOG (GNUNET_ERROR_TYPE_DEBUG, " to origin, type %u\n", - ntohs (mh->type)); + LOG (GNUNET_ERROR_TYPE_DEBUG, " to origin, type %s\n", + GNUNET_MESH_DEBUG_M2S (ntohs (mh->type))); if (psize > 0) { psize += sizeof (to); @@ -1313,8 +1315,8 @@ send_callback (void *cls, size_t size, void *buf) GNUNET_assert (size >= th->size); mh = (struct GNUNET_MessageHeader *) &cbuf[sizeof (mc)]; psize = th->notify (th->notify_cls, size - sizeof (mc), mh); - LOG (GNUNET_ERROR_TYPE_DEBUG, " multicast, type %u\n", - ntohs (mh->type)); + LOG (GNUNET_ERROR_TYPE_DEBUG, " multicast, type %s\n", + GNUNET_MESH_DEBUG_M2S (ntohs (mh->type))); if (psize > 0) { psize += sizeof (mc); @@ -1337,8 +1339,8 @@ send_callback (void *cls, size_t size, void *buf) GNUNET_assert (size >= th->size); mh = (struct GNUNET_MessageHeader *) &cbuf[sizeof (uc)]; psize = th->notify (th->notify_cls, size - sizeof (uc), mh); - LOG (GNUNET_ERROR_TYPE_DEBUG, " unicast, type %u\n", - ntohs (mh->type)); + LOG (GNUNET_ERROR_TYPE_DEBUG, " unicast, type %s\n", + GNUNET_MESH_DEBUG_M2S (ntohs (mh->type))); if (psize > 0) { psize += sizeof (uc); @@ -1358,8 +1360,8 @@ send_callback (void *cls, size_t size, void *buf) { struct GNUNET_MessageHeader *mh = (struct GNUNET_MessageHeader *) &th[1]; - LOG (GNUNET_ERROR_TYPE_DEBUG, " mesh traffic, type %u\n", - ntohs (mh->type)); + LOG (GNUNET_ERROR_TYPE_DEBUG, " mesh traffic, type %s\n", + GNUNET_MESH_DEBUG_M2S (ntohs (mh->type))); memcpy (cbuf, &th[1], th->size); psize = th->size; } @@ -1996,6 +1998,9 @@ GNUNET_MESH_notify_transmit_ready (struct GNUNET_MESH_Tunnel *tunnel, int cork, add_to_queue (tunnel->mesh, th); if (NULL != tunnel->mesh->th) return th; + if (GNUNET_NO == PID_OVERFLOW(tunnel->pid, tunnel->max_pid) && + tunnel->max_pid <= tunnel->pid) + return th; LOG (GNUNET_ERROR_TYPE_DEBUG, " call notify tmt rdy\n"); tunnel->mesh->th = GNUNET_CLIENT_notify_transmit_ready (tunnel->mesh->client, th->size, @@ -2016,6 +2021,7 @@ GNUNET_MESH_notify_transmit_ready_cancel (struct GNUNET_MESH_TransmitHandle *th) { struct GNUNET_MESH_Handle *mesh; + th->tunnel->packet_size = 0; mesh = th->tunnel->mesh; if (th->timeout_task != GNUNET_SCHEDULER_NO_TASK) GNUNET_SCHEDULER_cancel (th->timeout_task);