iRule: how CLIENT-DATA works

If you were wondering how the CLIENT_DATA event works and how the TCP::collect and TCP::release methods, this is for you. Directly from the horses mouth...

The following rules apply for the CLIENT_DATA event:

1) an implicit TCP::collect is done if the original collect was unbounded (indefinite) and no explicit TCP::release or new TCP::collect is executed.

2) an implicit TCP::release is done if no explicit TCP::release or new TCP::collect is performed and the original collect was not indefinite.

3) an explicit TCP::release would be required if any explicit TCP::collect is executed.

4) an explicit TCP::collect would be required assuming you want to collect more data after an explicit TCP::release has been executed.

You should be able to simply add "TCP::release" to the end of your rule to get data flowing to the server while still continually firing the CLIENT_DATA event for every packet.

Click here for the forum thread.

-Joe

 

[Listening to: Stand by My Woman - Lenny Kravitz - Greatest Hits (04:20)]
Published Jul 27, 2005
Version 1.0
  • ¿Can we fire the CLIENT_DATA before a new tcp packet arrives? I mean, if I want to process portions of a unique tcp packet, ¿would a TCP::release + TCP::collect cause the code into the CLIENT_DATA event to be executed again, before a new TCP paket arrives?