faq.rst revision f3d781aa
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.)
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