diff --git a/channels/chan_mgcp.c b/channels/chan_mgcp.c
index 644e7b787f1edd5706f10004839a70419da7e9f9..083c0e3e2588cc78a306abc9e6b7ee609ce442a1 100644
--- a/channels/chan_mgcp.c
+++ b/channels/chan_mgcp.c
@@ -3431,8 +3431,9 @@ static void *do_monitor(void *data)
 			ast_verb(1, "Reloading MGCP\n");
 			reload_config(1);
 			/* Add an I/O event to our UDP socket */
-			if (mgcpsock > -1) 
+			if (mgcpsock > -1 && !mgcpsock_read_id) {
 				mgcpsock_read_id = ast_io_add(io, mgcpsock, mgcpsock_read, AST_IO_IN, NULL);
+			}
 		}
 
 		/* Check for interfaces needing to be killed */