Posted to tcl by aspect at Mon Jul 03 12:47:07 GMT 2023view pretty

Index: apps/ijbridge/ijbridge.tcl
==================================================================
--- apps/ijbridge/ijbridge.tcl
+++ apps/ijbridge/ijbridge.tcl
@@ -1086,12 +1086,28 @@
         cmd-join $::client::channel
     }
 
     $cn registerevent 433 {
         # ERR_NICKNAMEINUSE
-        if { [lindex [additional] 0] == $::client::nick } {
-            cmd-send "NICK [string trimright $::client::nick 0123456789][string range [expr rand()] end-2 end]"
+
+        # avoid piling up afters
+        after cancel [list cmd-send "NICK $preferred_nick"]
+
+        set preferred_nick $::ijchain::Options(IrcUser)
+        # $::client::nick is our current nick - or, during intial handshake, the nick we are trying to assume.
+
+        if {[lindex [additional] 0] eq $::client_nick} {
+
+            # we are still trying to set an initial nick
+
+            set fallback_nick "$preferred_nick[string range [expr rand()] end-2 end]"
+            cmd-send "NICK $fallback_nick"
+            set $::client::nick $fallback_nick
+        }
+
+        if {$::client::nick ne $preferred_nick} {
+            after 20000 [list cmd-send "NICK $preferred_nick"]
         }
     }
 
     $cn registerevent 353 {
         # RPL_NAMEREPLY