* Handel incomming data from Client */
| 556 | * Handel incomming data from Client |
| 557 | */ |
| 558 | void WebSocketsClient::handleClientData(void) { |
| 559 | if((_client.status == WSC_HEADER || _client.status == WSC_BODY) && _lastHeaderSent + WEBSOCKETS_TCP_TIMEOUT < millis()) { |
| 560 | DEBUG_WEBSOCKETS("[WS-Client][handleClientData] header response timeout.. disconnecting!\n"); |
| 561 | clientDisconnect(&_client); |
| 562 | WEBSOCKETS_YIELD(); |
| 563 | return; |
| 564 | } |
| 565 | |
| 566 | int len = _client.tcp->available(); |
| 567 | if(len > 0) { |
| 568 | switch(_client.status) { |
| 569 | case WSC_HEADER: { |
| 570 | String headerLine = _client.tcp->readStringUntil('\n'); |
| 571 | handleHeader(&_client, &headerLine); |
| 572 | } break; |
| 573 | case WSC_BODY: { |
| 574 | char buf[256] = { 0 }; |
| 575 | _client.tcp->readBytes(&buf[0], std::min((size_t)len, sizeof(buf))); |
| 576 | String bodyLine = buf; |
| 577 | handleHeader(&_client, &bodyLine); |
| 578 | } break; |
| 579 | case WSC_CONNECTED: |
| 580 | WebSockets::handleWebsocket(&_client); |
| 581 | break; |
| 582 | default: |
| 583 | WebSockets::clientDisconnect(&_client, 1002); |
| 584 | break; |
| 585 | } |
| 586 | } |
| 587 | WEBSOCKETS_YIELD(); |
| 588 | } |
| 589 | #endif |
| 590 | |
| 591 | /** |
nothing calls this directly
no test coverage detected