Frozen Hash

32 views
Skip to first unread message

Chris Schumann

unread,
Aug 26, 2019, 12:12:03 PM8/26/19
to sinatrarb
I have a Sinatra app, and recently added a Rack gem (that we make) that intercepts an endpoint.
However, when I try to reach that endpoint, Sinatra gives me an error "can't modify frozen Hash" before any of my code appears to run. I'd appreciate any tips on where to start looking.

Here's my stack trace:

  • /bundle/gems/rack-protection-2.0.7/lib/rack/protection/xss_header.rb in call
    1.        headers['X-Content-Type-Options'] ||= 'nosniff'                       if options[:nosniff]
  • /bundle/gems/rack-protection-2.0.7/lib/rack/protection/path_traversal.rb in call
    1.        app.call env
  • /bundle/gems/rack-protection-2.0.7/lib/rack/protection/json_csrf.rb in call
    1.        status, headers, body = app.call(env)
  • /bundle/gems/rack-protection-2.0.7/lib/rack/protection/base.rb in call
    1.        result or app.call(env)
  • /bundle/gems/rack-protection-2.0.7/lib/rack/protection/base.rb in call
    1.        result or app.call(env)
  • /bundle/gems/rack-protection-2.0.7/lib/rack/protection/frame_options.rb in call
    1.        status, headers, body        = @app.call(env)
  • /bundle/gems/rack-2.0.7/lib/rack/null_logger.rb in call
    1.      @app.call(env)
  • /bundle/gems/rack-2.0.7/lib/rack/head.rb in call
    1.      status, headers, body = @app.call(env)
  • /bundle/gems/sinatra-2.0.7/lib/sinatra/show_exceptions.rb in call
    1.      @app.call(env)
  • /bundle/gems/sinatra-2.0.7/lib/sinatra/base.rb in call
    1.      result, callback = app.call(env), env['async.callback']
  • /bundle/gems/sinatra-2.0.7/lib/sinatra/base.rb in call
    1.      @stack.call(env)
  • /bundle/gems/rack-contrib-2.1.0/lib/rack/contrib/post_body_content_type_parser.rb in call
    1.      @app.call(env)
  • /bundle/gems/rack-protection-2.0.7/lib/rack/protection/xss_header.rb in call
    1.        status, headers, body = @app.call(env)
  • /bundle/gems/rack-protection-2.0.7/lib/rack/protection/path_traversal.rb in call
    1.        app.call env
  • /bundle/gems/rack-protection-2.0.7/lib/rack/protection/json_csrf.rb in call
    1.        status, headers, body = app.call(env)
  • /bundle/gems/rack-protection-2.0.7/lib/rack/protection/base.rb in call
    1.        result or app.call(env)
  • /bundle/gems/rack-protection-2.0.7/lib/rack/protection/base.rb in call
    1.        result or app.call(env)
  • /bundle/gems/rack-protection-2.0.7/lib/rack/protection/frame_options.rb in call
    1.        status, headers, body        = @app.call(env)
  • /bundle/gems/rack-2.0.7/lib/rack/logger.rb in call
    1.      @app.call(env)
  • /bundle/gems/rack-2.0.7/lib/rack/common_logger.rb in call
    1.      status, header, body = @app.call(env)
  • /bundle/gems/sinatra-2.0.7/lib/sinatra/base.rb in call
    1.        call_without_check(env)
  • /bundle/gems/sinatra-2.0.7/lib/sinatra/base.rb in call
    1.      env['sinatra.commonlogger'] ? @app.call(env) : super
  • /bundle/gems/rack-2.0.7/lib/rack/head.rb in call
    1.      status, headers, body = @app.call(env)
  • /bundle/gems/rack-2.0.7/lib/rack/method_override.rb in call
    1.      @app.call(env)
  • /bundle/gems/sinatra-2.0.7/lib/sinatra/show_exceptions.rb in call
    1.      @app.call(env)
  • /bundle/gems/sinatra-2.0.7/lib/sinatra/base.rb in call
    1.      result, callback = app.call(env), env['async.callback']
  • /bundle/gems/sinatra-2.0.7/lib/sinatra/base.rb in call
    1.      @stack.call(env)
  • /bundle/gems/sinatra-2.0.7/lib/sinatra/base.rb in block in call
    1.        synchronize { prototype.call(env) }
  • /bundle/gems/sinatra-2.0.7/lib/sinatra/base.rb in synchronize
    1.          yield
  • /bundle/gems/sinatra-2.0.7/lib/sinatra/base.rb in call
    1.        synchronize { prototype.call(env) }
  • /bundle/gems/puma-3.12.1/lib/puma/configuration.rb in call
    1.        @app.call(env)
  • /bundle/gems/puma-3.12.1/lib/puma/server.rb in handle_request
    1.          status, headers, res_body = @app.call(env)
  • /bundle/gems/puma-3.12.1/lib/puma/server.rb in process_client
    1.          case handle_request(client, buffer)
  • /bundle/gems/puma-3.12.1/lib/puma/server.rb in block in run
    1.            process_client client, buffer
  • /bundle/gems/puma-3.12.1/lib/puma/thread_pool.rb in block in spawn_thread
    1.            block.call(work, *extra)

Reply all
Reply to author
Forward
0 new messages