-
Notifications
You must be signed in to change notification settings - Fork 215
Open
Description
server部分代码
//conn为UDPSession
sess, err := smux.Server(conn, smuxConfig)
if err != nil {
log.Println("smux server err:", err)
return
}
//go func() {
defer func() {
sess.Close()
conn.Close()
}()
for {
stream, err := sess.AcceptStream()
if err != nil {
log.Println("sumx accept err:", err)
if err, ok := err.(net.Error); ok && err.Temporary() {
continue
}
break
}
go func() {
defer func() {
log.Printf("server end stream %08x:%d", conn.GetConv(), stream.ID())
stream.Close()
}()
log.Printf("server begin stream %08x:%d", conn.GetConv(), stream.ID())
SendOneKcpConnection(stream)
}()
}sess创建自一个kcp.UdpSession:
sess, err := smux.Server(conn, smuxConfig)
我的client和server都是已经关闭了stream的
但是我发现在关闭之后,AcceptStream一直阻塞知道smux超时才返回一个io: read/write on closed pipe
通过抓包我看到了smux确实已经互相发了fin包,但是这里一直阻塞的原因不太清楚
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels