gotel

simple terminal chat program
git clone git://git.mdnr.space/gotel
Log | Files | Refs | README | LICENSE

commit cc6fb3938d82d3ea7ce8abe0dfe9029385983b00
parent f74b68a36be462737b8e07e47b7287d341dd8687
Author: mdnrz <mehdeenoroozi@gmail.com>
Date:   Tue,  8 Apr 2025 10:59:09 +0330

avoid duplicate usernames

Diffstat:
Mgotel.go | 14++++++++++++++
1 file changed, 14 insertions(+), 0 deletions(-)

diff --git a/gotel.go b/gotel.go @@ -51,6 +51,13 @@ func addClient(conn net.Conn, Client_q chan Client) { } } +func checkForDuplicateUN(needle string, heystack map[string]Client) bool { + for _, client := range heystack { + if client.UserName == needle { return true } + } + return false; +} + func server(Client_q chan Client) { clientsOnline := make(map[string]Client) clientsOffline := make(map[string]Client) @@ -65,6 +72,13 @@ func server(Client_q chan Client) { clientOffline, ok := clientsOffline[keyString]; if ok { clientOffline.UserName = strings.TrimRight(client.Text, "\r\n"); + if checkForDuplicateUN(clientOffline.UserName, clientsOnline) { + _, err := clientsOffline[keyString].Conn.Write([]byte("UserName already exists; Try something else\n> ")); + if err != nil { + log.Printf("Could not send message to client %s\n", keyString) + } + break; + } log.Printf("logging in %s\n", clientOffline.UserName); clientsOnline[keyString] = clientOffline; delete(clientsOffline, keyString);