#29206: New design for client -- server protocol for Snowflake -----------------------------------------------+--------------------------- Reporter: cohosh | Owner: cohosh Type: task | Status: | needs_review Priority: Medium | Milestone: Component: Circumvention/Snowflake | Version: Severity: Normal | Resolution: Keywords: anti-censorship-roadmap-september | Actual Points: Parent ID: | Points: 6 Reviewer: dcf | Sponsor: | Sponsor28-must -----------------------------------------------+---------------------------
Comment (by dcf): Replying to [comment:27 cohosh]: > - We don't currently have unit tests that check the client and server integration and we should have them I ported my recent [https://github.com/net4people/bbs/issues/14#issuecomment-542898991 Turbo Tunnel prototype program] to `SnowflakeConn`. You'll have to check it; I may have gotten the API wrong. But perhaps it can help test in a controlled environment. attachment:reconnecting-snowflakeconn.zip I managed to get a few panics, trying different things. ---- {{{ server$ ./server 127.0.0.1:4000 2019/10/17 21:14:11 error in handleConn: EOF panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x4f8d24] goroutine 5 [running]: github.com/cohosh/snowflake/common/snowflake- proto.(*SnowflakeConn).Write(0xc0000ba000, 0xc0000307a8, 0xc, 0x20, 0xc, 0x20, 0x0) $GOPATH/pkg/mod/github.com/cohosh/snowflake@v0.0.0-20191002223810-1707fcc12518/common /snowflake-proto/proto.go:337 +0x424 main.handleConn.func1(0xc0000ba000) reconnecting-snowflakeconn/server/main.go:62 +0x87 created by main.handleConn reconnecting-snowflakeconn/server/main.go:58 +0x207 }}} {{{ client$ ./client 127.0.0.1:4000 2019/10/17 21:14:08 begin SnowflakeConn c0bd93336fcab1ef 2019/10/17 21:14:08 begin TCP connection 127.0.0.1:52386 -> 127.0.0.1:4000 abcd ABCD ^C client$ ./client 127.0.0.1:4000 2019/10/17 21:14:15 begin SnowflakeConn e446789c28f69bbc 2019/10/17 21:14:15 begin TCP connection 127.0.0.1:52388 -> 127.0.0.1:4000 xyz XYZ 2019/10/17 21:14:19 stdout <- conn finished: EOF }}} This looks like it's the `err`/`err2` confusion from comment:28. ---- {{{ lilbastard$ lilbastard -w 10 127.0.0.1:3000 127.0.0.1:4000 }}} {{{ $ ./server 127.0.0.1:4000 2019/10/17 21:18:41 error in handleConn: EOF panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x4f8d24] goroutine 5 [running]: github.com/cohosh/snowflake/common/snowflake- proto.(*SnowflakeConn).Write(0xc0000be000, 0xc00002ffa8, 0xc, 0x20, 0xc, 0x20, 0x0) $GOPATH/pkg/mod/github.com/cohosh/snowflake@v0.0.0-20191002223810-1707fcc12518/common /snowflake-proto/proto.go:337 +0x424 main.handleConn.func1(0xc0000be000) reconnecting-snowflakeconn/server/main.go:62 +0x87 created by main.handleConn reconnecting-snowflakeconn/server/main.go:58 +0x207 }}} {{{ $ ./client 127.0.0.1:3000 2019/10/17 21:18:31 begin SnowflakeConn f2a5d31f6afa8727 2019/10/17 21:18:31 begin TCP connection 127.0.0.1:39108 -> 127.0.0.1:3000 abcd ABCD efgh EFGH ijkl2019/10/17 21:18:41 stdout <- conn finished: EOF 2019/10/17 21:18:51 Closing WebRTC connection, timed out waiting for ACK }}} This looks similar, except the server and client report an EOF first. ---- {{{ server$ ./server 127.0.0.1:4000 }}} {{{ client$ yes | ./client 127.0.0.1:4000 2019/10/17 21:16:01 begin SnowflakeConn eb27f73167a77490 2019/10/17 21:16:01 begin TCP connection 127.0.0.1:52392 -> 127.0.0.1:4000 2019/10/17 21:16:11 Closing WebRTC connection, timed out waiting for ACK panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x4f52c4] goroutine 6 [running]: github.com/cohosh/snowflake/common/snowflake- proto.(*SnowflakeConn).Write(0xc0000a4000, 0xc0000b8000, 0x8000, 0x8000, 0x8000, 0x0, 0x0) $GOPATH/pkg/mod/github.com/cohosh/snowflake@v0.0.0-20191002223810-1707fcc12518/common /snowflake-proto/proto.go:337 +0x424 github.com/cohosh/snowflake/common/snowflake-proto.Proxy(0x55edc0, 0xc0000a4000, 0x55ef80, 0xc00000e010, 0x0, 0x0, 0x0) $GOPATH/pkg/mod/github.com/cohosh/snowflake@v0.0.0-20191002223810-1707fcc12518/common /snowflake-proto/proto.go:406 +0xf0 main.run.func1(0xc000012380, 0xc0000a4000) reconnecting-snowflakeconn/client/main.go:37 +0x7d created by main.run reconnecting-snowflakeconn/client/main.go:35 +0x3e8 }}} This panic is in the client rather than the server. -- Ticket URL: <https://trac.torproject.org/projects/tor/ticket/29206#comment:29> Tor Bug Tracker & Wiki <https://trac.torproject.org/> The Tor Project: anonymity online
_______________________________________________ tor-bugs mailing list tor-bugs@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-bugs