GNUNET_i2s (&n->peer));
#endif
size = sizeof (struct PeerStatusNotifyMessage) +
- (n->ats_count+1) * sizeof (struct GNUNET_TRANSPORT_ATS_Information);
+ n->ats_count * sizeof (struct GNUNET_TRANSPORT_ATS_Information);
if (size >= GNUNET_SERVER_MAX_MESSAGE_SIZE)
{
GNUNET_break (0);
n->ats_count,
0);
size = sizeof (struct PeerStatusNotifyMessage) +
- (n->ats_count+1) * sizeof (struct GNUNET_TRANSPORT_ATS_Information);
+ n->ats_count * sizeof (struct GNUNET_TRANSPORT_ATS_Information);
}
psnm = (struct PeerStatusNotifyMessage*) buf;
psnm->header.size = htons (size);
while (n != NULL)
{
size = sizeof (struct ConnectNotifyMessage) +
- (n->ats_count+1) * sizeof (struct GNUNET_TRANSPORT_ATS_Information);
+ (n->ats_count) * sizeof (struct GNUNET_TRANSPORT_ATS_Information);
if (size >= GNUNET_SERVER_MAX_MESSAGE_SIZE)
{
GNUNET_break (0);
n->ats_count,
0);
size = sizeof (struct ConnectNotifyMessage) +
- (n->ats_count+1) * sizeof (struct GNUNET_TRANSPORT_ATS_Information);
+ (n->ats_count) * sizeof (struct GNUNET_TRANSPORT_ATS_Information);
}
cnm = (struct ConnectNotifyMessage*) buf;
cnm->header.size = htons (size);
if (n->status == PEER_STATE_KEY_CONFIRMED)
{
size = sizeof (struct ConnectNotifyMessage) +
- (n->ats_count+1) * sizeof (struct GNUNET_TRANSPORT_ATS_Information);
+ (n->ats_count) * sizeof (struct GNUNET_TRANSPORT_ATS_Information);
if (size >= GNUNET_SERVER_MAX_MESSAGE_SIZE)
{
GNUNET_break (0);
n->ats_count,
0);
size = sizeof (struct PeerStatusNotifyMessage) +
- (n->ats_count+1) * sizeof (struct GNUNET_TRANSPORT_ATS_Information);
+ n->ats_count * sizeof (struct GNUNET_TRANSPORT_ATS_Information);
}
cnm = (struct ConnectNotifyMessage*) buf;
cnm->header.size = htons (size);
memcpy (ats,
n->ats,
n->ats_count * sizeof (struct GNUNET_TRANSPORT_ATS_Information));
- ats[n->ats_count].type = htonl (0);
+ ats[n->ats_count].type = htonl (GNUNET_TRANSPORT_ATS_ARRAY_TERMINATOR);
ats[n->ats_count].value = htonl (0);
#if DEBUG_CORE_CLIENT
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
n = n->next;
}
done_msg.size = htons (sizeof (struct GNUNET_MessageHeader));
- done_msg.type = htons (GNUNET_MESSAGE_TYPE_CORE_NOTIFY_CONNECT);
+ done_msg.type = htons (GNUNET_MESSAGE_TYPE_CORE_ITERATE_PEERS_END);
GNUNET_SERVER_transmit_context_append_message (tc, &done_msg);
GNUNET_SERVER_transmit_context_run (tc,
GNUNET_TIME_UNIT_FOREVER_REL);
if (ats_count == 0)
return;
- for (i=0;i<ats_count;i++)
+ for (i = 0; i < ats_count; i++)
{
- for (j=0;j<n->ats_count;j++)
+ for (j=0;j < n->ats_count; j++)
{
if (n->ats[j].type == ats[i].type)
{
break;
}
}
- if (j == n->ats_count)
- GNUNET_array_append (n->ats,
- n->ats_count,
- *ats);
+ if (j == n->ats_count)
+ {
+ GNUNET_array_append (n->ats,
+ n->ats_count,
+ ats[i]);
+ }
}
}
}
update_neighbour_performance (n, ats, ats_count);
size = sizeof (struct ConnectNotifyMessage) +
- (n->ats_count+1) * sizeof (struct GNUNET_TRANSPORT_ATS_Information);
+ (n->ats_count) * sizeof (struct GNUNET_TRANSPORT_ATS_Information);
if (size >= GNUNET_SERVER_MAX_MESSAGE_SIZE)
{
GNUNET_break (0);
n->ats_count,
0);
size = sizeof (struct PeerStatusNotifyMessage) +
- (n->ats_count+1) * sizeof (struct GNUNET_TRANSPORT_ATS_Information);
+ n->ats_count * sizeof (struct GNUNET_TRANSPORT_ATS_Information);
}
cnm = (struct ConnectNotifyMessage*) buf;
cnm->header.size = htons (size);
cnm->header.type = htons (GNUNET_MESSAGE_TYPE_CORE_NOTIFY_CONNECT);
cnm->ats_count = htonl (n->ats_count);
+ cnm->peer = n->peer;
mats = &cnm->ats;
memcpy (mats,
n->ats,
n->ats_count * sizeof (struct GNUNET_TRANSPORT_ATS_Information));
- mats[n->ats_count].type = htonl (0);
+ mats[n->ats_count].type = htonl (GNUNET_TRANSPORT_ATS_ARRAY_TERMINATOR);
mats[n->ats_count].value = htonl (0);
send_to_all_clients (&cnm->header,
GNUNET_NO,
const void *m, size_t msize)
{
size_t size = msize + sizeof (struct NotifyTrafficMessage) +
- (sender->ats_count+1) * sizeof (struct GNUNET_TRANSPORT_ATS_Information);
+ (sender->ats_count) * sizeof (struct GNUNET_TRANSPORT_ATS_Information);
char buf[size];
struct NotifyTrafficMessage *ntm;
struct GNUNET_TRANSPORT_ATS_Information *ats;
sender->ats_count,
0);
size = msize + sizeof (struct NotifyTrafficMessage) +
- (sender->ats_count+1) * sizeof (struct GNUNET_TRANSPORT_ATS_Information);
+ (sender->ats_count) * sizeof (struct GNUNET_TRANSPORT_ATS_Information);
}
#if DEBUG_CORE
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
cnm.peer = *peer;
send_to_all_clients (&cnm.header, GNUNET_NO, GNUNET_CORE_OPTION_SEND_DISCONNECT);
}
- if (NULL != n->th)
+
+ /* On transport disconnect transport doesn't cancel requests, so must do so here. */
+ if (n->th != NULL)
{
- GNUNET_TRANSPORT_notify_transmit_ready_cancel (n->th);
- n->th = NULL;
+ GNUNET_TRANSPORT_notify_transmit_ready_cancel(n->th);
}
+ n->th = NULL;
+
n->is_connected = GNUNET_NO;
n->status = PEER_STATE_DOWN;
while (NULL != (car = n->active_client_request_head))