* Record destination status * param code Destination status * param dest Destination */
| 384 | * param dest Destination |
| 385 | */ |
| 386 | static 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 | } |
no test coverage detected