Commit d7fa9952 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge branch 'prevent-500-test-webhook' into 'master'

Prevent 500 test webhook

Fixes #1803

See merge request !1299
parents e1f1e062 db2edff9
...@@ -26,6 +26,7 @@ class Projects::HooksController < Projects::ApplicationController ...@@ -26,6 +26,7 @@ class Projects::HooksController < Projects::ApplicationController
def test def test
if !@project.empty_repo? if !@project.empty_repo?
status = TestHookService.new.execute(hook, current_user) status = TestHookService.new.execute(hook, current_user)
if status if status
flash[:notice] = 'Hook successfully executed.' flash[:notice] = 'Hook successfully executed.'
else else
......
...@@ -32,7 +32,10 @@ class WebHook < ActiveRecord::Base ...@@ -32,7 +32,10 @@ class WebHook < ActiveRecord::Base
def execute(data) def execute(data)
parsed_url = URI.parse(url) parsed_url = URI.parse(url)
if parsed_url.userinfo.blank? if parsed_url.userinfo.blank?
WebHook.post(url, body: data.to_json, headers: { "Content-Type" => "application/json" }, verify: false) WebHook.post(url,
body: data.to_json,
headers: { "Content-Type" => "application/json" },
verify: false)
else else
post_url = url.gsub("#{parsed_url.userinfo}@", "") post_url = url.gsub("#{parsed_url.userinfo}@", "")
auth = { auth = {
...@@ -45,6 +48,9 @@ class WebHook < ActiveRecord::Base ...@@ -45,6 +48,9 @@ class WebHook < ActiveRecord::Base
verify: false, verify: false,
basic_auth: auth) basic_auth: auth)
end end
rescue SocketError, Errno::ECONNREFUSED => e
logger.error("WebHook Error => #{e}")
false
end end
def async_execute(data) def async_execute(data)
......
...@@ -2,8 +2,5 @@ class TestHookService ...@@ -2,8 +2,5 @@ class TestHookService
def execute(hook, current_user) def execute(hook, current_user)
data = GitPushService.new.sample_data(hook.project, current_user) data = GitPushService.new.sample_data(hook.project, current_user)
hook.execute(data) hook.execute(data)
true
rescue SocketError
false
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment