diff options
author | Matthew Draper <matthew@trebex.net> | 2016-01-25 03:53:27 +1030 |
---|---|---|
committer | Matthew Draper <matthew@trebex.net> | 2016-01-30 03:46:37 +1030 |
commit | 16a6603956551703e3bbd06101c568a73bcdaa52 (patch) | |
tree | e11ead941c881d3a58956ee5f80e91e1702ac89c /actioncable/lib/action_cable/subscription_adapter/inline.rb | |
parent | a928aa3d3f1e6f8780acc22d69f4d5d1f5917926 (diff) | |
download | rails-16a6603956551703e3bbd06101c568a73bcdaa52.tar.gz rails-16a6603956551703e3bbd06101c568a73bcdaa52.tar.bz2 rails-16a6603956551703e3bbd06101c568a73bcdaa52.zip |
Synchronize the lazy setters in Server
They're all at risk of races on the first requests.
Diffstat (limited to 'actioncable/lib/action_cable/subscription_adapter/inline.rb')
-rw-r--r-- | actioncable/lib/action_cable/subscription_adapter/inline.rb | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/actioncable/lib/action_cable/subscription_adapter/inline.rb b/actioncable/lib/action_cable/subscription_adapter/inline.rb index 4a2a8d23a2..81357faead 100644 --- a/actioncable/lib/action_cable/subscription_adapter/inline.rb +++ b/actioncable/lib/action_cable/subscription_adapter/inline.rb @@ -1,6 +1,11 @@ module ActionCable module SubscriptionAdapter class Inline < Base # :nodoc: + def initialize(*) + super + @subscriber_map = nil + end + def broadcast(channel, payload) subscriber_map.broadcast(channel, payload) end @@ -19,7 +24,11 @@ module ActionCable private def subscriber_map - @subscriber_map ||= SubscriberMap.new + @subscriber_map || @server.mutex.synchronize { @subscriber_map ||= new_subscriber_map } + end + + def new_subscriber_map + SubscriberMap.new end end end |