cgr_reqtype=*none to disable request processing in session manager

This commit is contained in:
DanB
2015-04-28 18:36:09 +02:00
parent 716249e4c9
commit 720a26f6ca
4 changed files with 22 additions and 0 deletions

View File

@@ -192,6 +192,9 @@ func (sm *FSSessionManager) unparkCall(uuid, connId, call_dest_nb, notify string
}
func (sm *FSSessionManager) onChannelPark(ev engine.Event, connId string) {
if ev.GetReqType(utils.META_DEFAULT) == utils.META_NONE { // Do not process this request
return
}
var maxCallDuration float64 // This will be the maximum duration this channel will be allowed to last
if err := sm.rater.GetDerivedMaxSessionTime(*ev.AsStoredCdr(), &maxCallDuration); err != nil {
engine.Logger.Err(fmt.Sprintf("<SM-FreeSWITCH> Could not get max session time for %s, error: %s", ev.GetUUID(), err.Error()))
@@ -214,6 +217,9 @@ func (sm *FSSessionManager) onChannelPark(ev engine.Event, connId string) {
}
func (sm *FSSessionManager) onChannelAnswer(ev engine.Event, connId string) {
if ev.GetReqType(utils.META_DEFAULT) == utils.META_NONE { // Do not process this request
return
}
if ev.MissingParameter() {
sm.DisconnectSession(ev, connId, MISSING_PARAMETER)
}
@@ -224,6 +230,9 @@ func (sm *FSSessionManager) onChannelAnswer(ev engine.Event, connId string) {
}
func (sm *FSSessionManager) onChannelHangupComplete(ev engine.Event) {
if ev.GetReqType(utils.META_DEFAULT) == utils.META_NONE { // Do not process this request
return
}
if sm.cdrs != nil {
go sm.ProcessCdr(ev.AsStoredCdr())
}

View File

@@ -49,6 +49,9 @@ func (self *KamailioSessionManager) onCgrAuth(evData []byte, connId string) {
if err != nil {
engine.Logger.Info(fmt.Sprintf("<SM-Kamailio> ERROR unmarshalling event: %s, error: %s", evData, err.Error()))
}
if kev.GetReqType(utils.META_DEFAULT) == utils.META_NONE { // Do not process this request
return
}
if kev.MissingParameter() {
if kar, err := kev.AsKamAuthReply(0.0, errors.New(utils.ERR_MANDATORY_IE_MISSING)); err != nil {
engine.Logger.Err(fmt.Sprintf("<SM-Kamailio> Failed building auth reply %s", err.Error()))
@@ -73,6 +76,9 @@ func (self *KamailioSessionManager) onCallStart(evData []byte, connId string) {
if err != nil {
engine.Logger.Err(fmt.Sprintf("<SM-Kamailio> ERROR unmarshalling event: %s, error: %s", evData, err.Error()))
}
if kev.GetReqType(utils.META_DEFAULT) == utils.META_NONE { // Do not process this request
return
}
if kamEv.MissingParameter() {
self.DisconnectSession(kamEv, "", utils.ERR_MANDATORY_IE_MISSING)
return
@@ -88,6 +94,9 @@ func (self *KamailioSessionManager) onCallEnd(evData []byte, connId string) {
if err != nil {
engine.Logger.Err(fmt.Sprintf("<SM-Kamailio> ERROR unmarshalling event: %s, error: %s", evData, err.Error()))
}
if kev.GetReqType(utils.META_DEFAULT) == utils.META_NONE { // Do not process this request
return
}
if kev.MissingParameter() {
engine.Logger.Err(fmt.Sprintf("<SM-Kamailio> Mandatory IE missing out of event: %+v", kev))
}

View File

@@ -162,6 +162,9 @@ func (osm *OsipsSessionManager) ProcessCdr(storedCdr *engine.StoredCdr) error {
// Process Authorize request from OpenSIPS and communicate back maxdur
func (osm *OsipsSessionManager) onAuthorize(osipsDagram *osipsdagram.OsipsEvent) {
ev, _ := NewOsipsEvent(osipsDagram)
if ev.GetReqType(utils.META_DEFAULT) == utils.META_NONE { // Do not process this request
return
}
if ev.MissingParameter() {
cmdNotify := fmt.Sprintf(":cache_store:\nlocal\n%s/cgr_notify\n%s\n2\n\n", ev.GetUUID(), utils.ERR_MANDATORY_IE_MISSING)
if reply, err := osm.miConn.SendCommand([]byte(cmdNotify)); err != nil || !bytes.HasPrefix(reply, []byte("200 OK")) {

View File

@@ -18,6 +18,7 @@ const (
META_PSEUDOPREPAID = "*pseudoprepaid"
RATED = "rated"
META_RATED = "*rated"
META_NONE = "*none"
ERR_NOT_IMPLEMENTED = "NOT_IMPLEMENTED"
ERR_SERVER_ERROR = "SERVER_ERROR"
ERR_NOT_FOUND = "NOT_FOUND"