[commit] r5163 - in freeswitch/trunk: libs/iax/src src/mod/endpoints/mod_iax
Author: mikej Date: Fri May 11 22:40:32 2007 New Revision: 5163 Modified: freeswitch/trunk/libs/iax/src/iax-client.h freeswitch/trunk/libs/iax/src/iax.c freeswitch/trunk/src/mod/endpoints/mod_iax/mod_iax.c Log: inital stubs for a few inbound reg helper functions. prototypes likely to change. Modified: freeswitch/trunk/libs/iax/src/iax-client.h ============================================================================== --- freeswitch/trunk/libs/iax/src/iax-client.h (original) +++ freeswitch/trunk/libs/iax/src/iax-client.h Fri May 11 22:40:32 2007 @@ -162,6 +162,9 @@ extern int iax_send_ping(struct iax_session *session); extern int iax_load_complete(struct iax_session *session); extern int iax_reject(struct iax_session *session, char *reason); +int iax_reject_registration(struct iax_session *session, char *reason); +int iax_ack_registration(struct iax_session *session); +int iax_auth_registration(struct iax_session *session); extern int iax_busy(struct iax_session *session); extern int iax_congestion(struct iax_session *session); extern int iax_hangup(struct iax_session *session, char *byemsg); Modified: freeswitch/trunk/libs/iax/src/iax.c ============================================================================== --- freeswitch/trunk/libs/iax/src/iax.c (original) +++ freeswitch/trunk/libs/iax/src/iax.c Fri May 11 22:40:32 2007 @@ -1255,7 +1255,11 @@ #endif int r; r = __send_command(i, type, command, ts, data, datalen, seqno, 0, 0, 1, 0); - if (r >= 0) destroy_session(i); + if (r >= 0) { + iax_mutex_lock(session_mutex); + destroy_session(i); + iax_mutex_unlock(session_mutex); + } return r; } @@ -1669,6 +1673,24 @@ return res; } +int iax_reject_registration(struct iax_session *session, char *reason) +{ + struct iax_ie_data ied; + memset(&ied, 0, sizeof(ied)); + iax_ie_append_str(&ied, IAX_IE_CAUSE, reason ? (unsigned char *) reason : (unsigned char *) "Unspecified"); + return send_command_final(session, AST_FRAME_IAX, IAX_COMMAND_REGREJ, 0, ied.buf, ied.pos, -1); +} + +int iax_ack_registration(struct iax_session *session) +{ + return send_command_final(session, AST_FRAME_IAX, IAX_COMMAND_REGACK, 0, NULL, 0, -1); +} + +int iax_auth_registration(struct iax_session *session) +{ + return send_command_final(session, AST_FRAME_IAX, IAX_COMMAND_REGAUTH, 0, NULL, 0, -1); +} + int iax_reject(struct iax_session *session, char *reason) { struct iax_ie_data ied; Modified: freeswitch/trunk/src/mod/endpoints/mod_iax/mod_iax.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_iax/mod_iax.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_iax/mod_iax.c Fri May 11 22:40:32 2007 @@ -1038,9 +1038,7 @@ break; case IAX_EVENT_REGREQ: /* what is the right way to handle this? */ - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Registration request ignored, not implemented.\n"); - iax_destroy(iaxevent->session); - iaxevent->session = NULL; + iax_reject_registration(iaxevent->session, NULL); break; case IAX_EVENT_TIMEOUT: break;
participants (1)
-
Freeswitch SVN