... | ... |
@@ -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 |
} |