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