02-Aug-2021 01:06
Hello,
we are using the below simple irule since years. However, with version 14.x.x or so there started an error to show up in the LTM log - also the irule seems to it's job anyway. I found an F5 document saying HTTP::uri is not allowed within HTTP_REQUEST.
I have to admit i am not god with this stuff, could someone please help to get that into an other syntax that does not through an error.
rule (simply removes the /80 from the URI):
when HTTP_REQUEST {
HTTP::uri [string map {/80/_vti_bin/Webs.asmx /_vti_bin/Webs.asmx} [HTTP::uri]]
}
error:
TCL error: /Common/alfresco_acrobat_fix <HTTP_REQUEST> - Can't call after responding - ERR_NOT_SUPPORTED (line 1) invoked from within "HTTP::uri"
Many thanks,
Ingo
02-Aug-2021
01:49
- last edited on
24-Mar-2022
01:04
by
li-migration
Hi ,
Do you have any other iRules on the same vServer ?
02-Aug-2021 01:55
Hi @Ingo,
there is a change in behavior in 14.1. Please see:
K23237429: TCL error: ERR_NOT_SUPPORTED after upgrade to version 14.1.0 or later.
Try to add a if {[HTTP::has_responded]} to your iRule, as described here: https://clouddocs.f5.com/api/irules/HTTP__has_responded.html
This should fix your issue.
KR
Daniel
29-Nov-2022 06:17 - edited 29-Nov-2022 06:34
Dear Daniel,
thanks for the change in behavior link. I ran into this issue during our update yesterday evening from 13.1.5 to 15.1.8 as well. There were two different iRules in place, which both have a redirect command including a HTTP::uri condition. Connection was reset in the browser as stated in the article and the error count of the second iRule increased.
I could solve the issue by consolidating both iRules into one and separate its content with if-statements.
Now I know the reason 😉
But I don't find any hint in the release notes of version 14.1.0 for this. Or did I look at the wrong place? Just for future updates to avoid any issues due to behavior changes. I mean it makes no sense to check all relevant release notes, if not all behavior changes are included.
Regards Stefan 🙂
11-Jan-2023 12:03
@Ingo This might work for you.
when HTTP_REQUEST {
if {[HTTP::uri] == "/80/_vti_bin/Webs.asmx"} {
HTTP::uri [string map {"/80/_vti_bin/Webs.asmx" "/_vti_bin/Webs.asmx"} [HTTP::uri]]
}
}