[Freeswitch-svn] [commit] r7965 - freeswitch/trunk/src/mod/endpoints/mod_sofia
Freeswitch SVN
anthm at freeswitch.org
Tue Mar 25 18:06:48 EDT 2008
Author: anthm
Date: Tue Mar 25 18:06:48 2008
New Revision: 7965
Modified:
freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c
freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h
freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c
Log:
add optional call_id arg to sofia profile foo flush_inbound_reg [<call_id>]
Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c (original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c Tue Mar 25 18:06:48 2008
@@ -1325,10 +1325,16 @@
stream->write_function(stream, "Invalid Profile [%s]", switch_str_nil(profile_name));
return SWITCH_STATUS_SUCCESS;
}
-
+
if (!strcasecmp(argv[1], "flush_inbound_reg")) {
- sofia_reg_check_expire(profile, 0);
- stream->write_function(stream, "+OK\n");
+ if (argc > 2) {
+ sofia_reg_expire_call_id(profile, argv[2]);
+ stream->write_function(stream, "+OK flushing all registrations matching specified call_id\n");
+ } else {
+ sofia_reg_check_expire(profile, 0);
+ stream->write_function(stream, "+OK flushing all registrations\n");
+ }
+
goto done;
}
@@ -1542,7 +1548,7 @@
const char *usage_string = "USAGE:\n"
"--------------------------------------------------------------------------------\n"
"sofia help\n"
- "sofia profile <profile_name> [start|stop|restart|flush_inbound_reg|[register|unregister] [<gateway name>|all]] [reloadxml]\n"
+ "sofia profile <profile_name> [start|stop|restart|flush_inbound_reg [<call_id>]|[register|unregister] [<gateway name>|all]] [reloadxml]\n"
"sofia status [[profile | gateway] <name>]\n"
"sofia loglevel [0-9]\n"
"--------------------------------------------------------------------------------\n";
Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h (original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h Tue Mar 25 18:06:48 2008
@@ -602,3 +602,4 @@
void sofia_glue_tech_patch_sdp(private_object_t *tech_pvt);
switch_status_t sofia_glue_tech_proxy_remote_addr(private_object_t *tech_pvt);
void sofia_presence_event_thread_start(void);
+void sofia_reg_expire_call_id(sofia_profile_t *profile, const char *call_id);
Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c (original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c Tue Mar 25 18:06:48 2008
@@ -206,6 +206,24 @@
return 0;
}
+void sofia_reg_expire_call_id(sofia_profile_t *profile, const char *call_id)
+{
+ char sql[1024];
+ char *psql = sql;
+
+ switch_snprintf(sql, sizeof(sql), "select *,'%s' from sip_registrations where call_id='%s'", profile->name, call_id);
+ switch_mutex_lock(profile->ireg_mutex);
+ sofia_glue_execute_sql_callback(profile,
+ SWITCH_TRUE,
+ NULL,
+ sql,
+ sofia_reg_del_callback,
+ NULL);
+ switch_mutex_unlock(profile->ireg_mutex);
+
+ switch_snprintf(sql, sizeof(sql), "delete from sip_registrations where call_id='%s'", call_id);
+ sofia_glue_execute_sql(profile, &psql, SWITCH_FALSE);
+}
void sofia_reg_check_expire(sofia_profile_t *profile, time_t now)
{
More information about the Freeswitch-svn
mailing list