Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to create connection from non-golang client #4096

Closed
medcelerate opened this issue Sep 19, 2023 · 13 comments
Closed

Unable to create connection from non-golang client #4096

medcelerate opened this issue Sep 19, 2023 · 13 comments

Comments

@medcelerate
Copy link

We've run into a strange issue using Quiche, and please feel free to close this comment if there is already some discussion I haven't found yet. Using a quic-go client connected to our quic-go server we are able to establish a connection and open a stream without issue. However if we attempt to do the same via quiche we don't see a connection be established beyond the handshake and we only see one packet flow in. Ideally is there some way for deeper logging/tracing out of the quic-go library that may help? In the below example we never get passed the first fmt.Printf even though in wireshark we see network connectivity.

Primary Go connection loop

	for {
		select {
		case <-done:
			break out
		default:

		}
		fmt.Printf("Waiting for client connection\n")
		conn, err := listener.Accept(context.Background())
		if err != nil {
			panic(err)
		}
		fmt.Printf("Client %s connected.\n", conn.RemoteAddr())
		stream, err := conn.AcceptStream(context.Background())
		if err != nil {
			panic(err)
		}
		r := &quicRoutine{
			id:              len(routines),
			active:          true,
			registerComChan: processorComChannel,
			conn:            conn,
			stream:          stream,
		}
		go r.run(natsClient)
		routines = append(routines, r)
	}
	fmt.Printf("Closing routines\n")
	for _, r := range routines {
		r.Close()
	}
	fmt.Printf("Closing\n")
@marten-seemann
Copy link
Member

Interesting! I assume you’re talking using Cloudflare Quiche, not Google Quiche?

Are you using the current Quiche version? They didn’t implement key updates for the longest time, which would explain this behavior.

You can enable qlog and inspect the trace using qviz to find out what’s actually going on. Feel free to post the qlog file here and I can take a look.

@medcelerate
Copy link
Author

medcelerate commented Sep 19, 2023 via email

@medcelerate
Copy link
Author

Is there an example for setting up qlog?

@marten-seemann
Copy link
Member

@medcelerate I just added an example to the README in #4102. Could you try out the instructions there?

@medcelerate
Copy link
Author

@marten-seemann I tried the example but the compiler throws an error

cannot use (func(ctx context.Context, p logging.Perspective, connID quic.ConnectionID) *logging.ConnectionTracer literal) (value of type func(ctx context.Context, p protocol.Perspective, connID protocol.ConnectionID) *logging.ConnectionTracer) as func(context.Context, protocol.Perspective, protocol.ConnectionID) logging.ConnectionTracer value in struct literalcompiler[IncompatibleAssign](https://pkg.go.dev/golang.org/x/tools/internal/typesinternal#IncompatibleAssign)

@medcelerate
Copy link
Author

Updated to V0.39 and that is now fixed.

@marten-seemann
Copy link
Member

Updated to V0.39 and that is now fixed.

What is fixed? The qlog command or the problem you reported?

@vtolstov
Copy link

vtolstov commented Oct 1, 2023

yes, i'm interesting too, as i can't connect to quic-go server from android app.

@marten-seemann
Copy link
Member

@vtolstov Same request for you, please record a qlog. Just saying "me too" helps exactly 0 in making progress on this issue.

@medcelerate
Copy link
Author

medcelerate commented Oct 1, 2023 via email

@marten-seemann
Copy link
Member

Yes, the configuration is for v0.39. Please provide the qlog if the issue still occurs. Otherwise, please close this issue.

@medcelerate
Copy link
Author

Yes, we are currently looking further into it. We have QLOG output now, just need to do some evaluations on our client.

@marten-seemann
Copy link
Member

Closing this issue due to inactivity.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants