Dietmar_Moltner
Feb 23, 2015Nimbostratus
TCL error on iRule-based logout logic
Dear all,
I am facing a very strange exception in one our iRules which is dealing with generic logout on our virtuals
The iRule:
when RULE_INIT {
set static::LOGOUT_URI "/logout"
set static::LOGOUT_COOKIE_EXCLUDE {"BIGip_SSO_"}
}
when HTTP_REQUEST {
if {[HTTP::uri] starts_with $static::LOGOUT_URI} {
set cookieResponse "Connection Close "
Iterate over all cookies
foreach cookieName [HTTP::cookie names] {
if {$cookieName ne ""} {
foreach excludeCookieName $static::LOGOUT_COOKIE_EXCLUDE {
if {$cookieName starts_with $excludeCookieName} {
} else {
set cookieValue [HTTP::cookie $cookieName]
if {$cookieValue ne ""} {
set cookieResponse "$cookieResponse\"Set-Cookie\" \"[call /Common/RBUTIL::get_expired_cookiestring $cookieName]\" "
set cookieResponse "$cookieResponse\"Set-Cookie\" \"[call /Common/RBUTIL::get_expired_cookiestring $cookieName [HTTP::host] 0]\" "
set cookieResponse "$cookieResponse\"Set-Cookie\" \"[call /Common/RBUTIL::get_expired_cookiestring $cookieName 0 0]\" "
set cookieResponse "$cookieResponse\"Set-Cookie\" \"[call /Common/RBUTIL::get_expired_cookiestring $cookieName 0]\" "
}
}
}
}
}
if { $debugLevel > 1} { log local0.debug "$logPrefix Cookie logout sequence: $cookieResponse" }
eval HTTP::respond 200 $cookieResponse
unset cookieResponse
return
}
}
In most cases the iRule completes without any issues, but sometimes I receive the following error in ltm log:
Illegal argument. Missing argument (line 1) invoked from within "HTTP::cookie $cookieName" ("foreach" body line 4) invoked from within "foreach excludeCookieName $static::LOGOUT_COOKIE_EXCLUDE { if {$cookieName starts_with $excludeCookieName} { } else { set cookieVa..." ("foreach" body line 3) invoked from within "foreach cookieName [HTTP::cookie names] { if {$cookieName ne ""} { foreach excludeCookieName $static::LOGOUT_COOKIE_EXCLUDE { if {$cook..."
Any ideas on that? Thx