diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index d3fd37045dba8bfb96b51f76ca91c13d44a2e666..73b7eeb4165ae5c2b9389a1063b176fbe55243a1 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -9047,7 +9047,8 @@ static struct sip_pvt *find_call(struct sip_request *req, struct ast_sockaddr *a
 		}
 	}
 
-	if (!sip_cfg.pedanticsipchecking) {
+	/* match on callid only for REGISTERs */
+	if (!sip_cfg.pedanticsipchecking || req->method == SIP_REGISTER) {
 		struct sip_pvt tmp_dialog = {
 			.callid = callid,
 		};