Exemplo n.º 1
0
/*! \brief Destructor for transport */
static void transport_destroy(void *obj)
{
	struct ast_sip_transport *transport = obj;

	ast_string_field_free_memory(transport);
	ast_free_ha(transport->localnet);

	if (transport->external_address_refresher) {
		ast_dnsmgr_release(transport->external_address_refresher);
	}

	ao2_cleanup(transport->state);
}
Exemplo n.º 2
0
static int destroy_sip_transport_state(void *data)
{
	struct ast_sip_transport_state *transport_state = data;

	ast_free(transport_state->id);
	ast_free_ha(transport_state->localnet);

	if (transport_state->external_address_refresher) {
		ast_dnsmgr_release(transport_state->external_address_refresher);
	}
	if (transport_state->transport) {
		pjsip_transport_shutdown(transport_state->transport);
	}

	return 0;
}
Exemplo n.º 3
0
/*! \brief Custom handler for localnet setting */
static int transport_localnet_handler(const struct aco_option *opt, struct ast_variable *var, void *obj)
{
	struct ast_sip_transport *transport = obj;
	int error = 0;
	RAII_VAR(struct ast_sip_transport_state *, state, find_or_create_temporary_state(transport), ao2_cleanup);

	if (!state) {
		return -1;
	}

	if (ast_strlen_zero(var->value)) {
		ast_free_ha(state->localnet);
		state->localnet = NULL;
		return 0;
	}

	if (!(state->localnet = ast_append_ha("d", var->value, state->localnet, &error))) {
		return -1;
	}

	return error;
}