@@ -71,15 +71,14 @@ WebSocketsServer::~WebSocketsServer() {
71
71
* called to initialize the Websocket server
72
72
*/
73
73
void WebSocketsServerCore::begin (void ) {
74
- // init client storage
75
- for (int i = 0 ; i < WEBSOCKETS_SERVER_CLIENT_MAX; i++) {
76
- WSclient_t * client = &_clients[i];
77
74
78
- // reset instance:
79
- // destructor in place
80
- client->~WSclient_t ();
81
- // constructor in place
82
- new (client) WSclient_t (i, _pingInterval, _pongTimeout, _disconnectTimeoutCount);
75
+ // adjust clients storage:
76
+ // _clients[i]'s constructor are already called,
77
+ // all its members are initialized to their default value,
78
+ // except the ones explicitly detailed in WSclient_t() constructor.
79
+ // Then we need to initialize some members to non-trivial values:
80
+ for (int i = 0 ; i < WEBSOCKETS_SERVER_CLIENT_MAX; i++) {
81
+ _clients[i].init (i, _pingInterval, _pongTimeout, _disconnectTimeoutCount);
83
82
}
84
83
85
84
#ifdef ESP8266
@@ -98,6 +97,17 @@ void WebSocketsServerCore::begin(void) {
98
97
void WebSocketsServerCore::close (void ) {
99
98
_runnning = false ;
100
99
disconnect ();
100
+
101
+ // reset _clients[]
102
+ for (int i = 0 ; i < WEBSOCKETS_SERVER_CLIENT_MAX; i++) {
103
+ WSclient_t * client = &_clients[i];
104
+
105
+ // reset instance:
106
+ // destructor in place
107
+ client->~WSclient_t ();
108
+ // constructor in place (reset Strings, set scalars to 0)
109
+ new (client) WSclient_t;
110
+ }
101
111
}
102
112
103
113
/* *
0 commit comments