diff --git a/src/bridge/bridge.cpp b/src/bridge/bridge.cpp
index c6182be..daf297b 100644
--- a/src/bridge/bridge.cpp
+++ b/src/bridge/bridge.cpp
@@ -596,6 +596,9 @@ void Bridge::send_irc_nick_change(const Iid& iid, const std::string& new_nick, c
if (!res_in_chan)
return;
IrcClient* irc = this->get_irc_client(iid.get_server());
+ if (new_nick == irc->get_own_nick())
+ return;
+
irc->send_nick_command(new_nick);
}
diff --git a/tests/end_to_end/scenarios/nick_not_changed.py b/tests/end_to_end/scenarios/nick_not_changed.py
new file mode 100644
index 0000000..abc367d
--- /dev/null
+++ b/tests/end_to_end/scenarios/nick_not_changed.py
@@ -0,0 +1,12 @@
+from scenarios import *
+
+scenario = (
+ send_stanza(""),
+ sequences.connection(),
+ expect_stanza("/presence[@to='{jid_one}/{resource_one}'][@from='#foo%{irc_server_one}/{nick_one}']/muc_user:x/muc_user:item[@affiliation='admin'][@role='moderator']",
+ "/presence/muc_user:x/muc_user:status[@code='110']"),
+ expect_stanza("/message[@from='#foo%{irc_server_one}'][@type='groupchat']/subject[not(text())]"),
+
+ # Presence with the current nick (status update) should be ignored (no error, no change)
+ send_stanza("away"),
+)