[Sumover-dev] [svn commit] r3801 - common/trunk/src

sumover-dev at cs.ucl.ac.uk sumover-dev at cs.ucl.ac.uk
Thu Aug 31 11:44:16 BST 2006


Author: piers
Date: Thu Aug 31 11:43:54 2006
New Revision: 3801

Modified:
   common/trunk/src/mbus.c

Log:
Fixed MBUS seqnum size - introduced wrapping at 999999 - since a number of pieces of code
assume that the seqnum is never longer than 6 digits. This was a problem when the mbus was
used for long periods of time - leading to memroy errors.


Modified: common/trunk/src/mbus.c
==============================================================================
--- common/trunk/src/mbus.c	(original)
+++ common/trunk/src/mbus.c	Thu Aug 31 11:43:54 2006
@@ -428,7 +428,8 @@
 
 	gettimeofday(&curr_time, NULL);
 	if (curr_time.tv_sec - m->last_heartbeat.tv_sec >= interval) {
-	    mb_header(++m->seqnum, curr_time, 'U', m->addr, "()", -1);
+            m->seqnum=(++m->seqnum)%999999;
+	    mb_header(m->seqnum, curr_time, 'U', m->addr, "()", -1);
 		mb_add_command("mbus.hello", "");
 		mb_send(m);
 
@@ -696,7 +697,8 @@
 	curr->dest             = xstrdup(dest);
 	curr->retransmit_count = 0;
 	curr->message_size     = alen + 60 + strlen(dest) + strlen(m->addr);
-	curr->seqnum           = ++m->seqnum;
+        m->seqnum	       = (++m->seqnum)%999999;
+	curr->seqnum           = m->seqnum;
 	curr->reliable         = reliable;
 	curr->complete         = FALSE;
 	curr->num_cmds         = 1;
@@ -906,7 +908,8 @@
 				sprintf(newseq, "(%6d)", seq);	/* size allocated in mb_header */
 
 				gettimeofday(&t, NULL);
-				mb_header(++m->seqnum, t, 'U', m->addr, newsrc, seq);
+                                m->seqnum=(++m->seqnum)%999999;
+				mb_header(m->seqnum, t, 'U', m->addr, newsrc, seq);
 				mb_send(m);
 
 				/* Record sequence number of last reliable message from each source.



More information about the Sumover-dev mailing list