fix: 修复 server 中 HTTP 服务器关闭时会引发空指针的问题

This commit is contained in:
kercylan98 2023-08-31 13:32:42 +08:00
parent 3062428051
commit 8cd9979e2b
2 changed files with 1 additions and 19 deletions

View File

@ -106,9 +106,6 @@ func (slf MessageType) String() string {
// PushPacketMessage 向特定服务器中推送 MessageTypePacket 消息 // PushPacketMessage 向特定服务器中推送 MessageTypePacket 消息
func PushPacketMessage(srv *Server, conn *Conn, wst int, packet []byte, mark ...any) { func PushPacketMessage(srv *Server, conn *Conn, wst int, packet []byte, mark ...any) {
if srv.messagePool == nil {
return
}
msg := srv.messagePool.Get() msg := srv.messagePool.Get()
msg.t = MessageTypePacket msg.t = MessageTypePacket
msg.attrs = append([]any{&Conn{ctx: context.WithValue(conn.ctx, contextKeyWST, wst), connection: conn.connection}, packet}, mark...) msg.attrs = append([]any{&Conn{ctx: context.WithValue(conn.ctx, contextKeyWST, wst), connection: conn.connection}, packet}, mark...)
@ -117,9 +114,6 @@ func PushPacketMessage(srv *Server, conn *Conn, wst int, packet []byte, mark ...
// PushErrorMessage 向特定服务器中推送 MessageTypeError 消息 // PushErrorMessage 向特定服务器中推送 MessageTypeError 消息
func PushErrorMessage(srv *Server, err error, action MessageErrorAction, mark ...any) { func PushErrorMessage(srv *Server, err error, action MessageErrorAction, mark ...any) {
if srv.messagePool == nil {
return
}
msg := srv.messagePool.Get() msg := srv.messagePool.Get()
msg.t = MessageTypeError msg.t = MessageTypeError
msg.attrs = append([]any{err, action}, mark...) msg.attrs = append([]any{err, action}, mark...)
@ -128,9 +122,6 @@ func PushErrorMessage(srv *Server, err error, action MessageErrorAction, mark ..
// PushCrossMessage 向特定服务器中推送 MessageTypeCross 消息 // PushCrossMessage 向特定服务器中推送 MessageTypeCross 消息
func PushCrossMessage(srv *Server, crossName string, serverId int64, packet []byte, mark ...any) { func PushCrossMessage(srv *Server, crossName string, serverId int64, packet []byte, mark ...any) {
if srv.messagePool == nil {
return
}
if serverId == srv.id { if serverId == srv.id {
msg := srv.messagePool.Get() msg := srv.messagePool.Get()
msg.t = MessageTypeCross msg.t = MessageTypeCross
@ -150,9 +141,6 @@ func PushCrossMessage(srv *Server, crossName string, serverId int64, packet []by
// PushTickerMessage 向特定服务器中推送 MessageTypeTicker 消息 // PushTickerMessage 向特定服务器中推送 MessageTypeTicker 消息
func PushTickerMessage(srv *Server, caller func(), mark ...any) { func PushTickerMessage(srv *Server, caller func(), mark ...any) {
if srv.messagePool == nil {
return
}
msg := srv.messagePool.Get() msg := srv.messagePool.Get()
msg.t = MessageTypeTicker msg.t = MessageTypeTicker
msg.attrs = append([]any{caller}, mark...) msg.attrs = append([]any{caller}, mark...)
@ -166,9 +154,6 @@ func PushTickerMessage(srv *Server, caller func(), mark ...any) {
// //
// 在通过 WithShunt 使用分流服务器时,异步消息不会转换到分流通道中进行处理。依旧需要注意上方第三条 // 在通过 WithShunt 使用分流服务器时,异步消息不会转换到分流通道中进行处理。依旧需要注意上方第三条
func PushAsyncMessage(srv *Server, caller func() error, callback func(err error), mark ...any) { func PushAsyncMessage(srv *Server, caller func() error, callback func(err error), mark ...any) {
if srv.messagePool == nil {
return
}
msg := srv.messagePool.Get() msg := srv.messagePool.Get()
msg.t = MessageTypeAsync msg.t = MessageTypeAsync
msg.attrs = append([]any{caller, callback}, mark...) msg.attrs = append([]any{caller, callback}, mark...)
@ -177,9 +162,6 @@ func PushAsyncMessage(srv *Server, caller func() error, callback func(err error)
// PushSystemMessage 向特定服务器中推送 MessageTypeSystem 消息 // PushSystemMessage 向特定服务器中推送 MessageTypeSystem 消息
func PushSystemMessage(srv *Server, handle func(), mark ...any) { func PushSystemMessage(srv *Server, handle func(), mark ...any) {
if srv.messagePool == nil {
return
}
msg := srv.messagePool.Get() msg := srv.messagePool.Get()
msg.t = MessageTypeSystem msg.t = MessageTypeSystem
msg.attrs = append([]any{handle}, mark...) msg.attrs = append([]any{handle}, mark...)

View File

@ -240,7 +240,7 @@ func (slf *Server) Run(addr string) error {
PushErrorMessage(slf, err, MessageErrorActionShutdown) PushErrorMessage(slf, err, MessageErrorActionShutdown)
} }
} else { } else {
if err := slf.httpServer.ListenAndServe(); err != nil && errors.Is(err, http.ErrServerClosed) { if err := slf.httpServer.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) {
slf.isRunning = false slf.isRunning = false
PushErrorMessage(slf, err, MessageErrorActionShutdown) PushErrorMessage(slf, err, MessageErrorActionShutdown)
} }