-/* Copyright (C) 2009-2010, Martin Johansson <martin@fatbob.nu>
- Copyright (C) 2005-2010, Thorvald Natvig <thorvald@natvig.com>
+/* Copyright (C) 2009-2014, Martin Johansson <martin@fatbob.nu>
+ Copyright (C) 2005-2014, Thorvald Natvig <thorvald@natvig.com>
All rights reserved.
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#include <stdlib.h>
+#include <string.h>
#include "voicetarget.h"
#include "log.h"
+#include "memory.h"
void Voicetarget_add_session(client_t *client, int targetId, int sessionId)
{
struct dlist *itr;
voicetarget_t *vt;
-
+
list_iterate(itr, &client->voicetargets) {
if (targetId == list_get_entry(itr, voicetarget_t, node)->id) {
int i;
}
}
-void Voicetarget_add_channel(client_t *client, int targetId, int channelId)
+void Voicetarget_add_channel(client_t *client, int targetId, int channelId,
+ bool_t linked, bool_t children)
{
struct dlist *itr;
voicetarget_t *vt;
-
+
list_iterate(itr, &client->voicetargets) {
if (targetId == list_get_entry(itr, voicetarget_t, node)->id) {
int i;
vt = list_get_entry(itr, voicetarget_t, node);
for (i = 0; i < TARGET_MAX_CHANNELS; i++) {
- if (vt->channels[i] == -1) {
- vt->channels[i] = channelId;
+ if (vt->channels[i].channel == -1) {
+ vt->channels[i].channel = channelId;
+ vt->channels[i].linked = linked;
+ vt->channels[i].children = children;
Log_debug("Adding channel ID %d to voicetarget ID %d", channelId, targetId);
return;
}
}
}
- }
+ }
}
void Voicetarget_add_id(client_t *client, int targetId)
{
voicetarget_t *newtarget;
int i;
-
+
Voicetarget_del_id(client, targetId);
- newtarget = malloc(sizeof(voicetarget_t));
- if (!newtarget)
- Log_fatal("Out of memory");
- memset(newtarget, 0, sizeof(voicetarget_t));
+ newtarget = Memory_safeCalloc(1, sizeof(voicetarget_t));
for (i = 0; i < TARGET_MAX_CHANNELS; i++)
- newtarget->channels[i] = -1;
+ newtarget->channels[i].channel = -1;
for (i = 0; i < TARGET_MAX_SESSIONS; i++)
newtarget->sessions[i] = -1;
newtarget->id = targetId;