Method: Rex::IO::Stream#put

Defined in:
lib/rex/io/stream.rb

#put(buf, opts = {}) ⇒ Object

This method writes the full contents of the supplied buffer, optionally with a timeout.



170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
# File 'lib/rex/io/stream.rb', line 170

def put(buf, opts = {})
  return 0 if (buf == nil or buf.length == 0)

  send_len = buf.length
  send_idx = 0
  wait     = opts['Timeout'] || 0

  # Keep writing until our send length drops to zero
  while (send_idx < send_len)
    curr_len  = timed_write(buf[send_idx, buf.length-send_idx], wait, opts)

    # If the write operation failed due to an IOError, then we fail.
    return buf.length - send_len if (curr_len == nil)

    send_len -= curr_len
    send_idx += curr_len
  end

  return buf.length - send_len
end