const int dialect_count,
uint16_t *dialect)
{
- struct {
+ static const struct {
enum protocol_types proto;
uint16_t dialect;
} pd[] = {
*posix = false;
+ if (!lp_smb3_unix_extensions(GLOBAL_SECTION_SNUM)) {
+ return NT_STATUS_OK;
+ }
+
in_posix = smb2_negotiate_context_find(in_c,
SMB2_POSIX_EXTENSIONS_AVAILABLE);
if (in_posix == NULL) {
SIVAL(outbody.data, 0x3C,
out_negotiate_context_offset); /* reserved/NegotiateContextOffset */
- req->sconn->using_smb2 = true;
-
if (dialect == SMB2_DIALECT_REVISION_2FF) {
return smbd_smb2_request_done(req, outbody, &outdyn);
}
if (NT_STATUS_EQUAL(status, NT_STATUS_MESSAGE_RETRIEVED)) {
/*
* The connection was passed to another process
+ *
+ * We mark the error as NT_STATUS_CONNECTION_IN_USE,
+ * in order to indicate to low level code if
+ * ctdbd_unregister_ips() or ctdbd_passed_ips()
+ * is more useful.
*/
+ smbXsrv_connection_disconnect_transport(xconn,
+ NT_STATUS_CONNECTION_IN_USE);
smbd_server_connection_terminate(xconn,
"passed connection");
/*