GoogleChrome / samples

A repo containing samples tied to new functionality in each release of Google Chrome.
https://www.chromestatus.com/samples
Apache License 2.0
5.77k stars 2.39k forks source link

Why we use magic number 2 at quic_transport_server.py #820

Open 18Fl opened 7 months ago

18Fl commented 7 months ago

Hello, everyone(maybe I should @vasilvv specially..), I read your demo code quic-transport.

But there are a little code makes me little confusion:

            if isinstance(event, StreamDataReceived) and event.stream_id == 2: // [+] @a
                self.client_indication_data += event.data
                if event.end_stream:
                    self.process_client_indication()
                    if self.is_closing_or_closed():
                        return
                    # Pass all buffered events into the handler now that it's
                    # available.
                    for e in self.pending_events:
                        self.handler.quic_event_received(e)
                    self.pending_events.clear()
            else:
                # We have received some application data before we have the
                # request URL available, which is possible since there is no
                # ordering guarantee on data between different QUIC streams.
                # Buffer the data for now.
                self.pending_events.append(event)

at @a, we use a magic number which is 2, I have 3 question about this:

  1. what does it means at here.
  2. Why we should use 2 instead of 3, 4, 5, etc...
  3. Which document or source code introduce this?

Thank u very much!

18Fl commented 7 months ago

is it from this document?

In order to verify that the client's origin is allowed to connect to the server in question, the user agent has to communicate the origin to the server. This is accomplished by sending a special message, called client indication, on stream 2, which is the first client- initiated unidirectional stream.