diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 49e0bef364759a83a0c7e5364547acc92337b11d..f43a8d435d45fc0d84be5f8871386f509e9c9c51 100755
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -5070,7 +5070,10 @@ static void handle_response(struct sip_pvt *p, int resp, char *rest, struct sip_
 				}
 				/* XXX Locking issues?? XXX */
 				switch(resp) {
+				case 300: /* Multiple Choices */
+				case 301: /* Moved permenantly */
 				case 302: /* Moved temporarily */
+				case 305: /* Use Proxy */
 					parse_moved_contact(p, req);
 					if (p->owner)
 						ast_queue_control(p->owner, AST_CONTROL_BUSY, 0);