[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r15361 - gnunet/src/transport
From: |
gnunet |
Subject: |
[GNUnet-SVN] r15361 - gnunet/src/transport |
Date: |
Tue, 31 May 2011 01:16:24 +0200 |
Author: brodski
Date: 2011-05-31 01:16:24 +0200 (Tue, 31 May 2011)
New Revision: 15361
Modified:
gnunet/src/transport/gnunet-transport-wlan-helper.c
gnunet/src/transport/plugin_transport_wlan.c
Log:
Small fixes and detection (backlog) of double received messages
Modified: gnunet/src/transport/gnunet-transport-wlan-helper.c
===================================================================
--- gnunet/src/transport/gnunet-transport-wlan-helper.c 2011-05-30 23:15:25 UTC
(rev 15360)
+++ gnunet/src/transport/gnunet-transport-wlan-helper.c 2011-05-30 23:16:24 UTC
(rev 15361)
@@ -856,8 +856,8 @@
if (0 > ret)
{
fprintf (stderr,
- "Failed to write to WLAN device: %s\n",
- strerror (errno));
+ "Line %u: Failed to write to WLAN device: %s,
Message-Size: %u\n",__LINE__,
+ strerror (errno), dev.write_pout.size);
break;
}
dev.write_pout.pos += ret;
@@ -865,7 +865,7 @@
(ret != 0) )
{
fprintf(stderr,
- "Write error, partial send: %u/%u\n",
+ "Line %u: Write error, partial send: %u/%u\n",__LINE__,
dev.write_pout.pos, dev.write_pout.size);
break;
}
@@ -938,7 +938,7 @@
if (2 != argc)
{
fprintf (stderr,
- "This program must be started with the interface as
argument.\n");
+ "This program must be started with the interface as
argument.\nThis program was compiled at ----- %s ----\n", __TIMESTAMP__ );
fprintf (stderr,
"Usage: interface-name\n"
"\n");
Modified: gnunet/src/transport/plugin_transport_wlan.c
===================================================================
--- gnunet/src/transport/plugin_transport_wlan.c 2011-05-30 23:15:25 UTC
(rev 15360)
+++ gnunet/src/transport/plugin_transport_wlan.c 2011-05-30 23:16:24 UTC
(rev 15361)
@@ -44,21 +44,38 @@
/**
* Max size of packet from helper
*/
-#define WLAN_MTU 2100
+#define WLAN_MTU 1450
/**
* Time until retransmission of a fragment in ms
*/
#define FRAGMENT_TIMEOUT GNUNET_TIME_UNIT_SECONDS
+/**
+ * max size of fragment queue
+ */
#define FRAGMENT_QUEUE_SIZE 10
+/**
+ * max messages in fragment queue per session/client
+ */
#define FRAGMENT_QUEUE_MESSAGES_OUT_PER_SESSION 1
+/**
+ * time until message in in queue
+ */
#define MESSAGE_IN_TIMEOUT GNUNET_TIME_UNIT_SECONDS
+/**
+ * max messages in in queue
+ */
#define MESSAGES_IN_QUEUE_SIZE 10
+/**
+ * max messages in in queue per session/client
+ */
#define MESSAGES_IN_QUEUE_PER_SESSION 1
-
+/**
+ * scaling factor for hello beacon
+ */
#define HALLO_BEACON_SCALING_FACTOR 900
#define DEBUG_wlan GNUNET_NO
@@ -67,8 +84,11 @@
#define MESSAGE_LENGHT_UNKNOWN -1
//#define NO_MESSAGE_OR_MESSAGE_FINISHED -2
-
/**
+ * size of log for recently used incomming messages id
+ */
+#define MESSAGE_ID_BACKLOG_SIZE 5
+/**
* After how long do we expire an address that we
* learned from another peer if it is not reconfirmed
* by anyone?
@@ -294,7 +314,6 @@
* queue to send acks for received fragments (tail)
*/
struct AckSendQueue * ack_send_queue_tail;
-
};
/**
@@ -549,6 +568,15 @@
uint16_t tx_power;
uint8_t antenna;
+
+ /**
+ * backlog for incoming message ids
+ */
+ uint32_t message_id_backlog[MESSAGE_ID_BACKLOG_SIZE];
+ /**
+ * position in the backlog
+ */
+ int message_id_backlog_pos;
};
/**
@@ -813,6 +841,7 @@
queue->content->addr = *addr;
queue->content->fragment_messages_out_count = 0;
queue->content->fragment_messages_in_count = 0;
+ queue->content->message_id_backlog_pos = 0;
plugin->session_count++;
@@ -2246,7 +2275,7 @@
struct Session_light * session_light = (struct Session_light *) client;
struct WlanHeader * wlanheader;
struct Session * session;
- const char * tempmsg;
+ //const char * tempmsg;
const struct GNUNET_MessageHeader * temp_hdr;
struct GNUNET_PeerIdentity tmptarget;
int crc;
@@ -2276,7 +2305,7 @@
session = session_light->session;
wlanheader = (struct WlanHeader *) hdr;
- tempmsg = (char*) &wlanheader[1];
+ //tempmsg = (char*) &wlanheader[1];
temp_hdr = (const struct GNUNET_MessageHeader *) &wlanheader[1];
crc = ntohl(wlanheader->crc);
wlanheader->crc = 0;
@@ -2450,6 +2479,8 @@
}
rx_frag = rx_frag->next;
}
+ session->message_id_backlog[session->message_id_backlog_pos] =
rx_message->message_id_in;
+ session->message_id_backlog_pos = (session->message_id_backlog_pos +
1) % MESSAGE_ID_BACKLOG_SIZE;
free_receive_message(plugin, rx_message);
//call wlan_process_helper to process the message
//wlan_data_message_handler(plugin, session_light,
@@ -2560,11 +2591,21 @@
struct Receive_Message_Queue * rx_message;
const char * tempmsg = (char*) &fh[1];
uint64_t retval = 0;
+ int i;
//TODO fragments do not timeout
//check if message_id is right or it is a new msg
GNUNET_assert(fh != NULL);
+ //check for receive of old messages
+ for (i = 0; i< MESSAGE_ID_BACKLOG_SIZE; i++)
+ {
+ if (session->message_id_backlog[i] == ntohl(fh->message_id) ){
+ setBit((char *) &retval, ntohs(fh->fragment_off_or_num));
+ return retval;
+ }
+ }
+
rx_message = get_receive_message(plugin, session, ntohl(fh->message_id));
if (rx_message == NULL)
@@ -2804,9 +2845,9 @@
}
else
{
- GNUNET_log(GNUNET_ERROR_TYPE_WARNING,
- "WLAN fragment not in fragment list with id %u of ack\n", ntohl(
- fah->message_id));
+ //GNUNET_log(GNUNET_ERROR_TYPE_WARNING,
+ // "WLAN fragment not in fragment list with id %u of ack\n",
ntohl(
+ // fah->message_id));
return;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r15361 - gnunet/src/transport,
gnunet <=