Senator McCain has given a damn fine speech.