[修复]重复登录时返回数据异常
This commit is contained in:
@@ -27,6 +27,7 @@ func main() {
|
||||
} //服务模式
|
||||
//交互模式
|
||||
go server.AcceptLoop(tcpListener)
|
||||
Debug("Server Working")
|
||||
for {
|
||||
inputReader := bufio.NewReader(os.Stdin)
|
||||
cmd, _ := inputReader.ReadString('\n')
|
||||
|
||||
@@ -90,8 +90,12 @@ func (session *Session) ReceiveLoop() {
|
||||
session.SendPanic("", "Failed to unmarshal head.")
|
||||
continue
|
||||
}
|
||||
if session.sender == nil && headInfo[keyname_operation] != operation_login {
|
||||
session.SendPanic("", "MUST LOGIN")
|
||||
if session.sender == nil && headInfo[keyname_operation] != operation_login && headInfo[keyname_operation] != operation_login_old1 {
|
||||
returnHead := make(map[string]string)
|
||||
returnHead[keyname_token] = headInfo[keyname_token]
|
||||
returnHead[keyname_operation] = headInfo[keyname_operation]
|
||||
returnHead["Error"] = "Permission failed. Please sign in."
|
||||
session.SendData(returnHead, nil)
|
||||
continue
|
||||
} //抛弃未登录用户的消息
|
||||
switch headInfo[keyname_operation] {
|
||||
@@ -155,21 +159,25 @@ func (session *Session) LoginHandler(headInfo map[string]string) {
|
||||
returnInfo[keyname_operation] = headInfo[keyname_operation]
|
||||
returnInfo[keyname_token] = headInfo[keyname_token]
|
||||
returnInfo["Error"] = ""
|
||||
var user *UserInfo //用户信息
|
||||
//已经登录
|
||||
if session.status != session_status_created {
|
||||
user = session.sender
|
||||
session.SendData(returnInfo, nil)
|
||||
return
|
||||
} //已登录
|
||||
user := Login(headInfo["User"], headInfo["Pwd"])
|
||||
if user == nil {
|
||||
Debug("Bad login: illegal user.")
|
||||
returnInfo["Error"] = "Illegal User."
|
||||
session.SendData(returnInfo, nil)
|
||||
return
|
||||
} else {
|
||||
//登录
|
||||
user = Login(headInfo["User"], headInfo["Pwd"])
|
||||
if user == nil {
|
||||
Debug("Bad login: illegal user.")
|
||||
returnInfo["Error"] = "Illegal User."
|
||||
session.SendData(returnInfo, nil)
|
||||
return
|
||||
}
|
||||
session.sender = user
|
||||
session.status = session_status_running
|
||||
session.Offline(server.sessionMap[session.sender.User], "The account is logged by another client.")
|
||||
server.sessionMap[session.sender.User] = session
|
||||
}
|
||||
session.sender = user
|
||||
session.status = session_status_running
|
||||
session.Offline(server.sessionMap[session.sender.User], "The account is logged by another client.")
|
||||
server.sessionMap[session.sender.User] = session
|
||||
returnInfo["User"] = user.User
|
||||
returnInfo["NickName"] = user.NickName
|
||||
returnInfo["Motto"] = user.Motto
|
||||
@@ -180,7 +188,7 @@ func (session *Session) LoginHandler(headInfo map[string]string) {
|
||||
} else {
|
||||
photo = GetUserPhoto(session.sender.User)
|
||||
}
|
||||
returnInfo["Photo"] = string(len(photo))
|
||||
returnInfo["Photo"] = strconv.Itoa(len(photo))
|
||||
session.SendData(returnInfo, photo)
|
||||
//转发用户未读消息
|
||||
go session.TransUnreadedMessages(session.sender)
|
||||
@@ -264,7 +272,7 @@ func (session *Session) UpdateUserInfoHandler(headInfo map[string]string, data [
|
||||
func (session *Session) GetUsersHandler(headInfo map[string]string) {
|
||||
result := make(map[string]string)
|
||||
result[keyname_token] = headInfo[keyname_token]
|
||||
result[keyname_operation] = headInfo[operation_update_userinfo]
|
||||
result[keyname_operation] = headInfo[keyname_operation]
|
||||
result["Error"] = ""
|
||||
users := make([]UserInfo, 1) //用户列表
|
||||
//获取特定用户信息
|
||||
@@ -284,15 +292,15 @@ func (session *Session) GetUsersHandler(headInfo map[string]string) {
|
||||
//发送用户数据
|
||||
var photoData []byte //头像数据
|
||||
result["Error"] = ""
|
||||
result["Total"] = string(len(users)) //总用户数
|
||||
result["Total"] = strconv.Itoa(len(users)) //总用户数
|
||||
for i, curUser := range users {
|
||||
photoData = GetUserPhoto(curUser.User)
|
||||
result["Count"] = string(i + 1) //当前用户次序编号
|
||||
result["Count"] = strconv.Itoa(i + 1) //当前用户次序编号
|
||||
result["User"] = curUser.User
|
||||
result["NickName"] = curUser.NickName
|
||||
result["Motto"] = curUser.Motto
|
||||
result["UGroup"] = curUser.UGroup
|
||||
result["Photo"] = string(len(photoData)) //头像数据长度
|
||||
result["Photo"] = strconv.Itoa(len(photoData)) //头像数据长度
|
||||
session.SendData(result, photoData)
|
||||
}
|
||||
//发送用户列表结束封包
|
||||
@@ -300,7 +308,7 @@ func (session *Session) GetUsersHandler(headInfo map[string]string) {
|
||||
endingResult[keyname_token] = result[keyname_token]
|
||||
endingResult[keyname_operation] = result[keyname_operation]
|
||||
endingResult["Total"] = result["Total"]
|
||||
endingResult["Count"] = string(-1)
|
||||
endingResult["Count"] = strconv.Itoa(-1)
|
||||
endingResult["Error"] = ""
|
||||
session.SendData(endingResult, nil)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user