Changeset 340 for branches/samba-3.2.x/source/smbd/process.c
- Timestamp:
- Oct 8, 2009, 8:16:40 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/samba-3.2.x/source/smbd/process.c
r233 r340 435 435 msg->end_time = end_time; 436 436 msg->encrypted = req->encrypted; 437 msg->processed = false; 437 438 438 439 if (private_data) { … … 490 491 (unsigned int)msg_mid )); 491 492 if (mid == msg_mid) { 493 494 if (pml->processed) { 495 /* A processed message should not be 496 * rescheduled. */ 497 DEBUG(0,("schedule_deferred_open_smb_message: LOGIC ERROR " 498 "message mid %u was already processed\n", 499 (unsigned int)msg_mid )); 500 continue; 501 } 502 492 503 DEBUG(10,("schedule_deferred_open_smb_message: scheduling mid %u\n", 493 504 mid )); … … 504 515 505 516 /**************************************************************************** 506 Return true if this mid is on the deferred queue .517 Return true if this mid is on the deferred queue and was not yet processed. 507 518 ****************************************************************************/ 508 519 … … 512 523 513 524 for (pml = deferred_open_queue; pml; pml = pml->next) { 514 if (SVAL(pml->buf.data,smb_mid) == mid ) {525 if (SVAL(pml->buf.data,smb_mid) == mid && !pml->processed) { 515 526 return True; 516 527 } … … 779 790 know this is a retry. */ 780 791 DEBUG(5,("receive_message_or_smb: returning deferred open smb message.\n")); 792 793 /* Mark the message as processed so this is not 794 * re-processed in error. */ 795 msg->processed = true; 781 796 return NT_STATUS_OK; 782 797 } … … 1406 1421 if (!change_to_user(conn,session_tag)) { 1407 1422 reply_nterror(req, NT_STATUS_DOS(ERRSRV, ERRbaduid)); 1408 remove_deferred_open_smb_message(req->mid);1409 1423 return conn; 1410 1424 } … … 1471 1485 static void construct_reply(char *inbuf, int size, size_t unread_bytes, bool encrypted) 1472 1486 { 1487 struct pending_message_list *pml = NULL; 1473 1488 uint8 type = CVAL(inbuf,smb_com); 1474 1489 connection_struct *conn; … … 1485 1500 1486 1501 conn = switch_message(type, req, size); 1502 1503 /* If this was a deferred message and it's still there and 1504 * was processed, remove it. */ 1505 pml = get_open_deferred_message(req->mid); 1506 if (pml && pml->processed) { 1507 remove_deferred_open_smb_message(req->mid); 1508 } 1487 1509 1488 1510 if (req->unread_bytes) {
Note:
See TracChangeset
for help on using the changeset viewer.