{
t->tid = tid;
}
- t->max_send_pid = 1;
+ t->max_send_pid = INITIAL_WINDOW_SIZE - 1;
+ t->last_recv_pid = (uint32_t) -1;
return t;
}
LOG (GNUNET_ERROR_TYPE_DEBUG,
"Sending ACK on tunnel %X: %u\n",
- t->tid, t->last_recv_pid + 1);
+ t->tid, t->last_recv_pid + INITIAL_WINDOW_SIZE);
msg.header.type = htons (GNUNET_MESSAGE_TYPE_MESH_LOCAL_ACK);
msg.header.size = htons (sizeof (msg));
msg.tunnel_id = htonl (t->tid);
- msg.max_pid = t->last_recv_pid + 1;
+ msg.max_pid = htonl (t->last_recv_pid + INITIAL_WINDOW_SIZE);
send_packet (h, &msg.header, t);
return;
*/
continue;
}
+ t->next_send_pid = 0;
+ t->max_send_pid = INITIAL_WINDOW_SIZE - 1;
+ t->last_recv_pid = (uint32_t) -1;
tmsg.header.type = htons (GNUNET_MESSAGE_TYPE_MESH_LOCAL_TUNNEL_CREATE);
tmsg.header.size = htons (sizeof (struct GNUNET_MESH_TunnelMessage));
tmsg.tunnel_id = htonl (t->tid);
LOG (GNUNET_ERROR_TYPE_DEBUG, " ignored!\n");
return GNUNET_YES;
}
- if (GMC_is_pid_bigger(pid, t->last_recv_pid + 1))
+ if (GNUNET_YES ==
+ GMC_is_pid_bigger(pid, t->last_recv_pid + INITIAL_WINDOW_SIZE))
{
GNUNET_break (0);
LOG (GNUNET_ERROR_TYPE_WARNING, " unauthorized message!\n");
}
ack = ntohl (msg->max_pid);
LOG (GNUNET_ERROR_TYPE_DEBUG, " on tunnel %X, ack %u!\n", t->tid, ack);
- if (ack > t->max_send_pid || PID_OVERFLOW (t->max_send_pid, ack))
+ if (GNUNET_YES == GMC_is_pid_bigger(ack, t->max_send_pid))
t->max_send_pid = ack;
else
return;
add_to_queue (tunnel->mesh, th);
if (NULL != tunnel->mesh->th)
return th;
- if (GNUNET_NO == PID_OVERFLOW(tunnel->next_send_pid, tunnel->max_send_pid) &&
- tunnel->max_send_pid <= tunnel->next_send_pid)
+ if (GMC_is_pid_bigger(tunnel->next_send_pid, tunnel->max_send_pid))
return th;
LOG (GNUNET_ERROR_TYPE_DEBUG, " call notify tmt rdy\n");
tunnel->mesh->th =