diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 64327285893eac842bfb2b3ba7c610b441bf1bb4..9add425649fc6df7ecc51fd04d493133c266a445 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -30466,6 +30466,17 @@ static struct ast_channel *sip_request_call(const char *type, struct ast_format_
 		ast_string_field_set(p, todnid, dnid);
 	}
 
+	/* If stripping the DNID left us with nothing, bail out */
+	if (ast_strlen_zero(tmp)) {
+		dialog_unlink_all(p);
+		dialog_unref(p, "unref dialog p from bad destination");
+		*cause = AST_CAUSE_DESTINATION_OUT_OF_ORDER;
+		if (callid) {
+			ast_callid_unref(callid);
+		}
+		return NULL;
+	}
+
 	/* Divvy up the items separated by slashes */
 	AST_NONSTANDARD_APP_ARGS(args, tmp, '/');