diff options
author | Benny Prijono <bennylp@teluu.com> | 2010-06-19 12:35:33 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2010-06-19 12:35:33 +0000 |
commit | 8d35b8f739dbad39422332ecb8376cc18a858f2e (patch) | |
tree | 622f42846ed18a5eb31b861693a922f51dd4e008 /pjsip | |
parent | f762fd7b4817c6668da0859b188d9d21a21e38bf (diff) |
Fixed #1077: In ICE stream transport (ice_strans.c), automaticaly retry allocation once if TURN allocation fails. If this allocation retry also fails, notify the TURN user via on_ice_complete() callback. Details:
- added new PJ_ICE_STRANS_OP_KEEP_ALIVE operation
- also added new on_ice_transport_error() pjsua callback to allow application to react to the failure.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3212 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip')
-rw-r--r-- | pjsip/include/pjsua-lib/pjsua.h | 13 | ||||
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_media.c | 10 |
2 files changed, 23 insertions, 0 deletions
diff --git a/pjsip/include/pjsua-lib/pjsua.h b/pjsip/include/pjsua-lib/pjsua.h index eb1beb8c..01d1f801 100644 --- a/pjsip/include/pjsua-lib/pjsua.h +++ b/pjsip/include/pjsua-lib/pjsua.h @@ -849,6 +849,19 @@ typedef struct pjsua_callback */ pjsip_tp_state_callback on_transport_state; + /** + * This callback is called to report error in ICE media transport. + * Currently it is used to report TURN Refresh error. + * + * @param index Transport index. + * @param op Operation which trigger the failure. + * @param status Error status. + * @param param Additional info about the event. Currently this will + * always be set to NULL. + */ + void (*on_ice_transport_error)(int index, pj_ice_strans_op op, + pj_status_t status, void *param); + } pjsua_callback; diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c index 311c015c..84012080 100644 --- a/pjsip/src/pjsua-lib/pjsua_media.c +++ b/pjsip/src/pjsua-lib/pjsua_media.c @@ -862,6 +862,16 @@ static void on_ice_complete(pjmedia_transport *tp, } } break; + case PJ_ICE_STRANS_OP_KEEP_ALIVE: + if (result != PJ_SUCCESS) { + PJ_PERROR(4,(THIS_FILE, result, + "ICE keep alive failure for transport %d", id)); + } + if (pjsua_var.ua_cfg.cb.on_ice_transport_error) { + (*pjsua_var.ua_cfg.cb.on_ice_transport_error)(id, op, result, + NULL); + } + break; } } |