freenode/#shirakumo - IRC Chatlog
Search
19:54:31
gingerale
I still haven't managed to figure out how lichat does everything. I did manage to make it work though. Although I got a sever error message when the client disconnected.
19:55:15
gingerale
[SEVERE] <LICHAT.SERVER.TCP>: Error during sending to #<LICHAT-TCP-SERVER:CONNECTION {1005338C33}>: #<SB-INT:CLOSED-STREAM-ERROR {1005787283}>
19:55:43
Shinmera
That error is fine. It tries to send a "disconnected" confirmation but the stream is already closed at that point if the client is the one disconnecting.
19:57:43
Colleen
https://plaster.tymoon.eu/v... Website (XHTML), Title: Lichat WS/TCP server - Plaster
19:58:11
gingerale
Oh, I didn't know you could give ql:quickload a list. I always have made multiple ql:quickload calls.
19:59:30
Shinmera
Anyway, Lichat is mostly compromised of four parts: protocol, serverlib, serverimpl, clientimpl
19:59:48
Shinmera
protocol only describes the wire format and the classes and their slots that the protocol has.
20:00:10
Shinmera
serverlib does most of the work by actually implementing all the server side management of connections, users, and channels.
20:00:42
Shinmera
serverimpl and clientimpl each merely handle the underlying transmission protocol to handle the connection (TCP/WS/whatever)
20:01:46
Shinmera
My guess right now is that there's something really wrong happening in the cleanup of a connection, either in the serverlib, one of the serverimpls, or both.
20:02:22
Shinmera
Very likely also connected to multithreading, even though I did lock things up, if I remember.
20:03:44
Shinmera
Sure. Despite lichat being simple in theory, implementations are always a lot more intricate and fickle.