It would add significant overhead to collect the request/response for every client if you only want to log the payloads for one client. You should check if debug is set to 1 before modifying the version or collecting.
You should also add a check to see if the request is a POST (or other methods which may have a payload).
Can you add logging to the iRule and compare the log output from a failure and a success? Specifically, what is the value of $clen before you get the TCL error? Is it 0? You should add another check to see that $clen is greater than 0 before trying to collect the payload.
Aaron