Forum Discussion
Tiaan_92076
Feb 05, 2010Nimbostratus
I've got the following problem with my iRule when a client uses multiple threads using the same source port for all the threads.
Doing a TCPDump I can see the transactions coming in on the outside interface, on the inside interface it goes the the nodes and I can see the response returned from the nodes. But I don't see the response leaving the outside interface. The result is that the client don't get the response and eventually times out.
iRule:
when RULE_INIT {
set ::eot "Marker"
set ::eot_found 0
}
when SERVER_CONNECTED {
TCP::collect
}
when SERVER_DATA {
set payload [TCP::payload]
log -noname local0. "iRule: Request from [IP::client_addr]:[TCP::client_port] load balanced to [LB::server addr]"
if { $payload ends_with $::eot } {
set ::eot_found 1
}
TCP::release
TCP::collect
TCP::notify response
}
when USER_RESPONSE {
if { $::eot_found eq 1 } {
set ::eot_found 0
LB::detach
}
}
After adding the "log" to "SERVER_CONNECTED" event I get the following error in the log file. Without this line no errors were logged.
TCL error: - Error: No clientside connection established (line 6) invoked from within "IP::client_addr"
Why would doing a LB detach effect the client side connection ?
Thanks
Tiaan