diff options
author | Benny Prijono <bennylp@teluu.com> | 2007-03-23 16:34:20 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2007-03-23 16:34:20 +0000 |
commit | e3fd604ea862f68ad3ece248ca7d853899cbf48f (patch) | |
tree | 88fb4659ab449d79b25dc8e0dfe3b64f145b9dd3 /pjnath | |
parent | 05e7998ba4cbd7fb0b02b7f82c5b328cf203fbc9 (diff) |
ICE (work in progress): integration with PJSUA
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1098 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjnath')
-rw-r--r-- | pjnath/include/pjnath/ice_stream_transport.h | 3 | ||||
-rw-r--r-- | pjnath/src/pjnath/ice.c | 7 | ||||
-rw-r--r-- | pjnath/src/pjnath/ice_stream_transport.c | 42 |
3 files changed, 29 insertions, 23 deletions
diff --git a/pjnath/include/pjnath/ice_stream_transport.h b/pjnath/include/pjnath/ice_stream_transport.h index c85aff98..37ff5686 100644 --- a/pjnath/include/pjnath/ice_stream_transport.h +++ b/pjnath/include/pjnath/ice_stream_transport.h @@ -71,6 +71,7 @@ typedef struct pj_ice_st_interface { pj_ice_st *ice_st; pj_ice_cand_type type; + pj_status_t status; unsigned comp_id; int cand_id; pj_str_t foundation; @@ -150,7 +151,7 @@ PJ_DECL(pj_status_t) pj_ice_st_add_relay_interface(pj_ice_st *ice_st, unsigned local_port, pj_bool_t notify, void *notify_data); - +PJ_DECL(pj_status_t) pj_ice_st_get_interfaces_status(pj_ice_st *ice_st); PJ_DECL(pj_status_t) pj_ice_st_init_ice(pj_ice_st *ice_st, pj_ice_role role, diff --git a/pjnath/src/pjnath/ice.c b/pjnath/src/pjnath/ice.c index e21e81f9..d2d2474d 100644 --- a/pjnath/src/pjnath/ice.c +++ b/pjnath/src/pjnath/ice.c @@ -888,12 +888,15 @@ static void prune_checklist(pj_ice *ice, pj_ice_checklist *clist) static void on_ice_complete(pj_ice *ice, pj_status_t status) { if (!ice->is_complete) { + char errmsg[PJ_ERR_MSG_SIZE]; ice->is_complete = PJ_TRUE; ice->ice_status = status; /* Log message */ - LOG((ice->obj_name, "ICE process complete")); + LOG((ice->obj_name, "ICE process complete, status=%s", + pj_strerror(status, errmsg, sizeof(errmsg)).ptr)); + dump_checklist("Dumping checklist", ice, &ice->clist); dump_valid_list("Dumping valid list", ice); @@ -1136,7 +1139,7 @@ PJ_DEF(pj_status_t) pj_ice_create_check_list(pj_ice *ice, /* Log checklist */ dump_checklist("Checklist created:", ice, clist); - pj_mutex_lock(ice->mutex); + pj_mutex_unlock(ice->mutex); return PJ_SUCCESS; } diff --git a/pjnath/src/pjnath/ice_stream_transport.c b/pjnath/src/pjnath/ice_stream_transport.c index 475aa35d..e654fcf7 100644 --- a/pjnath/src/pjnath/ice_stream_transport.c +++ b/pjnath/src/pjnath/ice_stream_transport.c @@ -151,7 +151,6 @@ on_error: return status; } - /* * This is callback called by ioqueue on incoming packet */ @@ -191,7 +190,6 @@ static void on_read_complete(pj_ioqueue_key_t *key, } } - /* * Destroy an interface */ @@ -207,7 +205,6 @@ static void destroy_ice_interface(pj_ice_st_interface *is) } } - /* * Create ICE stream transport */ @@ -241,7 +238,6 @@ PJ_DECL(pj_status_t) pj_ice_st_create(pj_stun_config *stun_cfg, return PJ_SUCCESS; } - static void destroy_ice_st(pj_ice_st *ice_st, pj_status_t reason) { unsigned i; @@ -273,7 +269,6 @@ static void destroy_ice_st(pj_ice_st *ice_st, pj_status_t reason) } } - /* * Destroy ICE stream transport. */ @@ -283,7 +278,6 @@ PJ_DEF(pj_status_t) pj_ice_st_destroy(pj_ice_st *ice_st) return PJ_SUCCESS; } - /* * Resolve STUN server */ @@ -300,7 +294,6 @@ PJ_DEF(pj_status_t) pj_ice_st_set_stun( pj_ice_st *ice_st, return -1; } - /* * Set STUN server address. */ @@ -319,7 +312,6 @@ PJ_DEF(pj_status_t) pj_ice_st_set_stun_addr( pj_ice_st *ice_st, return PJ_SUCCESS; } - /* * Add new component. */ @@ -350,7 +342,6 @@ PJ_DEF(pj_status_t) pj_ice_st_add_comp(pj_ice_st *ice_st, return PJ_SUCCESS; } - /* Add interface */ static void add_interface(pj_ice_st *ice_st, pj_ice_st_interface *is, unsigned *p_itf_id, pj_bool_t notify, @@ -405,10 +396,12 @@ PJ_DEF(pj_status_t) pj_ice_st_add_host_interface(pj_ice_st *ice_st, /* Store this interface */ add_interface(ice_st, is, p_itf_id, notify, notify_data); + /* Set interface status to SUCCESS */ + is->status = PJ_SUCCESS; + return PJ_SUCCESS; } - /* * Enumerate and add all host interfaces. */ @@ -434,7 +427,6 @@ PJ_DEF(pj_status_t) pj_ice_st_add_all_host_interfaces(pj_ice_st *ice_st, NULL, notify, notify_data); } - /* * Add STUN mapping interface. */ @@ -453,7 +445,6 @@ PJ_DEF(pj_status_t) pj_ice_st_add_stun_interface(pj_ice_st *ice_st, return -1; } - /* * Add TURN mapping interface. */ @@ -472,6 +463,25 @@ PJ_DEF(pj_status_t) pj_ice_st_add_relay_interface(pj_ice_st *ice_st, return -1; } +PJ_DEF(pj_status_t) pj_ice_st_get_interfaces_status(pj_ice_st *ice_st) +{ + unsigned i; + pj_status_t worst = PJ_SUCCESS; + + for (i=0; i<ice_st->itf_cnt; ++i) { + pj_ice_st_interface *itf = ice_st->itfs[i]; + + if (itf->status == PJ_SUCCESS) { + /* okay */ + } else if (itf->status == PJ_EPENDING && worst==PJ_SUCCESS) { + worst = itf->status; + } else { + worst = itf->status; + } + } + + return worst; +} /* * Create ICE! @@ -537,7 +547,6 @@ on_error: return status; } - /* * Enum candidates */ @@ -568,7 +577,6 @@ PJ_DEF(pj_status_t) pj_ice_st_enum_cands(pj_ice_st *ice_st, return PJ_SUCCESS; } - /* * Start ICE processing ! */ @@ -588,7 +596,6 @@ PJ_DEF(pj_status_t) pj_ice_st_start_ice( pj_ice_st *ice_st, return pj_ice_start_check(ice_st->ice); } - /* * Stop ICE! */ @@ -602,7 +609,6 @@ PJ_DECL(pj_status_t) pj_ice_st_stop_ice(pj_ice_st *ice_st) return PJ_SUCCESS; } - /* * Send data to peer agent. */ @@ -617,8 +623,6 @@ PJ_DEF(pj_status_t) pj_ice_st_send_data( pj_ice_st *ice_st, return pj_ice_send_data(ice_st->ice, comp_id, data, data_len); } - - /* * Callback called by ICE session when ICE processing is complete, either * successfully or with failure. @@ -631,7 +635,6 @@ static void on_ice_complete(pj_ice *ice, pj_status_t status) } } - /* * Callback called by ICE session when it wants to send outgoing packet. */ @@ -667,7 +670,6 @@ static pj_status_t on_tx_pkt(pj_ice *ice, return (status==PJ_SUCCESS||status==PJ_EPENDING) ? PJ_SUCCESS : status; } - /* * Callback called by ICE session when it receives application data. */ |