Sha256: f0e1db67dde90a80dfdc195f463c8490bedbf2132f536154d32fba38b83cfad8

Contents?: true

Size: 1.53 KB

Versions: 28

Compression:

Stored size: 1.53 KB

Contents

require 'ruby_smb/server/share/provider/processor'

module RubySMB
  class Server
    module Share
      module Provider
        class Disk < Base
          class Processor < Provider::Processor::Base
            module Close
              def do_close_smb1(request)
                # see: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-cifs/99b767e2-8f0e-438b-ace5-4323940f2dc8
                handle = @handles.delete(request.parameter_block.fid)
                if handle.nil?
                  response = RubySMB::SMB1::Packet::EmptyPacket.new
                  response.smb_header.nt_status = WindowsError::NTStatus::STATUS_INVALID_HANDLE
                  return response
                end

                handle.file.close if handle.file

                response = RubySMB::SMB1::Packet::CloseResponse.new
                response
              end

              def do_close_smb2(request)
                handle = @handles.delete(request.file_id.to_binary_s)
                if handle.nil?
                  response = RubySMB::SMB2::Packet::ErrorPacket.new
                  response.smb2_header.nt_status = WindowsError::NTStatus::STATUS_FILE_CLOSED
                  return response
                end

                handle.file.close if handle.file

                response = RubySMB::SMB2::Packet::CloseResponse.new
                set_common_info(response, handle.local_path)
                response.flags = 1
                response
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
ruby_smb-3.3.13 lib/ruby_smb/server/share/provider/disk/processor/close.rb
ruby_smb-3.3.12 lib/ruby_smb/server/share/provider/disk/processor/close.rb
ruby_smb-3.3.11 lib/ruby_smb/server/share/provider/disk/processor/close.rb
ruby_smb-3.3.10 lib/ruby_smb/server/share/provider/disk/processor/close.rb
ruby_smb-3.3.9 lib/ruby_smb/server/share/provider/disk/processor/close.rb
ruby_smb-3.3.7 lib/ruby_smb/server/share/provider/disk/processor/close.rb
ruby_smb-3.3.6 lib/ruby_smb/server/share/provider/disk/processor/close.rb
ruby_smb-3.3.5 lib/ruby_smb/server/share/provider/disk/processor/close.rb
ruby_smb-3.3.4 lib/ruby_smb/server/share/provider/disk/processor/close.rb
ruby_smb-3.3.3 lib/ruby_smb/server/share/provider/disk/processor/close.rb
ruby_smb-3.3.2 lib/ruby_smb/server/share/provider/disk/processor/close.rb
ruby_smb-3.3.1 lib/ruby_smb/server/share/provider/disk/processor/close.rb
ruby_smb-3.3.0 lib/ruby_smb/server/share/provider/disk/processor/close.rb
ruby_smb-3.2.8 lib/ruby_smb/server/share/provider/disk/processor/close.rb
ruby_smb-3.2.7 lib/ruby_smb/server/share/provider/disk/processor/close.rb
ruby_smb-3.2.6 lib/ruby_smb/server/share/provider/disk/processor/close.rb
ruby_smb-3.2.5 lib/ruby_smb/server/share/provider/disk/processor/close.rb
ruby_smb-3.2.4 lib/ruby_smb/server/share/provider/disk/processor/close.rb
ruby_smb-3.2.3 lib/ruby_smb/server/share/provider/disk/processor/close.rb
ruby_smb-3.2.2 lib/ruby_smb/server/share/provider/disk/processor/close.rb