summaryrefslogtreecommitdiff
path: root/web/socket/client.scm
Commit message (Collapse)AuthorAgeFilesLines
* client: Validate accept key when handshaking.David Thompson2016-03-251-25/+25
| | | | | | | * web/socket/client.scm (generate-websocket-nonce): Rename to... (generate-client-key): ...this. (make-handshake-request): Change argument list. (handshake): Validate accept key.
* client: Mask sent frames.David Thompson2016-03-251-2/+6
| | | | | * web/socket/client.scm (generate-masking-key): New procedure. (websocket-send): Mask the frame to be sent.
* client: Generate random nonce for handshake.David Thompson2016-03-251-5/+11
| | | | | | | * web/socket/client.scm (generate-websocket-nonce): New procedure. (make-handshake-request): Change argument from uri to websocket. Generate a real nonce for Sec-WebSocket-Key header. (handshake): Adjust make-handshake-request call.
* client: Add entropy source.David Thompson2016-03-251-2/+14
| | | | | | | * web/socket/client.scm (<websocket>)[entropy-port]: New field. (open-entropy-port): New procedure. (make-websocket): Open entropy port. (close-websocket): Close entropy port.
* client: Add custom printer for <websocket>.David Thompson2016-03-251-0/+8
| | | | | * web/socket/client.scm (display-websocket): New procedure. (<websocket>): Set custom record type printer.
* client: Keep track of socket state.David Thompson2016-03-251-12/+37
| | | | | | | | | | | * web/socket/client.scm (<websocket>)[state]: New field. (websocket-state, set-websocket-state!): New field accessors. (websocket-connecting?, websocket-open?, websocket-closing?, websocket-closed?): New procedures. (handshake): Set socket to 'open' state after successful handshake. (make-websocket): Set socket to 'connecting' state initially. (close-websocket): Set socket to 'closing' before sending close frame, and then to 'closed' underlying TCP socket is closed.
* client: Wait for server to close connection.David Thompson2016-03-251-1/+12
| | | | | * web/socket/client.scm (close-websocket): Wait for server to close the connection for a reasonable amount of time.
* Add client module.David Thompson2016-03-241-0/+143