Lync client to IP phone call disconnects when answered (52001;reason="Client side general processing error.")
I recently had a case were calls from the Lync client to IP phones registered to Lync began failing. Calls from the phone to a Lync client, or phone to phone, never fail. This was odd because it had been working fine for months. Upon inspection of the client logs we saw the reason "52001;reason="Client side general processing error."". This is an ambiguous error and upon reviewing the rest of the SIP trace, it may not be clear as to what the cause is.
I found that the phones candidate list contained 2 edge IP addresses as part of the same pair. This caused the client to error out and cancel the call.
How do we fix this? The Lync client is not doing this, why is the phone???
It turns out that there are hardware load balancers in use here for the 2 edge servers. Affinity\persistence for the internal edge VIP was not configured. This was not a problem for months because the load balancing method was wrong. It was configured to reach a threshold before sending connections to the other edge server. When this was corrected, and the method was changed to "least connection", it exposed the affinity issue.
The Lync client is smart enough to never send 2 different addresses in the same candidate pair. Apparently, some of the IP phones are not. The IP phone also did not validate the candidate list before connecting the call. 2 IP phones could make calls to each other, even though they had 2 different IP's for the same candidate.
Configuring affinity\persistence on the VIP fixed the issue.