Masanobu Yasui authored on 2014/12/10 20:54:10
Showing 2 changed files
... ...
@@ -322,10 +322,10 @@ static void mrecv_ack_del(mdata *data, struct sockaddr_in *addr)
322 322
           lprintf(1, "%s: (dryrun) delete %s\n", __func__, path);
323 323
         }else{
324 324
           if(!mremove(NULL,path)){
325
-            lprintf(1, "%s: delete %s\n", __func__, path);
325
+            lprintf(1, "%s: delete %s rid=%d\n", __func__, path, m->mdata.head.reqid);
326 326
           }else{
327 327
             err = errno;
328
-            lprintf(0, "%s: delete error %s (%s)\n", __func__, path, strerror(errno));
328
+            lprintf(0, "%s: delete error %s (%s) rid=%d\n", __func__, path, strerror(errno), m->mdata.head.reqid);
329 329
           }
330 330
         }
331 331
         data_safeset16(&(m->mdata), len + sizeof(uint32_t));
... ...
@@ -1295,6 +1295,7 @@ static void mrecv_req_del_data(mdata *data, struct sockaddr_in *addr)
1295 1295
   if(!m){
1296 1296
     return;
1297 1297
   }
1298
+  mtimeget(&(m->lastrecv));
1298 1299
   if(m->mdata.head.nstate != MAKUO_RECVSTATE_OPEN){
1299 1300
     return;
1300 1301
   }
... ...
@@ -1087,20 +1087,20 @@ static void msend_req_del_stat(int s, mfile *m)
1087 1087
 {
1088 1088
   if(m->pipe != -1){
1089 1089
     msend_req_del_stat_read(s, m);
1090
+    return;
1091
+  }
1092
+  if(msend_req_del_stat_waitcheck(s, m)){
1093
+    m->sendwait = 1;
1094
+    return;
1095
+  }
1096
+  if(m->link){
1097
+    msend(mkack(&(m->link->mdata), &(m->link->addr), MAKUO_RECVSTATE_CLOSE)); /* send ack for dsync */
1098
+  }
1099
+  if(waitpid(m->pid, NULL, WNOHANG) != m->pid){
1100
+    m->sendwait = 1;
1090 1101
   }else{
1091
-    if(msend_req_del_stat_waitcheck(s, m)){
1092
-      m->sendwait = 1;
1093
-    }else{
1094
-      if(m->link){
1095
-        msend(mkack(&(m->link->mdata), &(m->link->addr), MAKUO_RECVSTATE_CLOSE));
1096
-      }
1097
-      if(waitpid(m->pid, NULL, WNOHANG) != m->pid){
1098
-        m->sendwait = 1;
1099
-      }else{
1100
-        m->pid = 0;
1101
-        msend_mfdel(m);
1102
-      }
1103
-    }
1102
+    m->pid = 0;
1103
+    msend_mfdel(m);
1104 1104
   }
1105 1105
 }
1106 1106
 
... ...
@@ -1110,6 +1110,7 @@ static void msend_req_del_break(int s, mfile *m)
1110 1110
   for(d=mftop[MFSEND];d;d=d->next){
1111 1111
     if(d->link == m){
1112 1112
       if(d->mdata.head.nstate == MAKUO_SENDSTATE_WAIT){
1113
+        d->link = NULL;
1113 1114
         msend_mfdel(d);
1114 1115
         break;
1115 1116
       }