From: Stefan Metzmacher Date: Fri, 1 May 2015 18:02:38 +0000 (+0200) Subject: s3:smbd: use STATUS_NOTIFY_CLEANUP on smb2 logoff (explicit and implicit) and tdis X-Git-Tag: samba-4.1.19~35 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6caba46304e9e04b3186efd4ecc8efcb08892391;p=thirdparty%2Fsamba.git s3:smbd: use STATUS_NOTIFY_CLEANUP on smb2 logoff (explicit and implicit) and tdis Bug: https://bugzilla.samba.org/show_bug.cgi?id=11182 Signed-off-by: Stefan Metzmacher Reviewed-by: Jeremy Allison (cherry picked from commit 5169e9b20c69092d04b596f48ca0e69a46af438f) --- diff --git a/source3/smbd/notify.c b/source3/smbd/notify.c index cb9f8738943..c90561c96fc 100644 --- a/source3/smbd/notify.c +++ b/source3/smbd/notify.c @@ -354,8 +354,22 @@ static void smbd_notify_cancel_by_map(struct notify_mid_map *map) { struct smb_request *smbreq = map->req->req; struct smbd_server_connection *sconn = smbreq->sconn; + struct smbd_smb2_request *smb2req = smbreq->smb2req; NTSTATUS notify_status = NT_STATUS_CANCELLED; + if (smb2req != NULL) { + if (smb2req->session == NULL) { + notify_status = STATUS_NOTIFY_CLEANUP; + } else if (!NT_STATUS_IS_OK(smb2req->session->status)) { + notify_status = STATUS_NOTIFY_CLEANUP; + } + if (smb2req->tcon == NULL) { + notify_status = STATUS_NOTIFY_CLEANUP; + } else if (!NT_STATUS_IS_OK(smb2req->tcon->status)) { + notify_status = STATUS_NOTIFY_CLEANUP; + } + } + change_notify_reply(smbreq, notify_status, 0, NULL, map->req->reply_fn); change_notify_remove_request(sconn, map->req);