diff --git a/app/controllers/rooms_controller.rb b/app/controllers/rooms_controller.rb
index 857819ec..737cc28c 100644
--- a/app/controllers/rooms_controller.rb
+++ b/app/controllers/rooms_controller.rb
@@ -94,7 +94,11 @@ class RoomsController < ApplicationController
opts = default_meeting_options
opts[:user_is_moderator] = true
- redirect_to @room.join_path(current_user.name, opts, current_user.uid)
+ begin
+ redirect_to @room.join_path(current_user.name, opts, current_user.uid)
+ rescue BigBlueButton::BigBlueButtonException => exc
+ redirect_to room_path, notice: I18n.t(exc.key.to_s.underscore, default: I18n.t("bigbluebutton_exception"))
+ end
# Notify users that the room has started.
# Delay 5 seconds to allow for server start, although the request will retry until it succeeds.
diff --git a/app/models/room.rb b/app/models/room.rb
index 867886c2..24e737b8 100644
--- a/app/models/room.rb
+++ b/app/models/room.rb
@@ -63,6 +63,7 @@ class Room < ApplicationRecord
bbb.create_meeting(name, bbb_id, create_options)
rescue BigBlueButton::BigBlueButtonException => exc
puts "BigBlueButton failed on create: #{exc.key}: #{exc.message}"
+ raise exc
end
end
diff --git a/app/views/rooms/show.html.erb b/app/views/rooms/show.html.erb
index 199c596f..7869d7f5 100644
--- a/app/views/rooms/show.html.erb
+++ b/app/views/rooms/show.html.erb
@@ -13,6 +13,14 @@
# with BigBlueButton; if not, see