I think this bug is harmless, in that we don't actually rely on circ->cpath->extend_info->identity_digest being non-zero (i.e. not all zeros) for the things that we call.
But it would be good to get a second set of eyes on this conclusion. :)
I think you're right: the only call here that matters is connection_ap_fail_onehop(), which will get called with failed_digest set to an all-zero identity. And if that happens, and the digest matches, we will still compare on address:port instead, since we check for digest_is_zero().
Because of that check in connection_ap_fail_onehop(), I think we should just remove the test here. I'm turning it into an assertion, and renaming the variable a bit.