We should start implementing the server logic. Basically, it's a function from client state, server state, and input packet to output packet. Most probably, the state should be hidden behind a monad and sending a response packet should be done through STM queue. (Though that's not a requirement and discussable.)
The acceptance criteria are answering with CONNACK packet to the first CONNECT packet and closing a connection on the second CONNECT packet (as that's a protocol violation).
We should start implementing the server logic. Basically, it's a function from client state, server state, and input packet to output packet. Most probably, the state should be hidden behind a monad and sending a response packet should be done through STM queue. (Though that's not a requirement and discussable.)
The acceptance criteria are answering with CONNACK packet to the first CONNECT packet and closing a connection on the second CONNECT packet (as that's a protocol violation).