GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 2, or (at your
+ by the Free Software Foundation; either version 3, or (at your
option) any later version.
GNUnet is distributed in the hope that it will be useful, but
#include "gnunet_fragmentation_lib.h"
#include "gnunet_protocols.h"
#include "gnunet_util_lib.h"
+
/**
* Message fragment. This header is followed
* by the actual data of the fragment.
*/
+
struct Fragment
{
char * buff;
int counter;
struct GNUNET_TIME_Absolute receivedTime;
- struct GNUNET_PeerIdentity *peerID;
+ struct GNUNET_PeerIdentity peerID;
int * num;
};
GNUNET_FRAGMENT_context_destroy (struct GNUNET_FRAGMENT_Context *ctx)
{
struct GNUNET_FRAGEMENT_Ctxbuffer *buffer;
- for(buffer = ctx->buffer; buffer!=NULL; buffer = buffer->next){
- GNUNET_free(buffer->num);
- GNUNET_free(buffer);
- }
+ struct GNUNET_FRAGEMENT_Ctxbuffer *temp;
+ buffer = ctx->buffer;
+
+ while (buffer != NULL)
+ {
+ temp = buffer->next;
+ GNUNET_free(buffer->num);
+ GNUNET_free(buffer);
+ buffer = temp;
+ }
GNUNET_free(ctx);
GNUNET_assert (0);
}
buffer = ctx->buffer;
while (buffer != NULL)
{
- if(buffer->id == ntohl(frag->id)&&(buffer->peerID==sender)){
+ if ((buffer->id == ntohl(frag->id))&&(0 == memcmp (&buffer->peerID,
+ sender, sizeof (struct GNUNET_PeerIdentity)))){
exist = 1;
break;
}
}
if(!exist){
- buffer = (struct GNUNET_FRAGEMENT_Ctxbuffer*)GNUNET_malloc(sizeof(struct GNUNET_FRAGEMENT_Ctxbuffer));
- buffer->num = (int*)GNUNET_malloc(ntohs(frag->totalNum)*sizeof(int));
+ buffer = GNUNET_malloc(sizeof(struct GNUNET_FRAGEMENT_Ctxbuffer));
+ buffer->num = GNUNET_malloc(ntohs(frag->totalNum)*sizeof(int));
int j;
for(j = 0; j<ntohs(frag->totalNum); j++){
buffer->num[j] = -10;
}
- buffer->peerID = sender;
+ buffer->peerID = *sender;
buffer->id = ntohl(frag->id);
buffer->receivedTime = GNUNET_TIME_absolute_get ();
uint16_t si = ntohs(frag->totalSize);
buffer->size = si;
- buffer->buff = (char*)GNUNET_malloc(si);
+ buffer->buff = GNUNET_malloc(si);
buffer->next = ctx->buffer;
ctx->buffer = buffer;
}
/**
* Hashtable *with* collision management!
*/
-static FC *defragmentationCache[DEFRAG_BUCKET_COUNT];
+static struct FC *defragmentationCache[DEFRAG_BUCKET_COUNT];
/**
* Lock for the defragmentation cache.