uint32_t flags;
uint32_t last_hdr_offset;
- talloc_steal(req, p_req);
-
last_hdr_offset = p_req->in.hdr - p_req->in.buffer;
chain_offset = p_req->chain_offset;
return;
}
+ talloc_steal(req, p_req);
+
req->in.buffer = talloc_steal(req, p_req->in.buffer);
req->in.size = p_req->in.size;
req->request_time = p_req->request_time;
uint16_t opcode = SVAL(req->in.hdr, SMB2_HDR_OPCODE);
if (opcode == SMB2_OP_NEGPROT) {
smbsrv_terminate_connection(smb_conn, "Bad body size in SMB2 negprot");
+ return;
} else {
smb2srv_send_error(req, NT_STATUS_INVALID_PARAMETER);
+ return;
}
}
status = packet_send(req->smb_conn->packet, blob);
if (!NT_STATUS_IS_OK(status)) {
smbsrv_terminate_connection(req->smb_conn, nt_errstr(status));
+ return;
}
if (req->chain_offset) {
smb2srv_chain_reply(req);
case SMB2_OP_KEEPALIVE:
smb2srv_keepalive_recv(req);
return NT_STATUS_OK;
- case SMB2_OP_FIND:
+ case SMB2_OP_QUERY_DIRECTORY:
if (!req->session) goto nosession;
if (!req->tcon) goto notcon;
smb2srv_find_recv(req);
return NT_STATUS_INSUFFICIENT_RESOURCES;
}
- DLIST_ADD_END(req->smb_conn->requests2.list, req, struct smb2srv_request *);
+ DLIST_ADD_END(req->smb_conn->requests2.list, req);
req->pending_id = id;
talloc_set_destructor(req, smb2srv_request_deny_destructor);