Forum Discussion
Problem with Exchange iRule after 11.2 upgrade
Hello,
I need some help determining what this error message means that has shown up in my logs since upgrading to 11.2.
Error Message status code 01220001:
TCL error: /Common/EXT_MIN_EXCH_2010_SINGLE_PERSIST - attempt to use empty persistence key (line 1) invoked from within "persist uie [HTTP::header "OutlookSession"] 3600" ("MSRPC" arm line 3) invoked from within "switch -glob [HTTP::header "User-Agent"] { "MSRPC" { if { [HTTP::cookie exists "OutlookSession"] } { persist uie [HTTP::header "Outlook..." ("/rpc/rpcproxy.dll" arm line 2) invoked from within "switch -glob [HTTP::path] { "/Microsoft-Server-ActiveSync*" { persist cookie pool EXT_MIN_EXCH_2010_SINGLE_AS } "/rpc/rpcproxy.dll" { s..."
This message is in reference to the IRule we use for exchange that worked in 10.2.4 and 10.2.0:
when HTTP_REQUEST priority 600 {
switch -glob [HTTP::path] {
"/Microsoft-Server-ActiveSync*" {
persist cookie
pool EXT_MIN_EXCH_2010_SINGLE_AS
}
"/rpc/rpcproxy.dll" {
switch -glob [HTTP::header "User-Agent"] {
"MSRPC" {
if { [HTTP::cookie exists "OutlookSession"] } {
persist uie [HTTP::header "OutlookSession"] 3600
} else {
persist uie [HTTP::header "Authorization"] 3600
}
}
"*Microsoft Office*" {
persist uie [HTTP::header "Authorization"] 3600
}
default {
persist source_addr
}
}
pool EXT_MIN_EXCH_2010_SINGLE_OA
}
"/autodiscover/autodiscover.aspx" {
persist cookie
pool EXT_MIN_EXCH_2010_SINGLE_OWA
}
default {
persist cookie
pool EXT_MIN_EXCH_2010_SINGLE_OWA
}
}
}
I am assuming it is a syntax issue with the new version of firmware, but I am not the expert! Can someone please assist?
Thanks,
Megan Smith
13 Replies
- Chris_Miller
Altostratus
https://devcentral.f5.com/Community/GroupDetails/tabid/1082223/asg/62/aft/2163851/showtab/groupforums/Default.aspx
Changepersist uie [HTTP::header "OutlookSession"] 3600
topersist uie [HTTP::cookie "OutlookSession"] 3600 - hoolio
Cirrostratus
It would be slightly more precise to change this:
if { [HTTP::cookie exists "OutlookSession"] } {
persist uie [HTTP::header "OutlookSession"] 3600
} else {
to:
if { [HTTP::cookie value "OutlookSession" ne ""] } {
persist uie [HTTP::cookie value "OutlookSession" 3600
} else {
HTTP::cookie value $cookie_name will return a null string if the cookie isn't set. So checking if [HTTP::cookie value "OutlookSession"] isn't null will avoid a runtime TCL error if the cookie isn't set or isn't set with a value.
Aaron - Gabriel_Calleja
Nimbostratus
Hi I have the same issue but my iRUle is
when HTTP_REQUEST {
if { [HTTP::header "User-Agent"] contains "MSRPC" } {
persist uie [HTTP::header "Authorization"] 3600
}
}
and my log is
Oct 18 03:51:21 tmm1 err tmm1[7435]: 01220001:3: TCL error: /Common/OutlookAnywherePersistRule - attempt to use empty persistence key (line 2) invoked from within "persist uie [HTTP::header "Authorization"] 3600"
can you help me ?? - Gabriel_Calleja
Nimbostratus
I have the same issue but my iRUle is
when HTTP_REQUEST {
if { [HTTP::header "User-Agent"] contains "MSRPC" } {
persist uie [HTTP::header "Authorization"] 3600
}
}
and my log is
Oct 18 03:51:21 tmm1 err tmm1[7435]: 01220001:3: TCL error: /Common/OutlookAnywherePersistRule - attempt to use empty persistence key (line 2) invoked from within "persist uie [HTTP::header "Authorization"] 3600"
Can you help me??
Gabriel
- Aaron_Forster_3Historic F5 AccountJust hit this issue myself. Looks like this user had a slightly different version than the one most of the rest of us hit an issue with. I'd change it to this. if { [HTTP::header "User-Agent"] contains "MSRPC" } { if { [HTTP::cookie value "OutlookSession"] ne "" } { persist uie [HTTP::cookie value "OutlookSession"] 3600 } else { persist uie [HTTP::header "Authorization"] 3600 } }
- What_Lies_Bene1
Cirrostratus
You might want to check for the existence of that before trying to persist on it's value. - Gabriel_Calleja
Nimbostratus
butit worksinversion10.2.0and11.2.0versionnot?in version10.2.0andifthat valuewasin version11.2.0andcan not find it.Change anythinginthe sentence?The configuration in verion 10.2.0 was:
virtual vs_exch_oa {
snatpool snat_cas
pool exch_oa_https
destination 10.112.8.30:https
ip protocol tcp
persist exch_oa_persist
profiles {
exch_oa_clientssl {
clientside
}
exch_oa_http {}
exch_oa_serverssl {
serverside
}
exch_oa_tcp {}
}
}
profile persist exch_oa_persist {
defaults from universal
mode universal
timeout 3600
rule OutlookAnywherePersistRule
}
rule OutlookAnywherePersistRule {
when HTTP_REQUEST {
if { [HTTP::header "User-Agent"] contains "MSRPC" } {
persist uie [HTTP::header "Authorization"] 3600
}
}
}now when i upgrade the BIGIP version to 11.2.0 the configuration was:
ltm virtual /Common/vs_exch_oa {
destination /Common/10.112.8.30:443
ip-protocol tcp
mask 255.255.255.255
persist {
/Common/exch_oa_persist {
default yes
}
}
pool /Common/exch_oa_https
profiles {
/Common/exch_oa_clientssl {
context clientside
}
/Common/exch_oa_http { }
/Common/exch_oa_serverssl {
context serverside
}
/Common/exch_oa_tcp { }
}
snatpool /Common/snat_cas
translate-address enabled
translate-port enabled
vlans-disabled
}
ltm persistence universal /Common/exch_oa_persist {
app-service none
defaults-from /Common/universal
rule /Common/OutlookAnywherePersistRule
timeout 3600
}
ltm rule /Common/OutlookAnywherePersistRule {
when HTTP_REQUEST {
if { [HTTP::header "User-Agent"] contains "MSRPC" } {
persist uie [HTTP::header "Authorization"] 3600
}
}
}Thanks for your help.
- What_Lies_Bene1
Cirrostratus
I can't explain that I'm afraid but perhaps you can add some logging at each step to check what's happening? - bman_12685
Nimbostratus
I have the same issue, logging each step it is specifcially the session part
switch -glob [HTTP::header "User-Agent"] {
"MSRPC" {
This User-Agent section matches most versions of
Outlook and Windows using Outlook Anywhere.
The OutlookSession cookie is new to Outlook 2010.
check to see if some stupid app is not setting a cookie
if { [HTTP::cookie exists "OutlookSession"] } {
persist uie [HTTP::header "OutlookSession"] 3600
} else {
persist uie [HTTP::header "Authorization"] 3600
}
}
which dumps these sort of errors
Apr 23 11:26:52 tmm3 info tmm3[9414]: Rule /Common/pgops_exchange_persist : RPCPROXY CALL from 65.55.150.158 - x.x.x.x sending to exchange_oa_pool.
Apr 23 11:26:52 tmm3 err tmm3[9414]: 01220001:3: TCL error: /Common/pgops_exchange_persist - attempt to use empty persistence key (line 1) invoked from within "persist uie [HTTP::header "Authorization"] 3600" ("MSRPC" arm line 10) invoked from within "switch -glob [HTTP::header "User-Agent"] { "MSRPC" { This User-Agent section matches most versions of ..." ("/rpc/rpcproxy.dll" arm line 5) invoked from within "switch -glob [HTTP::path] { "/Microsoft-Server-ActiveSync*" { Direct all ActiveSync clients to a common pool; use ..."
Apr 23 11:26:52 tmm2 info tmm2[9413]: Rule /Common/pgops_exchange_persist : RPCPROXY CALL from 65.55.150.158 - x.x.x.x sending to exchange_oa_pool.
Apr 23 11:26:52 tmm2 err tmm2[9413]: 01220001:3: TCL error: /Common/pgops_exchange_persist - attempt to use empty persistence key (line 1) invoked from within "persist uie [HTTP::header "Authorization"] 3600" ("MSRPC" arm line 10) invoked from within "switch -glob [HTTP::header "User-Agent"] { "MSRPC" { This User-Agent section matches most versions of ..." ("/rpc/rpcproxy.dll" arm line 5) invoked from within "switch -glob [HTTP::path] { "/Microsoft-Server-ActiveSync*" { Direct all ActiveSync clients to a common pool; use ..."
If I comment that section out completly it of course gives me
Apr 22 10:40:16 tmm err tmm[9411]: 01220001:3: TCL error: /Common/exchange_owa_redirect - Prerequisite operation not in progress (line 1) invoked from within "HTTP::uri" - bman_12685
Nimbostratus
added more logging to see that the cookie is null, so I set it to what it was looking for to debug
HTTP::cookie insert name "OutlookSession" value [HTTP::cookie value "" ]
that now gives me
Apr 23 11:57:26 tmm3 info tmm3[9414]: Rule /Common/pgops_exchange_persist : logging cookie name >OutlookSession<
Apr 23 11:57:26 tmm3 err tmm3[9414]: 01220001:3: TCL error: /Common/pgops_exchange_persist - attempt to use empty persistence key (line 1) invoked from within "persist uie [HTTP::header "OutlookSession"] 3600" ("MSRPC" arm line 12) invoked from within "switch -glob [HTTP::header "User-Agent"] { "MSRPC" { This User-Agent section matches most versions of ..." ("/rpc/rpcproxy.dll" arm line 4) invoked from within "switch -glob [HTTP::path] { "/Microsoft-Server-ActiveSync*" { Direct all ActiveSync clients to a common pool; use ..."
Apr 23 11:57:26 tmm2 info tmm2[9413]: Rule /Common/pgops_exchange_persist : logging cookie name >OutlookSession<
Apr 23 11:57:26 tmm2 err tmm2[9413]: 01220001:3: TCL error: /Common/pgops_exchange_persist - attempt to use empty persistence key (line 1) invoked from within "persist uie [HTTP::header "OutlookSession"] 3600" ("MSRPC" arm line 12) invoked from within "switch -glob [HTTP::header "User-Agent"] { "MSRPC" { This User-Agent section matches most versions of ..." ("/rpc/rpcproxy.dll" arm line 4) invoked from within "switch -glob [HTTP::path] { "/Microsoft-Server-ActiveSync*" { Direct all ActiveSync clients to a common pool; use - bman_12685
Nimbostratus
OK for me this is resolved
I resolved this by stepping through each part of the irule that the IAPP had created and adding logging and disabling sections in it.
My fix was
for the /rpc/rpcproxy.dll section disable assignment of a pool
also in the final segment which is where the request ended up disabling
------------------------------------
CACHE::disable
HTTP::disable
COMPRESS::disable
Recent Discussions
Related Content
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com
