Ignore:
Timestamp:
Oct 8, 2009, 7:51:22 AM (16 years ago)
Author:
Herwig Bauernfeind
Message:

Update 3.0 to 3.0.37 (unsupported security update)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/samba-3.0/source/smbd/process.c

    r165 r336  
    9494        msg->request_time = request_time;
    9595        msg->end_time = end_time;
     96        msg->processed = false;
    9697
    9798        if (private_data) {
     
    163164
    164165/****************************************************************************
    165  Return true if this mid is on the deferred queue.
     166 Return true if this mid is on the deferred queue and was not yet processed.
    166167****************************************************************************/
    167168
     
    171172
    172173        for (pml = deferred_open_queue; pml; pml = pml->next) {
    173                 if (SVAL(pml->buf.data,smb_mid) == mid) {
     174                if (SVAL(pml->buf.data,smb_mid) == mid && !pml->processed) {
    174175                        return True;
    175176                }
     
    410411                           know this is a retry. */
    411412                        DEBUG(5,("receive_message_or_smb: returning deferred open smb message.\n"));
     413
     414                        /* Mark the message as processed so this is not
     415                         * re-processed in error. */
     416                        msg->processed = true;
    412417                        return True;
    413418                }
     
    968973
    969974                        if (!change_to_user(conn,session_tag)) {
    970                                 remove_deferred_open_smb_message(
    971                                         SVAL(inbuf, smb_mid));
    972975                                return(ERROR_NT(NT_STATUS_DOS(ERRSRV,ERRbaduid)));
    973976                        }
     
    10181021static int construct_reply(char *inbuf,char *outbuf,int size,int bufsize)
    10191022{
     1023        struct pending_message_list *pml = NULL;
    10201024        int type = CVAL(inbuf,smb_com);
    10211025        int outsize = 0;
    10221026        int msg_type = CVAL(inbuf,0);
     1027        uint16_t mid = SVAL(inbuf, smb_mid);
    10231028
    10241029        chain_size = 0;
     
    10321037
    10331038        outsize = switch_message(type,inbuf,outbuf,size,bufsize);
     1039
     1040        /* If this was a deferred message and it's still there and
     1041         * was processed, remove it. */
     1042        pml = get_open_deferred_message(mid);
     1043        if (pml && pml->processed) {
     1044                remove_deferred_open_smb_message(mid);
     1045        }
    10341046
    10351047        outsize += chain_size;
Note: See TracChangeset for help on using the changeset viewer.