Fix Session CookieOverflow bug when rescuing an InstikiValidation error.
Fix some random things which will cause problems with Ruby 1.9. (Plenty
more where those came from.)
This commit is contained in:
Jacques Distler 2008-11-05 22:24:14 -06:00
parent dfb0f5f347
commit bceb1864df
5 changed files with 14 additions and 27 deletions

View file

@ -107,7 +107,7 @@ class ApplicationController < ActionController::Base
def remember_location def remember_location
if request.method == :get and if request.method == :get and
response.headers['Status'] == '200 OK' and not response.headers['Status'] == '200 OK' and not \
%w(locked save back file pic import).include?(action_name) %w(locked save back file pic import).include?(action_name)
session[:return_to] = request.request_uri session[:return_to] = request.request_uri
logger.debug "Session ##{session.object_id}: remembered URL '#{session[:return_to]}'" logger.debug "Session ##{session.object_id}: remembered URL '#{session[:return_to]}'"

View file

@ -1,6 +1,5 @@
require 'fileutils' require 'fileutils'
require 'maruku' require 'maruku'
require 'parsedate'
require 'zip/zip' require 'zip/zip'
require 'stringsupport' require 'stringsupport'
require 'resolv' require 'resolv'
@ -241,30 +240,18 @@ class WikiController < ApplicationController
begin begin
the_content = params['content'] the_content = params['content']
filter_spam(the_content) filter_spam(the_content)
raise Instiki::ValidationError.new('Your content was not valid utf-8.') unless the_content.is_utf8?
if @page if @page
if the_content.is_utf8? wiki.revise_page(@web_name, @page_name, the_content, Time.now,
wiki.revise_page(@web_name, @page_name, the_content, Time.now, Author.new(author_name, remote_ip), PageRenderer.new)
Author.new(author_name, remote_ip), PageRenderer.new) @page.unlock
@page.unlock
else
flash[:error] = 'Your content was not valid utf-8.'
@page.unlock
redirect_to :back
return
end
else else
if the_content.is_utf8? wiki.write_page(@web_name, @page_name, the_content, Time.now,
wiki.write_page(@web_name, @page_name, the_content, Time.now, Author.new(author_name, remote_ip), PageRenderer.new)
Author.new(author_name, remote_ip), PageRenderer.new)
else
flash[:error] = 'Your content was not valid utf-8.'
redirect_to :back
return
end
end end
redirect_to_page @page_name redirect_to_page @page_name
rescue => e rescue Instiki::ValidationError => e
flash[:error] = e flash[:error] = e.to_s
logger.error e logger.error e
if @page if @page
@page.unlock @page.unlock
@ -285,7 +272,7 @@ class WikiController < ApplicationController
# the application itself (for application errors, it's better not to rescue the error at all) # the application itself (for application errors, it's better not to rescue the error at all)
rescue => e rescue => e
logger.error e logger.error e
flash[:error] = e flash[:error] = e.to_s
if in_a_web? if in_a_web?
redirect_to :action => 'edit', :web => @web_name, :id => @page_name redirect_to :action => 'edit', :web => @web_name, :id => @page_name
else else

View file

@ -612,7 +612,7 @@ class WikiControllerTest < Test::Unit::TestCase
assert_redirected_to :action => 'edit', :web => 'wiki1', :id => 'HomePage' assert_redirected_to :action => 'edit', :web => 'wiki1', :id => 'HomePage'
# assert(@response.has_key(:error)) # assert(@response.has_key(:error))
assert r.flash[:error].kind_of?(Instiki::ValidationError) # assert r.flash[:error].kind_of?(Instiki::ValidationError)
revisions_after = @home.revisions.size revisions_after = @home.revisions.size
assert_equal revisions_before, revisions_after assert_equal revisions_before, revisions_after

View file

@ -1,7 +1,7 @@
require 'delegate' require 'delegate'
require 'singleton' require 'singleton'
require 'tempfile' require 'tempfile'
require 'ftools' require 'fileutils'
require 'stringio' require 'stringio'
require 'zlib' require 'zlib'
require 'zip/stdrubyext' require 'zip/stdrubyext'

View file

@ -54,8 +54,8 @@ module SQLite3
case mode case mode
when String when String
case mode.downcase case mode.downcase
when "on", "yes", "true", "y", "t": mode = "'ON'" when "on", "yes", "true", "y", "t" then mode = "'ON'"
when "off", "no", "false", "n", "f": mode = "'OFF'" when "off", "no", "false", "n", "f" then mode = "'OFF'"
else else
raise Exception, raise Exception,
"unrecognized pragma parameter #{mode.inspect}" "unrecognized pragma parameter #{mode.inspect}"