It looks like you're closer...let's see if I can help a little.
You're going to want only one switch per header, otherwise you're going to run into issues, especially since you're using redirects and return statements. Try condensing these a bit, like:
when HTTP_REQUEST {
switch -glob [HTTP::header User-Agent] {
"*hiptop*" -
"*AvantGo*" -
"*Danger*" {
HTTP::redirect "http://wap.vendor.com/partnergenericURL-D"
return
}
}
switch -glob [HTTP::header Accept] {
"*vnd.wap.xhtml+xml*" -
"*vnd.rim.html*" {
HTTP::redirect "http://wap.vendor.com/partnergenericURL-C"
return
}
"*vnd.wap.html*" {
HTTP::redirect "http://wap.vendor.com/partnergenericURL-B"
return
}
"*text/vnd.wap.wml*" {
HTTP::redirect "http://wap.vendor.com/partnergenericURL-A"
return
}
}
if { [matchclass [string tolower [HTTP::uri] ] starts_with $::ot_recover] > 0 } {
pool OLD_WEB_POOL
} else {
pool WEB_POOL
}
}
That's a good first step in troubleshooting, anyway. If you still have problems, at least the logic will be a bit more condensed and you won't have to worry about the other switch statements not being evaluated.
HTH,
Colin