# File lib/client.rb, line 557
  def put_object(container, obj, contents, content_length=nil, etag=nil, chunk_size=65536, content_type=nil, headers={})
    
    _default_reset = Proc.new do |args|
      raise ClientException("put_object(#{container}, #{obj}, ...) failure and no ability to reset contents for reupload.")
    end
    reset_func = _default_reset
    if (contents.respond_to? :seek) and (contents.respond_to? :tell)
      orig_pos = contents.tell
      reset_func = Proc.new {|a| contents.seek(orig_pos)}
    elsif !contents
      reset_func = Proc.new {|a| nil }
    end
    _retry(reset_func, :put_object, [container, obj, contents, content_length, etag, chunk_size, content_type, headers])
  end