@@ -386,9 +386,9 @@ typedef lw_i8 lw_bool;
386386
387387 lw_import lw_stream lw_stream_new (const lw_streamdef *, lw_pump);
388388 lw_import const lw_streamdef * lw_stream_get_def (lw_stream);
389- lw_import void * lw_stream_tail (lw_stream);
390- lw_import lw_stream lw_stream_from_tail (void *);
391- lw_import void lw_stream_data (lw_stream, const char * buffer, size_t size);
389+ lw_import void * lw_stream_tail (lw_stream);
390+ lw_import lw_stream lw_stream_from_tail (void *);
391+ lw_import void lw_stream_data (lw_stream, const char * buffer, size_t size);
392392
393393 /* FDStream */
394394
@@ -409,7 +409,7 @@ typedef lw_i8 lw_bool;
409409 (lw_file, const char * filename, const char * mode);
410410
411411 lw_import lw_bool lw_file_open_temp (lw_file);
412- lw_import const char * lw_file_name (lw_file);
412+ lw_import const char * lw_file_name (lw_file);
413413
414414 /* Pipe */
415415
@@ -466,7 +466,7 @@ typedef lw_i8 lw_bool;
466466 * applicable. To delete a lw_client, use lw_stream_delete.
467467 */
468468
469- lw_import lw_client lw_client_new (lw_pump);
469+ lw_import lw_client lw_client_new (lw_pump);
470470 lw_import void lw_client_connect (lw_client, const char * host, long port);
471471 lw_import void lw_client_connect_addr (lw_client, lw_addr);
472472 lw_import void lw_client_connect_secure (lw_client, const char * host, long port);
@@ -765,14 +765,14 @@ struct _pump
765765 #else
766766
767767 lw_import lw_pump_watch add (int fd, void * tag,
768- lw_pump_callback on_read_ready,
769- lw_pump_callback on_write_ready = 0 ,
770- bool edge_triggered = true );
768+ lw_pump_callback on_read_ready,
769+ lw_pump_callback on_write_ready = 0 ,
770+ bool edge_triggered = true );
771771
772772 lw_import void update_callbacks (lw_pump_watch, void * tag,
773- lw_pump_callback on_read_ready,
774- lw_pump_callback on_write_ready = 0 ,
775- bool edge_triggered = true );
773+ lw_pump_callback on_read_ready,
774+ lw_pump_callback on_write_ready = 0 ,
775+ bool edge_triggered = true );
776776
777777 #endif
778778
@@ -924,10 +924,10 @@ struct _stream
924924 lw_import void write_file (const char * filename);
925925
926926 lw_import void add_filter_upstream
927- (stream, bool delete_with_stream = false , bool close_together = false );
927+ (stream, bool delete_with_stream = false , bool close_together = false );
928928
929929 lw_import void add_filter_downstream
930- (stream, bool delete_with_stream = false , bool close_together = false );
930+ (stream, bool delete_with_stream = false , bool close_together = false );
931931
932932 lw_import bool close (bool immediate = false );
933933
@@ -1136,7 +1136,7 @@ struct _server
11361136 typedef void (lw_callback * hook_disconnect) (server, server_client);
11371137
11381138 typedef void (lw_callback * hook_data)
1139- (server, server_client, const char * buffer, size_t size);
1139+ (server, server_client, const char * buffer, size_t size);
11401140
11411141 typedef void (lw_callback * hook_error) (server, error);
11421142
@@ -1234,7 +1234,7 @@ struct _webserver
12341234
12351235 lw_import bool load_sys_cert
12361236 (const char * store_name, const char * common_name,
1237- const char * location = " CurrentUser" );
1237+ const char * location = " CurrentUser" );
12381238
12391239 lw_import bool cert_loaded ();
12401240
@@ -1263,14 +1263,14 @@ struct _webserver
12631263 typedef void (lw_callback * hook_upload_post)
12641264 (webserver, webserver_request, webserver_upload uploads[], size_t num_uploads);
12651265
1266- lw_import void on_get (hook_get);
1267- lw_import void on_upload_start (hook_upload_start);
1268- lw_import void on_upload_chunk (hook_upload_chunk);
1269- lw_import void on_upload_done (hook_upload_done);
1270- lw_import void on_upload_post (hook_upload_post);
1271- lw_import void on_post (hook_post);
1272- lw_import void on_head (hook_head);
1273- lw_import void on_disconnect (hook_disconnect);
1266+ lw_import void on_get (hook_get);
1267+ lw_import void on_upload_start (hook_upload_start);
1268+ lw_import void on_upload_chunk (hook_upload_chunk);
1269+ lw_import void on_upload_done (hook_upload_done);
1270+ lw_import void on_upload_post (hook_upload_post);
1271+ lw_import void on_post (hook_post);
1272+ lw_import void on_head (hook_head);
1273+ lw_import void on_disconnect (hook_disconnect);
12741274 lw_import void on_error (hook_error);
12751275
12761276 lw_import void tag (void *);
@@ -1584,8 +1584,8 @@ struct readlock {
15841584 readwritelock & lock;
15851585 std::shared_lock<decltype (readwritelock::lock)> locker;
15861586 bool locked = true ;
1587-
15881587};
1588+
15891589struct writelock {
15901590 friend readwritelock;
15911591 friend readlock;
@@ -1920,12 +1920,12 @@ struct relayserver
19201920 std::atomic<bool > _readonly = false ;
19211921 relayserverinternal &server;
19221922
1923- std::vector<std::shared_ptr<relayserver::client>> clients;
1923+ std::vector<std::shared_ptr<relayserver::client>> clients;
19241924
19251925 std::string _name;
1926- lw_ui16 _id = 0xFFFF ;
1927- bool _hidden = true ;
1928- bool _autoclose = false ;
1926+ lw_ui16 _id = 0xFFFF ;
1927+ bool _hidden = true ;
1928+ bool _autoclose = false ;
19291929 // TODO: should be weak_ptr?
19301930 std::shared_ptr<client> _channelmaster;
19311931
@@ -2013,20 +2013,30 @@ struct relayserver
20132013
20142014 bool pseudoUDP = true ; // Is UDP not supported (e.g. Flash) so "faked" by receiver
20152015
2016- bool connectRequestApproved = false ;
2017- bool gotfirstbyte = false ;
2018- bool pongedOnTCP = true ;
2016+ // Got opening null byte, indicating not a HTTP client.
2017+ bool gotfirstbyte = false ;
2018+ // After TCP connect approval, Lacewing connect message request was received, and server has said OK to it
2019+ bool connectRequestApproved = false ;
2020+ // Client has only ever used valid Lacewing messages; e.g. valid UTF-8, no missing elements in messages.
2021+ // Does not indicate all messages succeed. When false, client is kicked very shortly after.
20192022 bool trustedClient = true ;
2023+ // Has a TCP ping request been sent by server, and was replied to.
2024+ // If false, next ping timer tick will consider a failed ping and kick the client, so it is true by default.
2025+ bool pongedOnTCP = true ;
20202026
2021- lacewing::address udpaddress;
2022- void PeerToPeer (relayserver &server, std::shared_ptr<relayserver::channel> viachannel, std::shared_ptr<relayserver::client> receivingclient,
2023- bool blasted, lw_ui8 subchannel, lw_ui8 variant, std::string_view message) ;
2027+ lacewing::address udpaddress;
2028+
2029+ lw_ui16 _id = 0xFFFF ;
20242030
2025- bool checkname (std::string_view name);
2031+ void PeerToPeer (relayserver &server, std::shared_ptr<relayserver::channel> viachannel, std::shared_ptr<relayserver::client> receivingclient,
2032+ bool blasted, lw_ui8 subchannel, lw_ui8 variant, std::string_view message);
20262033
2027- lw_ui16 _id = 0xFFFF ;
2034+ // Checks if name can be set to given name, by this client.
2035+ // Checks whether name is valid, and whether name is in use already.
2036+ bool checkname (std::string_view name);
20282037
2029- std::shared_ptr<relayserver::channel> readchannel (messagereader &reader);
2038+ // Reads channel from client's channel list; fails if not joined.
2039+ std::shared_ptr<relayserver::channel> readchannel (messagereader &reader);
20302040 };
20312041
20322042 size_t clientcount () const ;
0 commit comments