From 428c5021bfbfe65daf433b37547f9e3cc6060532 Mon Sep 17 00:00:00 2001 From: Neel Shah Date: Mon, 22 Jul 2024 13:27:13 +0200 Subject: [PATCH] Don't overwrite ip_address if already set on user --- CHANGELOG.md | 5 +++++ sentry-ruby/lib/sentry/event.rb | 4 +--- sentry-ruby/spec/sentry/event_spec.rb | 6 ++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 763734e42..3b14a0fa0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ ## Unreleased +### Bug Fixes + +- Don't overwrite `ip_address` if already set on `user` [#2350](https://github.com/getsentry/sentry-ruby/pull/2350) + - Fixes [#2347](https://github.com/getsentry/sentry-ruby/issues/2347) + ### Internal - Use Concurrent.usable_processor_count when it is available ([#2339](https://github.com/getsentry/sentry-ruby/pull/2339)) diff --git a/sentry-ruby/lib/sentry/event.rb b/sentry-ruby/lib/sentry/event.rb index 97777a1c9..b3fb5b275 100644 --- a/sentry-ruby/lib/sentry/event.rb +++ b/sentry-ruby/lib/sentry/event.rb @@ -104,9 +104,7 @@ def rack_env=(env) unless request || env.empty? add_request_interface(env) - if @send_default_pii - user[:ip_address] = calculate_real_ip_from_rack(env) - end + user[:ip_address] ||= calculate_real_ip_from_rack(env) if @send_default_pii if request_id = Utils::RequestId.read_from(env) tags[:request_id] = request_id diff --git a/sentry-ruby/spec/sentry/event_spec.rb b/sentry-ruby/spec/sentry/event_spec.rb index a5ca457e7..5eeb232f9 100644 --- a/sentry-ruby/spec/sentry/event_spec.rb +++ b/sentry-ruby/spec/sentry/event_spec.rb @@ -141,6 +141,12 @@ expect(event.to_hash[:user][:ip_address]).to eq("2.2.2.2") end + it "doesn't overwrite already set ip address" do + Sentry.set_user({ ip_address: "3.3.3.3" }) + Sentry.get_current_scope.apply_to_event(event) + expect(event.to_hash[:user][:ip_address]).to eq("3.3.3.3") + end + context "with config.trusted_proxies = [\"2.2.2.2\"]" do before do Sentry.configuration.trusted_proxies = ["2.2.2.2"]