diff --git a/libs/iax/src/iax.c b/libs/iax/src/iax.c
index 12e8289c50..0639f2effb 100644
--- a/libs/iax/src/iax.c
+++ b/libs/iax/src/iax.c
@@ -1586,7 +1586,7 @@ static struct iax_event *handle_event(struct iax_event *event)
 			case IAX_EVENT_POKE:
 				event->etype = IAX_EVENT_PONG;
 				iax_send_pong(event->session, event->ts);
-				destroy_session(event->session);
+				iax_destroy(event->session);
 				iax_event_free(event);
 				break;         
 			default:
@@ -2683,7 +2683,8 @@ static struct iax_event *iax_header_to_event(struct iax_session *session,
 			case IAX_COMMAND_POKE:
 				e->etype = IAX_EVENT_POKE;
 				e->ts = ts;
-				break;			case IAX_COMMAND_PING:
+				break;
+			case IAX_COMMAND_PING:
 				/* PINGS and PONGS don't get scheduled; */
 				e->etype = IAX_EVENT_PING;
 				e->ts = ts;
@@ -2718,6 +2719,14 @@ static struct iax_event *iax_header_to_event(struct iax_session *session,
 				}
 				e = schedule_delivery(e, ts, updatehistory);
 				break;
+			case IAX_COMMAND_REGREQ:
+				e->etype = IAX_EVENT_REGREQ;
+				e = schedule_delivery(e, ts, updatehistory);
+				break;
+			case IAX_COMMAND_REGREL:
+				e->etype = IAX_EVENT_REGREQ;
+				e = schedule_delivery(e, ts, updatehistory);
+				break;
 			case IAX_COMMAND_REGACK:
 				e->etype = IAX_EVENT_REGACK;
 				e = schedule_delivery(e, ts, updatehistory);
diff --git a/src/mod/endpoints/mod_iax/mod_iax.c b/src/mod/endpoints/mod_iax/mod_iax.c
index 417484e137..ecb12e5c8b 100644
--- a/src/mod/endpoints/mod_iax/mod_iax.c
+++ b/src/mod/endpoints/mod_iax/mod_iax.c
@@ -1036,6 +1036,12 @@ SWITCH_MOD_DECLARE(switch_status_t) switch_module_runtime(void)
 			case IAX_EVENT_REGREJ:
 				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Registration failed.\n");
 				break;
+			case IAX_EVENT_REGREQ:
+				/* what is the right way to handle this? */
+				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Registration request ignored, not implemented.\n");
+				iax_destroy(iaxevent->session);
+				iaxevent->session = NULL;
+				break;
 			case IAX_EVENT_TIMEOUT:
 				break;
 			case IAX_EVENT_ACCEPT: