Time for a new release.
WARNING: In the previous version it could seem like the iRule supported smtp PIPELINING, IT DOES NOT! You are herby warned. To solve the problem for now the new version does not advertise PIPELINING as a supported service. This might or might not work depending on wether the client is RFC compliant or not.
The problem with SMTP pipelining is that it must be treated in totaly different way. What it does is something like this:
- The client sends a bunch of SMTP commands down the pipe and does not require an answer to each command.
- The server bufferes the answers untill all commands are recived.
- The server sends replies on the client requests in one bunch. The answers are sorted exactly the same way as they where recived.
- Multiple SMTP commands are recived in the same TCP::payload from the client, separated by carriage return.
This scenario must be implemented in quite a different manner than it is in the existing iRule. We have to do some kind om loops with split commands to parse the incoming payload for commands/lines.
I'm working on a new version and I'm thankfull for any good advices.