if (!po)
return TCORE_RETURN_EINVAL;
- if (!po->online) {
- dbg("ps network is not online !");
- return TCORE_RETURN_PS_NETWORK_NOT_READY;
- }
-
if (!ps_context)
return TCORE_RETURN_EINVAL;
rv = _ps_is_duplicated_apn(o, ps_context);
if (rv) {
- unsigned char cid = 0;
- cid = tcore_context_get_id(ps_context);
- po->cid[cid].contexts = g_slist_remove(po->cid[cid].contexts, ps_context);
+ tcore_ps_clear_context_id(o, ps_context);
tcore_context_set_state(ps_context, CONTEXT_STATE_DEACTIVATED);
return TCORE_RETURN_SUCCESS;
}
if (in_length < len + 2)
err("invalid length. in_length[%d] < TLV_len[%d] + 2", in_length, len);
- p_out->impi = g_memdup(&p_in[2], len);
+ p_out->impi = calloc(1, len + 1);
+
+ memcpy(p_out->impi, &p_in[2], len);
+
return TRUE;
}