X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fnetconfig.c;h=d2a39c6c63e11cd1b2e1d02af343c4b631b6e9b1;hb=f88d67da640fc36def6a9c7e14e6e0ac793273a9;hp=d4652e244b6a7be6848114846a3e58a572166a53;hpb=05dee7a425fa295c6b1ab5f4c8ec39314e4e1d8c;p=citadel.git diff --git a/citadel/netconfig.c b/citadel/netconfig.c index d4652e244..d2a39c6c6 100644 --- a/citadel/netconfig.c +++ b/citadel/netconfig.c @@ -29,7 +29,8 @@ #include #include "include/ctdl_module.h" - +#include "serv_extensions.h" +#include "config.h" void vFreeRoomNetworkStruct(void *vOneRoomNetCfg); void FreeRoomNetworkStructContent(OneRoomNetCfg *OneRNCfg); @@ -176,6 +177,9 @@ int ReadRoomNetConfigFile(OneRoomNetCfg **pOneRNCfg, char *filename) *pOneRNCfg = NULL; return 0; } + fchown(fd, CTDLUID, (-1)); + fchmod(fd, 0600); + if (*pOneRNCfg != NULL) { OneRNCfg = *pOneRNCfg; @@ -387,6 +391,7 @@ void FreeRoomNetworkStructContent(OneRoomNetCfg *OneRNCfg) FreeStrBuf(&OneRNCfg->Sender); FreeStrBuf(&OneRNCfg->RoomInfo); FreeStrBuf(&OneRNCfg->misc); + memset(OneRNCfg, 0, sizeof(OneRoomNetCfg)); } void vFreeRoomNetworkStruct(void *vOneRoomNetCfg) { @@ -438,7 +443,7 @@ void LoadAllNetConfigs(void) (filedir_entry != NULL)) { #ifdef _DIRENT_HAVE_D_NAMLEN - d_namelen = filedir_entry->d_namelen; + d_namelen = filedir_entry->d_namlen; #else d_namelen = strlen(filedir_entry->d_name); #endif @@ -575,7 +580,6 @@ const ConstStr ForceAliases[nForceAliases] = { {HKEY("postmaster,")}, {HKEY("abuse,")} }; - void cmd_snet(char *argbuf) { struct CitContext *CCC = CC; @@ -718,7 +722,6 @@ void cmd_snet(char *argbuf) RNCfg = CtdlGetNetCfgForRoom(CCC->room.QRnumber); if (RNCfg != NULL) { - FreeRoomNetworkStructContent(RNCfg); ReadRoomNetConfigFile(&RNCfg, filename); } else @@ -726,6 +729,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); } @@ -838,6 +843,7 @@ int is_recipient(OneRoomNetCfg *RNCfg, const char *Name) } nptr = nptr->next; } + i++; } return 0; } @@ -925,7 +931,9 @@ void cmd_netp(char *cmdbuf) CtdlAideFPMessage( err_buf, "IGNet Networking.", - 2, strs, (long*) &lens); + 2, strs, (long*) &lens, + CCC->cs_pid, 0, + time(NULL)); DeleteHash(&working_ignetcfg); FreeStrBuf(&NodeStr); @@ -950,7 +958,10 @@ void cmd_netp(char *cmdbuf) CtdlAideFPMessage( err_buf, "IGNet Networking.", - 2, strs, (long*) &lens); + 2, strs, + (long*) &lens, + CCC->cs_pid, 0, + time(NULL)); DeleteHash(&working_ignetcfg); FreeStrBuf(&NodeStr); @@ -1165,13 +1176,16 @@ int CtdlIsValidNode(const StrBuf **nexthop, void destroy_network_cfgs(void) { HashList *pCfgTypeHash = CfgTypeHash; - HashList *pRoomConfigs = RoomConfigs; + HashList *pRoomConfigs; - CfgTypeHash = NULL; + begin_critical_section(S_NETCONFIGS); + pRoomConfigs = RoomConfigs; RoomConfigs = NULL; - - DeleteHash(&pCfgTypeHash); + end_critical_section(S_NETCONFIGS); DeleteHash(&pRoomConfigs); + + CfgTypeHash = NULL; + DeleteHash(&pCfgTypeHash); } /*