From: bdemsky <bdemsky>
Date: Tue, 22 Sep 2009 19:15:11 +0000 (+0000)
Subject: bug fix
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=09700dd8510a62b141e53df26b5b1c88f01dd1db;p=IRC.git

bug fix
---

diff --git a/Robust/src/Runtime/DSTM/interface/dstmserver.c b/Robust/src/Runtime/DSTM/interface/dstmserver.c
index edfbb4e8..0cb3490d 100644
--- a/Robust/src/Runtime/DSTM/interface/dstmserver.c
+++ b/Robust/src/Runtime/DSTM/interface/dstmserver.c
@@ -747,7 +747,6 @@ int prefetchReq(int acceptfd, struct readstruct * readbuffer) {
   objheader_t *header;
   oidmidpair_t oidmid;
   int sd = -1;
-
   while(1) {
     recv_data_buf((int)acceptfd, readbuffer, &numoffset, sizeof(int));
     if(numoffset == -1)
@@ -840,7 +839,6 @@ int prefetchReq(int acceptfd, struct readstruct * readbuffer) {
     //Release socket
   if (mid!=-1)
     freeSockWithLock(transPResponseSocketPool, mid, sd);
-
   return 0;
 }
 
diff --git a/Robust/src/Runtime/DSTM/interface/queue.c b/Robust/src/Runtime/DSTM/interface/queue.c
index 8ebff808..41e44033 100644
--- a/Robust/src/Runtime/DSTM/interface/queue.c
+++ b/Robust/src/Runtime/DSTM/interface/queue.c
@@ -8,12 +8,16 @@ pthread_cond_t qcond;
 
 #define QSIZE 2048 //2 KB
 
+#ifdef LOGEVENTS
 extern char bigarray[16*1024*1024];
 extern int bigindex;
 #define LOGEVENT(x) { \
     int tmp=bigindex++;				\
     bigarray[tmp]=x;				\
   }
+#else
+#define LOGEVENT(x)
+#endif
 
 void queueInit(void) {
   /* Intitialize primary queue */
diff --git a/Robust/src/Runtime/DSTM/interface/trans.c b/Robust/src/Runtime/DSTM/interface/trans.c
index 36465abb..2db0e84c 100644
--- a/Robust/src/Runtime/DSTM/interface/trans.c
+++ b/Robust/src/Runtime/DSTM/interface/trans.c
@@ -79,13 +79,16 @@ void printhex(unsigned char *, int);
 plistnode_t *createPiles();
 plistnode_t *sortPiles(plistnode_t *pileptr);
 
+#ifdef LOGEVENTS
 char bigarray[16*1024*1024];
 int bigindex=0;
 #define LOGEVENT(x) { \
     int tmp=bigindex++;				\
     bigarray[tmp]=x;				\
   }
-
+#else
+#define LOGEVENT(x)
+#endif
 
 /*******************************
 * Send and Recv function calls
@@ -106,9 +109,43 @@ void send_data(int fd, void *buf, int buflen) {
   }
 }
 
+void recv_dataz(int fd, void *buf, int buflen) {
+  char *buffer = (char *)(buf);
+  int size = buflen;
+  int numbytes;
+  while (size > 0) {
+    numbytes = recv(fd, buffer, size, 0);
+    bytesRecv = bytesRecv + numbytes;
+    if (numbytes == -1) {
+      perror("recv");
+      exit(0);
+    }
+    buffer += numbytes;
+    size -= numbytes;
+  }
+}
+
+int recv_data_errorcodez(int fd, void *buf, int buflen) {
+  char *buffer = (char *)(buf);
+  int size = buflen;
+  int numbytes;
+  while (size > 0) {
+    numbytes = recv(fd, buffer, size, 0);
+    if (numbytes==0)
+      return 0;
+    if (numbytes == -1) {
+      perror("recv");
+      return -1;
+    }
+    buffer += numbytes;
+    size -= numbytes;
+  }
+  return 1;
+}
+
+
 void recv_data_buf(int fd, struct readstruct * readbuffer, void *buffer, int buflen) {
   char *buf=(char *)buffer;
-
   int numbytes=readbuffer->head-readbuffer->tail;
   if (numbytes>buflen)
     numbytes=buflen;
@@ -117,13 +154,12 @@ void recv_data_buf(int fd, struct readstruct * readbuffer, void *buffer, int buf
     readbuffer->tail+=numbytes;
     buflen-=numbytes;
     buf+=numbytes;
-    if (buflen==0) {
-      return;
-    }
   }
-
+  if (buflen==0) {
+    return;
+  }
   if (buflen>=MAXBUF) {
-    recv_data(fd, buf, buflen);
+    recv_dataz(fd, buf, buflen);
     return;
   }
   
@@ -156,12 +192,12 @@ int recv_data_errorcode_buf(int fd, struct readstruct * readbuffer, void *buffer
     readbuffer->tail+=numbytes;
     buflen-=numbytes;
     buf+=numbytes;
-    if (buflen==0)
-      return 1;
   }
+  if (buflen==0)
+    return 1;
 
   if (buflen>=MAXBUF) {
-    return recv_data_errorcode(fd, buf, buflen);
+    return recv_data_errorcodez(fd, buf, buflen);
   }
 
   int maxbuf=MAXBUF;
@@ -784,7 +820,7 @@ int transCommit() {
   trans_commit_data_t transinfo; /* keeps track of objs locked during transaction */
   char finalResponse;
 
-#ifdef TRANSSTATS
+#ifdef LOGEVENTS
   int iii;
   for(iii=0;iii<bigindex;iii++) {
     printf("%c", bigarray[iii]);