MCPcopy Create free account
hub / github.com/OpenSIPS/opensips / ospRecordCode

Function ospRecordCode

modules/osp/destination.c:386–451  ·  view source on GitHub ↗

* Record destination status * param code Destination status * param dest Destination */

Source from the content-addressed store, hash-verified

384 * param dest Destination
385 */
386static void ospRecordCode(
387 int code,
388 osp_dest* dest)
389{
390 struct usr_avp* destmediaavp = NULL;
391 int_str destmediaval;
392
393 LM_DBG("code '%d'\n", code);
394 dest->lastcode = code;
395
396 switch (code) {
397 case 100:
398 if (!dest->time100) {
399 dest->time100 = time(NULL);
400 } else {
401 LM_DBG("100 already recorded\n");
402 }
403 break;
404 case 180:
405 case 181:
406 case 182:
407 case 183:
408 if (!dest->time180) {
409 dest->time180 = time(NULL);
410
411 if (!dest->endtime) {
412 dest->endtime = time(NULL);
413 } else {
414 LM_DBG("180, 181, 182 or 183 end already recorded\n");
415 }
416 } else {
417 LM_DBG("180, 181, 182 or 183 already recorded\n");
418 }
419 break;
420 case 200:
421 case 202:
422 if (!dest->time200) {
423 dest->time200 = time(NULL);
424
425 if ((_osp_destmedia_avpid >= 0) &&
426 ((destmediaavp = search_first_avp(_osp_destmedia_avptype, _osp_destmedia_avpid, &destmediaval, 0)) != NULL) &&
427 (destmediaavp->flags & AVP_VAL_STR) && (destmediaval.s.s && destmediaval.s.len))
428 {
429 snprintf(dest->destmedia, sizeof(dest->destmedia), "%.*s", destmediaval.s.len, destmediaval.s.s);
430 } else {
431 dest->destmedia[0] = '\0';
432 }
433 } else {
434 LM_DBG("200 or 202 already recorded\n");
435 }
436 break;
437 case 408:
438 case 487:
439 if (!dest->endtime) {
440 dest->endtime = time(NULL);
441 } else {
442 LM_DBG("408 or 487 end already recorded\n");
443 }

Callers 1

ospRecordEventFunction · 0.85

Calls 1

search_first_avpFunction · 0.85

Tested by

no test coverage detected