view sip-in/call_list.c @ 64:1f863c63f96b

sip-in: beginning of disconnect handling
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 18 Sep 2022 15:29:30 -0800
parents e5aee661e3b2
children 709b78a4ebf0
line wrap: on
line source

/*
 * In this module we implement call list management for themwi-sip-in.
 */

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <syslog.h>
#include "call.h"

struct call *call_list;

struct call *
find_call_by_sip_id(sought_id)
	char *sought_id;
{
	struct call *call;

	for (call = call_list; call; call = call->next)
		if (!strcmp(call->sip_call_id, sought_id))
			return call;
	return 0;
}

struct call *
find_call_by_mncc_callref(callref)
	uint32_t callref;
{
	struct call *call;

	for (call = call_list; call; call = call->next)
		if (call->mncc_state && call->mncc_callref == callref)
			return call;
	return 0;
}

allocate_mncc_callref(call)
	struct call *call;
{
	static uint32_t next_callref;

	for (;;) {
		next_callref++;
		if (!find_call_by_mncc_callref(next_callref)) {
			call->mncc_callref = next_callref;
			return(0);
		}
	}
}