X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fnetconfig.c;h=1b2e974aa6b42ad137397438dec0c7f620fbf27d;hb=a5e759daa03e43dfdd940e96c13cded7ba8de39c;hp=7fc53c594c8df304a055847f938e6de65c723f8b;hpb=ce67ed08048376e522eede80e7a9e43ba9c4b67a;p=citadel.git diff --git a/citadel/netconfig.c b/citadel/netconfig.c index 7fc53c594..1b2e974aa 100644 --- a/citadel/netconfig.c +++ b/citadel/netconfig.c @@ -29,7 +29,7 @@ #include #include "include/ctdl_module.h" - +#include "serv_extensions.h" void vFreeRoomNetworkStruct(void *vOneRoomNetCfg); void FreeRoomNetworkStructContent(OneRoomNetCfg *OneRNCfg); @@ -146,16 +146,19 @@ void DeleteGenericCfgLine(const CfgLineType *ThisOne, RoomNetCfgLine **data) } 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) @@ -384,6 +387,7 @@ void FreeRoomNetworkStructContent(OneRoomNetCfg *OneRNCfg) FreeStrBuf(&OneRNCfg->Sender); FreeStrBuf(&OneRNCfg->RoomInfo); FreeStrBuf(&OneRNCfg->misc); + memset(OneRNCfg, 0, sizeof(OneRoomNetCfg)); } void vFreeRoomNetworkStruct(void *vOneRoomNetCfg) { @@ -572,7 +576,6 @@ const ConstStr ForceAliases[nForceAliases] = { {HKEY("postmaster,")}, {HKEY("abuse,")} }; - void cmd_snet(char *argbuf) { struct CitContext *CCC = CC; @@ -715,7 +718,6 @@ void cmd_snet(char *argbuf) RNCfg = CtdlGetNetCfgForRoom(CCC->room.QRnumber); if (RNCfg != NULL) { - FreeRoomNetworkStructContent(RNCfg); ReadRoomNetConfigFile(&RNCfg, filename); } else @@ -723,6 +725,8 @@ void cmd_snet(char *argbuf) ReadRoomNetConfigFile(&RNCfg, filename); Put(RoomConfigs, LKEY(CCC->room.QRnumber), RNCfg, vFreeRoomNetworkStruct); } + + PerformRoomHooks(&CCC->room); } end_critical_section(S_NETCONFIGS); }