xtaci / smux

A Stream Multiplexing Library for golang with least memory usage(TDMA)
MIT License
1.27k stars 189 forks source link

Feature request: session跟随上游连接一同close, 或提供查询方式 #60

Closed IrineSistiana closed 4 years ago

IrineSistiana commented 4 years ago
sess, err := smux.Client(conn, defaultSmuxConfig)

如果上游的 conn 关闭,sess.IsClosed() 只检查 s.die 所以还是返回 false。但实际上这个sess已经不能读也不能写了。

能否提供查询

https://github.com/xtaci/smux/blob/211bc4a98c77d2bed8f87d7cd040683541809304/session.go#L62-L63

的方法。

这样的话能在下一次io前能对上游conn进行检查。防止io的时候出错。比如:


    for {
        if sess.IsClosed() {
            openAnotherSess()
        }
        if sess.HasReadErr() || sess.HasWriteErr(){
            openAnotherSess()
        }
        stream, err := sess.AcceptStream()
        if err != nil {
            log(something)
        }

    }

感谢,cheers

IrineSistiana commented 4 years ago

重复 #44