Today I learned that the directory XML file used by the Cisco 7960G IP phone doesn’t work from all web servers. It seems that the 7960G is fussy about which HTTP response codes it accepts, and that an HTTP 200 response might not be the correct HTTP 200 response.
Hosting the directory XML file on one web server caused endless “BTXML Error” messages at the top of the phone’s display and “404” at the bottom of the display, but moving the file to another web server caused the directory entries to be displayed successfully.
In this instance the non-working web server was uhttpd on OpenWRT/LEDE 17.01.4, and the working web server was apache2 on a Western Digital My Book Live with firmware 02.43.10-048.
This was with the 7960G SIP firmware version 8.12(0); I haven’t checked if older SIP firmware for this phone exhibits the same symptoms.