Technical Forum
Ask questions. Discover Answers.
cancel
Showing results for 
Search instead for 
Did you mean: 

HTTP:uri in HTTP_Request error (not supported)

Ingo
Nimbostratus
Nimbostratus

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

4 REPLIES 4

Hi  ,

Do you have any other iRules on the same vServer ?

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

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 🙂

Paulius
MVP
MVP

@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]]
    }

}