You can try this code:
when CLIENT_ACCEPTED {
prevent first packet to be released to server before CLIENT DATA inspected (CLIENT_DATA Event)
TCP::collect
}
when CLIENT_DATA {
if {[binary scan [TCP::payload] S length] == 1 && [expr { ($length & 0xffff) +2 }] == [TCP::payload length]} {
log local0. "This packet length meets header length value : Header value : [expr { ($length & 0xffff) }] / Packet Length : [TCP::payload length]"
release packet to server... the data length equals the data header length value.
TCP::release
Allow to load balance per packet
TCP::notify request
prevent next packet to be released to server before CLIENT DATA inspected (loop on CLIENT_DATA Event)
TCP::collect
} else {
Packet length doesn't meet Header length value... this is not a valid ISO 8583 packet.
log local0. "This packet length doesn't meet header length value... this is not a valid ISO 8583 packet. reject the connection"
reject
}
}
when USER_REQUEST {
We don't expect a response, so let's just signal one
and detach to make oneconnect happy (message-based)
TCP::notify response
LB::detach
}
This code supports oneconnect profile assigned to the virtual server and load balance to server message-based and not connection-based.