1************************** 2Frequently Asked Questions 3************************** 4 5API/Design 6========== 7 8*Why have a separate engine for server and client? Surely traffic 9could be differentiated as much as it needs to be internally in one 10engine?* 11 12The traffic *cannot* be differentiated for gQUIC versions Q046 and Q050. 13This is because in these versions, the server never includes a connection 14ID into the packets it sends to the client. To have more than one 15connection, then, the client must open a socket per connection: otherwise, 16the engine would not be able to dispatch incoming packets to correct 17connections. 18 19To aid development, there is a :macro:`LSQUIC_FORCED_TCID0_VERSIONS` that 20specifies the list of versions with 0-sized connections. (If you, for 21example, want to turn them off.) 22 23Once gQUIC becomes deprecated in the future, there will remain no technical 24reason why a single engine instance could not be used both for client and 25server connections. It will be just work. For example, the single 26engine settings :type:`lsquic_engine_settings` will have to be separated 27into client and server settings, as the two usually do need to have 28separate settings. 29 30Example Programs 31================ 32 33*http_client does not work with www.google.com, www.facebook.com, etc.* 34 35Check the version. By defaut, ``http_client`` will use the latest supported 36version (at the time of this writing, "h3-31"), while the server may be using 37an older version, such as "h3-29". Adding ``-o version=h3-29`` to the 38command line may well solve your issue. 39 40There is an `outstanding bug`_ where lsquic client does not perform version 41negotiation correctly for HTTP/3. We do not expect this to be fixed, because 42a) this version negotiation mechanism is likely to become defunct when QUIC v1 43is released and b) version negotiation is not necessary for an HTTP/3 client, 44because the other side's version is communicated to it via the ``Alt-Svc`` HTTP 45header. 46 47.. _`outstanding bug`: https://github.com/litespeedtech/lsquic/issues/180 48