Here's a revised rule using tables. Please note that you might want to change the key from "alertSent" to something more unique as the tables are global (in order to ensure maximum performance).
when HTTP_REQUEST {
if {[active_members [LB::server pool]] < 1 } {
if { [table lookup "alertSent"] == "" } {
set conn [connect -timeout 100 -idle 30 -status conn_status x.x.x.x:x]
set postdata "POST /whatever/whatever/ HTTP/1.1\r\n"
append postdata "Content-Type: application/json;charset=UTF-8\r\n"
append postdata "Accept: */*\r\n"
append postdata "Host: x.x.x.x:x\r\n"
append postdata "accept-encoding: gzip, deflate\r\n"
append postdata "content-length: $jsonlen\r\n\r\n"
set send_info [send -timeout 100 -status send_status $conn $postdata]
set recv_2kbytes [recv -timeout 300 20 $conn]
set length_recv [string length $recv_2kbytes]
close $conn
table set "alertSent" "1" indef indef
}
} else {
table set "alertSent" "" indef indef
}
}
Now, may I please have my answer back? 🙂