Changeset 500 for pjproject/trunk/pjsip/src/pjsip/sip_transaction.c
- Timestamp:
- Jun 13, 2006 10:21:23 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjsip/src/pjsip/sip_transaction.c
r491 r500 1327 1327 1328 1328 /* 1329 * Set transaction status code and reason. 1330 */ 1331 static tsx_set_status_code(pjsip_transaction *tsx, 1332 int code, const pj_str_t *reason) 1333 { 1334 tsx->status_code = code; 1335 if (reason) 1336 pj_strdup(tsx->pool, &tsx->status_text, reason); 1337 else 1338 tsx->status_text = *pjsip_get_status_text(code); 1339 } 1340 1341 1342 /* 1329 1343 * Forcely terminate transaction. 1330 1344 */ … … 1342 1356 1343 1357 lock_tsx(tsx, &lck); 1344 tsx ->status_code = code;1358 tsx_set_status_code(tsx, code, NULL); 1345 1359 tsx_set_state( tsx, PJSIP_TSX_STATE_TERMINATED, PJSIP_EVENT_USER, NULL); 1346 1360 unlock_tsx(tsx, &lck); … … 1492 1506 if (!*cont) { 1493 1507 char errmsg[PJ_ERR_MSG_SIZE]; 1508 pj_str_t err; 1494 1509 1495 1510 tsx->transport_err = -sent; 1511 1512 err =pj_strerror(-sent, errmsg, sizeof(errmsg)); 1496 1513 1497 1514 PJ_LOG(4,(tsx->obj_name, 1498 1515 "Failed to send %s! err=%d (%s)", 1499 1516 pjsip_tx_data_get_info(send_state->tdata), -sent, 1500 pj_strerror(-sent, errmsg, sizeof(errmsg)).ptr));1517 errmsg)); 1501 1518 1502 1519 /* Clear pending transport flag. */ … … 1507 1524 1508 1525 /* Terminate transaction, if it's not already terminated. */ 1509 tsx ->status_code = PJSIP_SC_TSX_TRANSPORT_ERROR;1526 tsx_set_status_code(tsx, PJSIP_SC_TSX_TRANSPORT_ERROR, &err); 1510 1527 if (tsx->state != PJSIP_TSX_STATE_TERMINATED && 1511 1528 tsx->state != PJSIP_TSX_STATE_DESTROYED) … … 1538 1555 struct tsx_lock_data lck; 1539 1556 char errmsg[PJ_ERR_MSG_SIZE]; 1557 pj_str_t err; 1540 1558 1541 1559 tsx->transport_err = -sent; 1542 1560 1561 err = pj_strerror(-sent, errmsg, sizeof(errmsg)); 1562 1543 1563 PJ_LOG(4,(tsx->obj_name, "Transport failed to send %s! Err=%d (%s)", 1544 pjsip_tx_data_get_info(tdata), -sent, 1545 pj_strerror(-sent, errmsg, sizeof(errmsg)).ptr)); 1564 pjsip_tx_data_get_info(tdata), -sent, errmsg)); 1546 1565 1547 1566 lock_tsx(tsx, &lck); … … 1552 1571 1553 1572 /* Terminate transaction. */ 1554 tsx ->status_code = PJSIP_SC_TSX_TRANSPORT_ERROR;1573 tsx_set_status_code(tsx, PJSIP_SC_TSX_TRANSPORT_ERROR, &err); 1555 1574 tsx_set_state( tsx, PJSIP_TSX_STATE_TERMINATED, 1556 1575 PJSIP_EVENT_TRANSPORT_ERROR, tdata ); … … 1622 1641 1623 1642 char errmsg[PJ_ERR_MSG_SIZE]; 1643 pj_str_t err; 1624 1644 1625 1645 if (status == PJ_SUCCESS) { … … 1631 1651 * Treat this as permanent transport error. 1632 1652 */ 1653 err = pj_strerror(status, errmsg, sizeof(errmsg)); 1654 1633 1655 PJ_LOG(4,(tsx->obj_name, 1634 1656 "Transport error, terminating transaction. " 1635 1657 "Err=%d (%s)", 1636 status, 1637 pj_strerror(status, errmsg, sizeof(errmsg)).ptr)); 1638 1639 tsx->status_code = PJSIP_SC_TSX_TRANSPORT_ERROR; 1658 status, errmsg)); 1659 1660 tsx_set_status_code(tsx, PJSIP_SC_TSX_TRANSPORT_ERROR, &err); 1640 1661 tsx_set_state( tsx, PJSIP_TSX_STATE_TERMINATED, 1641 1662 PJSIP_EVENT_TRANSPORT_ERROR, NULL ); … … 1860 1881 1861 1882 /* Set status code */ 1862 tsx ->status_code = PJSIP_SC_TSX_TIMEOUT;1883 tsx_set_status_code(tsx, PJSIP_SC_TSX_TIMEOUT, NULL); 1863 1884 1864 1885 /* Inform TU. */ … … 2002 2023 2003 2024 /* Update last status */ 2004 tsx->status_code = msg->line.status.code; 2025 tsx_set_status_code(tsx, msg->line.status.code, 2026 &msg->line.status.reason); 2005 2027 2006 2028 /* Discard the saved last response (it will be updated later as … … 2164 2186 pj_assert(!"Should not happen(?)"); 2165 2187 2166 tsx ->status_code = PJSIP_SC_TSX_TIMEOUT;2188 tsx_set_status_code(tsx, PJSIP_SC_TSX_TIMEOUT, NULL); 2167 2189 2168 2190 tsx_set_state( tsx, PJSIP_TSX_STATE_TERMINATED, … … 2211 2233 } 2212 2234 2213 tsx->status_code = msg->line.status.code; 2235 tsx_set_status_code(tsx, msg->line.status.code, 2236 &msg->line.status.reason); 2237 2214 2238 } else { 2215 tsx ->status_code = PJSIP_SC_TSX_TIMEOUT;2239 tsx_set_status_code(tsx, PJSIP_SC_TSX_TIMEOUT, NULL); 2216 2240 } 2217 2241 … … 2441 2465 */ 2442 2466 2443 tsx ->status_code = PJSIP_SC_TSX_TIMEOUT;2467 tsx_set_status_code(tsx, PJSIP_SC_TSX_TIMEOUT, NULL); 2444 2468 2445 2469 tsx_set_state( tsx, PJSIP_TSX_STATE_TERMINATED,
Note: See TracChangeset
for help on using the changeset viewer.