diff --git a/app/jobs/regular/pull_hotlinked_images.rb b/app/jobs/regular/pull_hotlinked_images.rb
index fd8191f4a18..14bd57948e9 100644
--- a/app/jobs/regular/pull_hotlinked_images.rb
+++ b/app/jobs/regular/pull_hotlinked_images.rb
@@ -26,7 +26,7 @@ module Jobs
downloaded_urls = {}
extract_images_from(post.cooked).each do |image|
- src = image['src']
+ src = original_src = image['src']
src = "http:" + src if src.start_with?("//")
if is_valid_image_url(src)
@@ -53,7 +53,7 @@ module Jobs
# have we successfully downloaded that file?
if downloaded_urls[src].present?
url = downloaded_urls[src]
- escaped_src = Regexp.escape(src)
+ escaped_src = Regexp.escape(original_src)
# there are 6 ways to insert an image in a post
# HTML tag -
raw.gsub!(/src=["']#{escaped_src}["']/i, "src='#{url}'")
diff --git a/spec/jobs/pull_hotlinked_images_spec.rb b/spec/jobs/pull_hotlinked_images_spec.rb
new file mode 100644
index 00000000000..f9f50766785
--- /dev/null
+++ b/spec/jobs/pull_hotlinked_images_spec.rb
@@ -0,0 +1,28 @@
+require 'rails_helper'
+require 'jobs/regular/pull_hotlinked_images'
+
+describe Jobs::PullHotlinkedImages do
+
+ png = Base64.decode64("R0lGODlhAQABALMAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwICAgP8AAAD/AP//AAAA//8A/wD//wBiZCH5BAEAAA8ALAAAAAABAAEAAAQC8EUAOw==")
+ FakeWeb.register_uri(:get, "http://wiki.mozilla.org/images/2/2e/Longcat1.png", body: png)
+ SiteSetting.download_remote_images_to_local = true
+
+ it 'replaces image src' do
+ post = Fabricate(:post, raw: "
")
+
+ Jobs::PullHotlinkedImages.new.execute(post_id: post.id)
+ post.reload
+
+ expect(post.raw).to match(/^
")
+
+ Jobs::PullHotlinkedImages.new.execute(post_id: post.id)
+ post.reload
+
+ expect(post.raw).to match(/^
+ end
+
+end
)