diff --git a/cmd/server/main.go b/cmd/server/main.go index 02b8755..307d176 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -55,6 +55,8 @@ func main() { func handleClient(conn net.Conn) { defer conn.Close() buf := make([]byte, 512) + var registeredID uint16 + var isRegistered bool ask, err := com.ServerAskClientAboutNickname() if err != nil { log.Printf("ERROR: %#v\n", err) @@ -104,6 +106,8 @@ func handleClient(conn net.Conn) { continue } conn.Write(answ) + isRegistered = true + registeredID = id } case com.ID_CLIENT_SEND_SERVER_LINK: default: @@ -111,4 +115,7 @@ func handleClient(conn net.Conn) { // Handle } log.Println("server: conn: closed") + if isRegistered { + userCenter.DeleteIfHaveOne(registeredID) + } } diff --git a/cmd/server/users.go b/cmd/server/users.go index 00b448c..5c1e9d4 100644 --- a/cmd/server/users.go +++ b/cmd/server/users.go @@ -49,6 +49,17 @@ func (u *UserCenter) AddUser(name string) (uint16, error) { return ret, nil } +func (u *UserCenter) DeleteIfHaveOne(id uint16) { + name, found := u.UsersITOS[id] + if !found { + log.Printf("User with %d id is not found; Can not delete\n", id) + return + } + delete(u.UsersITOS, id) + delete(u.UsersSTOI, name) + log.Printf("User with %s name and %d id was found; User is deleted\n", name, id) +} + func (u *UserCenter) GetID(name string) (uint16, error) { id, have := u.UsersSTOI[name] if !have {