projects
/
citadel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Lists: don't overwrite from: header. this only needs to be done for participates.
[citadel.git]
/
citadel
/
netconfig.c
diff --git
a/citadel/netconfig.c
b/citadel/netconfig.c
index 0f89d4474aa3468ed0ef0919a94f52a0232d8afa..1b2e974aa6b42ad137397438dec0c7f620fbf27d 100644
(file)
--- a/
citadel/netconfig.c
+++ b/
citadel/netconfig.c
@@
-29,9
+29,10
@@
#include <libcitadel.h>
#include "include/ctdl_module.h"
#include <libcitadel.h>
#include "include/ctdl_module.h"
-
+#include "serv_extensions.h"
void vFreeRoomNetworkStruct(void *vOneRoomNetCfg);
void vFreeRoomNetworkStruct(void *vOneRoomNetCfg);
+void FreeRoomNetworkStructContent(OneRoomNetCfg *OneRNCfg);
HashList *CfgTypeHash = NULL;
HashList *RoomConfigs = NULL;
HashList *CfgTypeHash = NULL;
HashList *RoomConfigs = NULL;
@@
-145,16
+146,19
@@
void DeleteGenericCfgLine(const CfgLineType *ThisOne, RoomNetCfgLine **data)
}
RoomNetCfgLine *DuplicateOneGenericCfgLine(const RoomNetCfgLine *data)
{
}
RoomNetCfgLine *DuplicateOneGenericCfgLine(const RoomNetCfgLine *data)
{
+ int i;
RoomNetCfgLine *NewData;
NewData = (RoomNetCfgLine*)malloc(sizeof(RoomNetCfgLine));
RoomNetCfgLine *NewData;
NewData = (RoomNetCfgLine*)malloc(sizeof(RoomNetCfgLine));
-
int i
;
+
memset(NewData, 0, sizeof(RoomNetCfgLine))
;
NewData->Value = (StrBuf **)malloc(sizeof(StrBuf*) * data->nValues);
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]);
}
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)
return NewData;
}
int ReadRoomNetConfigFile(OneRoomNetCfg **pOneRNCfg, char *filename)
@@
-165,7
+169,7
@@
int ReadRoomNetConfigFile(OneRoomNetCfg **pOneRNCfg, char *filename)
const CfgLineType *pCfg;
StrBuf *Line;
StrBuf *InStr;
const CfgLineType *pCfg;
StrBuf *Line;
StrBuf *InStr;
- OneRoomNetCfg *OneRNCfg;
+ OneRoomNetCfg *OneRNCfg
= NULL
;
fd = open(filename, O_NONBLOCK|O_RDONLY);
if (fd == -1) {
fd = open(filename, O_NONBLOCK|O_RDONLY);
if (fd == -1) {
@@
-173,7
+177,10
@@
int ReadRoomNetConfigFile(OneRoomNetCfg **pOneRNCfg, char *filename)
return 0;
}
if (*pOneRNCfg != NULL)
return 0;
}
if (*pOneRNCfg != NULL)
+ {
OneRNCfg = *pOneRNCfg;
OneRNCfg = *pOneRNCfg;
+ FreeRoomNetworkStructContent (OneRNCfg);
+ }
else
OneRNCfg = malloc(sizeof(OneRoomNetCfg));
memset(OneRNCfg, 0, sizeof(OneRoomNetCfg));
else
OneRNCfg = malloc(sizeof(OneRoomNetCfg));
memset(OneRNCfg, 0, sizeof(OneRoomNetCfg));
@@
-380,6
+387,7
@@
void FreeRoomNetworkStructContent(OneRoomNetCfg *OneRNCfg)
FreeStrBuf(&OneRNCfg->Sender);
FreeStrBuf(&OneRNCfg->RoomInfo);
FreeStrBuf(&OneRNCfg->misc);
FreeStrBuf(&OneRNCfg->Sender);
FreeStrBuf(&OneRNCfg->RoomInfo);
FreeStrBuf(&OneRNCfg->misc);
+ memset(OneRNCfg, 0, sizeof(OneRoomNetCfg));
}
void vFreeRoomNetworkStruct(void *vOneRoomNetCfg)
{
}
void vFreeRoomNetworkStruct(void *vOneRoomNetCfg)
{
@@
-568,7
+576,6
@@
const ConstStr ForceAliases[nForceAliases] = {
{HKEY("postmaster,")},
{HKEY("abuse,")}
};
{HKEY("postmaster,")},
{HKEY("abuse,")}
};
-
void cmd_snet(char *argbuf)
{
struct CitContext *CCC = CC;
void cmd_snet(char *argbuf)
{
struct CitContext *CCC = CC;
@@
-711,7
+718,6
@@
void cmd_snet(char *argbuf)
RNCfg = CtdlGetNetCfgForRoom(CCC->room.QRnumber);
if (RNCfg != NULL)
{
RNCfg = CtdlGetNetCfgForRoom(CCC->room.QRnumber);
if (RNCfg != NULL)
{
- FreeRoomNetworkStructContent(RNCfg);
ReadRoomNetConfigFile(&RNCfg, filename);
}
else
ReadRoomNetConfigFile(&RNCfg, filename);
}
else
@@
-719,6
+725,8
@@
void cmd_snet(char *argbuf)
ReadRoomNetConfigFile(&RNCfg, filename);
Put(RoomConfigs, LKEY(CCC->room.QRnumber), RNCfg, vFreeRoomNetworkStruct);
}
ReadRoomNetConfigFile(&RNCfg, filename);
Put(RoomConfigs, LKEY(CCC->room.QRnumber), RNCfg, vFreeRoomNetworkStruct);
}
+
+ PerformRoomHooks(&CCC->room);
}
end_critical_section(S_NETCONFIGS);
}
}
end_critical_section(S_NETCONFIGS);
}