Fixed handling of splitted packets during 'CONNECTING_SERVER' state for 'FAST_FORWARD' mode

pull/3658/head
Javier Jaramago Fernández 5 years ago
parent 260efe1563
commit 86e5caf6ea

@ -3717,6 +3717,21 @@ __get_pkts_from_client:
case FAST_FORWARD:
mybe->server_myds->PSarrayOUT->add(pkt.ptr, pkt.size);
break;
// This state is required because it covers the following situation:
// 1. A new connection is created by a client and the 'FAST_FORWARD' mode is enabled.
// 2. The first packet received for this connection isn't a whole packet, i.e, it's either
// split into multiple packets, or it doesn't fit 'queueIN' size (typically
// QUEUE_T_DEFAULT_SIZE).
// 3. Session is still in 'CONNECTING_SERVER' state, BUT further packets remain to be received
// from the initial split packet.
//
// Because of this, packets received during 'CONNECTING_SERVER' when the previous state is
// 'FAST_FORWARD' should be pushed to 'PSarrayOUT'.
case CONNECTING_SERVER:
if (previous_status.empty() == false && previous_status.top() == FAST_FORWARD) {
mybe->server_myds->PSarrayOUT->add(pkt.ptr, pkt.size);
break;
}
case session_status___NONE:
default:
handler___status_NONE_or_default(pkt);

Loading…
Cancel
Save