diff options
-rw-r--r-- | source3/smbd/smbXsrv_tcon.c | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/source3/smbd/smbXsrv_tcon.c b/source3/smbd/smbXsrv_tcon.c index 82c880adc0b..00513301893 100644 --- a/source3/smbd/smbXsrv_tcon.c +++ b/source3/smbd/smbXsrv_tcon.c @@ -904,6 +904,25 @@ NTSTATUS smbXsrv_tcon_disconnect(struct smbXsrv_tcon *tcon, uint64_t vuid) table = tcon->table; tcon->table = NULL; + if (tcon->compat) { + bool ok; + + ok = set_current_service(tcon->compat, 0, true); + if (!ok) { + status = NT_STATUS_INTERNAL_ERROR; + DEBUG(0, ("smbXsrv_tcon_disconnect(0x%08x, '%s'): " + "set_current_service() failed: %s\n", + tcon->global->tcon_global_id, + tcon->global->share_name, + nt_errstr(status))); + tcon->compat = NULL; + return status; + } + + close_cnum(tcon->compat, vuid); + tcon->compat = NULL; + } + tcon->status = NT_STATUS_NETWORK_NAME_DELETED; global_rec = tcon->global->db_rec; @@ -966,25 +985,6 @@ NTSTATUS smbXsrv_tcon_disconnect(struct smbXsrv_tcon *tcon, uint64_t vuid) } tcon->db_rec = NULL; - if (tcon->compat) { - bool ok; - - ok = set_current_service(tcon->compat, 0, true); - if (!ok) { - status = NT_STATUS_INTERNAL_ERROR; - DEBUG(0, ("smbXsrv_tcon_disconnect(0x%08x, '%s'): " - "set_current_service() failed: %s\n", - tcon->global->tcon_global_id, - tcon->global->share_name, - nt_errstr(status))); - tcon->compat = NULL; - return status; - } - - close_cnum(tcon->compat, vuid); - tcon->compat = NULL; - } - return error; } |