Bug ID 589118: Horizon View client throws an exception when connecting to Horizon 7 VCS through APM.

Last Modified: Sep 13, 2023

Affected Product(s):
BIG-IP APM(all modules)

Known Affected Versions:
11.5.1 HF1, 11.5.1 HF2, 11.5.1 HF3, 11.5.1 HF4, 11.5.1 HF5, 11.5.1 HF6, 11.5.1 HF7, 11.5.1 HF8, 11.5.1 HF9, 11.5.1 HF10, 11.5.1 HF11, 11.5.2 HF1, 11.5.3 HF1, 11.5.3 HF2, 11.5.4 HF1, 11.5.4 HF2, 11.5.4 HF3, 11.5.4 HF4, 11.5.4, 11.5.5, 11.5.6, 11.5.7, 11.5.8, 11.5.9, 11.5.10, 12.0.0, 12.0.0 HF1, 12.1.0 HF1, 12.0.0 HF2, 12.1.0 HF2, 12.0.0 HF3, 12.0.0 HF4, 12.1.1 HF1, 12.1.1 HF2, 12.1.2 HF1, 12.1.2 HF2

Fixed In:
11.6.1 HF1

Opened: Apr 22, 2016

Severity: 3-Major

Related Article: K81314569

Symptoms

If APM is configured as PCoIP proxy against Horizon 7 VCS, the Horizon View client fails to retrieve the list of entitlements with an exception written in its logs.

Impact

Horizon View client cannot be used with APM to access Horizon 7.

Conditions

APM as PCoIP proxy for Horizon 7 View Connection Server.

Workaround

You can use the following iRule to update the broker protocol version returned by APM to be 11.0 instead of 9.0. when HTTP_REQUEST { if { [HTTP::header "Origin"] ne "" } { HTTP::header remove "Origin" } if { [ HTTP::method ] == "POST" && [ HTTP::uri ] == "/broker/xml" } { set BROKER_REQUEST 1 HTTP::collect [HTTP::header Content-Length] } } when HTTP_REQUEST_DATA { if { [ info exists BROKER_REQUEST ] && [ regexp {<have-authentication-types[ \t\r\n]*>[ \t\r\n]*<name[ \t\r\n]*>[ \t\r\n]*saml[ \t\r\n]*</name>[ \t\r\n]*</have-authentication-types>} [HTTP::payload] ] } { HTTP::respond 200 content {<?xml version="1.0" encoding="UTF-8"?><broker version="11.0"><set-locale><result>ok</result></set-locale><configuration><result>ok</result><broker-guid>1</broker-guid><authentication><screen><name>saml</name><params></params></screen></authentication></configuration></broker>} Content-Type text/xml } } when HTTP_RESPONSE { if { ! [ IP::addr [ IP::remote_addr ] equals 127.0.0.0/8 ] } { return } set BROKER_RESPONSE 1 set content_length 0 if {[HTTP::header "Content-Length"] ne "" && [HTTP::header "Content-Length"] <= 1048576}{ set content_length [HTTP::header "Content-Length"] } else { set content_length 1048576 } # Check if $content_length is not set to 0 if { $content_length > 0} { HTTP::collect $content_length } } when HTTP_RESPONSE_DATA { if { ! [ info exists BROKER_REQUEST ] || ! [ info exists BROKER_RESPONSE ] } { return } regsub "<broker version=\"9.0\">" [HTTP::payload] "<broker version=\"11.0\">" payload HTTP::payload replace 0 [HTTP::payload length] $payload HTTP::release }

Fix Information

Horizon View client can now be used with APM to access Horizon 7.

Behavior Change

Guides & references

K10134038: F5 Bug Tracker Filter Names and Tips