#include <libcitadel.h>
#include "include/ctdl_module.h"
-
+#include "serv_extensions.h"
void vFreeRoomNetworkStruct(void *vOneRoomNetCfg);
+void FreeRoomNetworkStructContent(OneRoomNetCfg *OneRNCfg);
HashList *CfgTypeHash = NULL;
HashList *RoomConfigs = NULL;
}
RoomNetCfgLine *DuplicateOneGenericCfgLine(const RoomNetCfgLine *data)
{
+ int i;
RoomNetCfgLine *NewData;
NewData = (RoomNetCfgLine*)malloc(sizeof(RoomNetCfgLine));
- int i;
+ memset(NewData, 0, sizeof(RoomNetCfgLine));
NewData->Value = (StrBuf **)malloc(sizeof(StrBuf*) * data->nValues);
+ memset(NewData->Value, 0, sizeof(StrBuf*) * data->nValues);
for (i = 0; i < data->nValues; i++)
{
NewData->Value[i] = NewStrBufDup(data->Value[i]);
}
+ NewData->nValues = data->nValues;
return NewData;
}
int ReadRoomNetConfigFile(OneRoomNetCfg **pOneRNCfg, char *filename)
const CfgLineType *pCfg;
StrBuf *Line;
StrBuf *InStr;
- OneRoomNetCfg *OneRNCfg;
+ OneRoomNetCfg *OneRNCfg = NULL;
fd = open(filename, O_NONBLOCK|O_RDONLY);
if (fd == -1) {
return 0;
}
if (*pOneRNCfg != NULL)
+ {
OneRNCfg = *pOneRNCfg;
+ FreeRoomNetworkStructContent (OneRNCfg);
+ }
else
OneRNCfg = malloc(sizeof(OneRoomNetCfg));
memset(OneRNCfg, 0, sizeof(OneRoomNetCfg));
FreeStrBuf(&OneRNCfg->Sender);
FreeStrBuf(&OneRNCfg->RoomInfo);
FreeStrBuf(&OneRNCfg->misc);
+ memset(OneRNCfg, 0, sizeof(OneRoomNetCfg));
}
void vFreeRoomNetworkStruct(void *vOneRoomNetCfg)
{
{HKEY("postmaster,")},
{HKEY("abuse,")}
};
-
void cmd_snet(char *argbuf)
{
struct CitContext *CCC = CC;
RNCfg = CtdlGetNetCfgForRoom(CCC->room.QRnumber);
if (RNCfg != NULL)
{
- FreeRoomNetworkStructContent(RNCfg);
ReadRoomNetConfigFile(&RNCfg, filename);
}
else
ReadRoomNetConfigFile(&RNCfg, filename);
Put(RoomConfigs, LKEY(CCC->room.QRnumber), RNCfg, vFreeRoomNetworkStruct);
}
+
+ PerformRoomHooks(&CCC->room);
}
end_critical_section(S_NETCONFIGS);
}