projects
/
citadel.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
0473a8b
)
NETCFG: cleanup & memleaks fixed.
author
Wilfried Goesgens
<dothebart@citadel.org>
Sun, 17 Feb 2013 19:40:38 +0000
(20:40 +0100)
committer
Wilfried Goesgens
<dothebart@citadel.org>
Sun, 17 Feb 2013 19:40:38 +0000
(20:40 +0100)
citadel/modules/network/netspool.h
patch
|
blob
|
history
citadel/modules/network/serv_netspool.c
patch
|
blob
|
history
citadel/modules/network/serv_network.c
patch
|
blob
|
history
citadel/netconfig.c
patch
|
blob
|
history
diff --git
a/citadel/modules/network/netspool.h
b/citadel/modules/network/netspool.h
index e3f225b3e94e378c2337f4c861b50ed782f3da67..d04a49f1fdc6201657df4391a3dfc6479d55979c 100644
(file)
--- a/
citadel/modules/network/netspool.h
+++ b/
citadel/modules/network/netspool.h
@@
-59,6
+59,7
@@
int HaveSpoolConfig(OneRoomNetCfg* RNCfg);
void network_do_spoolin(HashList *working_ignetcfg, HashList *the_netmap, int *netmap_changed);
void network_consolidate_spoolout(HashList *working_ignetcfg, HashList *the_netmap);
void free_spoolcontrol_struct(SpoolControl **scc);
void network_do_spoolin(HashList *working_ignetcfg, HashList *the_netmap, int *netmap_changed);
void network_consolidate_spoolout(HashList *working_ignetcfg, HashList *the_netmap);
void free_spoolcontrol_struct(SpoolControl **scc);
+void free_spoolcontrol_struct_members(SpoolControl *scc);
int writenfree_spoolcontrol_file(SpoolControl **scc, char *filename);
int read_spoolcontrol_file(SpoolControl **scc, char *filename);
int writenfree_spoolcontrol_file(SpoolControl **scc, char *filename);
int read_spoolcontrol_file(SpoolControl **scc, char *filename);
diff --git
a/citadel/modules/network/serv_netspool.c
b/citadel/modules/network/serv_netspool.c
index ed79adb8b5316ea1c6a547abc37ccbfe6a8e0a86..b0928454c130aafb508bfe08c0141529654316a4 100644
(file)
--- a/
citadel/modules/network/serv_netspool.c
+++ b/
citadel/modules/network/serv_netspool.c
@@
-237,8
+237,8
@@
void CalcListID(SpoolControl *sc)
if (fd != 0) {
struct stat stbuf;
if (fd != 0) {
struct stat stbuf;
- fstat(fd, &stbuf);
-
if (stbuf.st_size > 0
)
+ if ((fstat(fd, &stbuf) == 0) &&
+
(stbuf.st_size > 0)
)
{
sc->RoomInfo = NewStrBufPlain(NULL, stbuf.st_size + 1);
StrBufReadBLOB(sc->RoomInfo, &fd, 0, stbuf.st_size, &err);
{
sc->RoomInfo = NewStrBufPlain(NULL, stbuf.st_size + 1);
StrBufReadBLOB(sc->RoomInfo, &fd, 0, stbuf.st_size, &err);
@@
-1017,6
+1017,21
@@
void network_consolidate_spoolout(HashList *working_ignetcfg, HashList *the_netm
closedir(dp);
}
closedir(dp);
}
+void free_spoolcontrol_struct(SpoolControl **sc)
+{
+ free_spoolcontrol_struct_members(*sc);
+ free(*sc);
+ *sc = NULL;
+}
+
+void free_spoolcontrol_struct_members(SpoolControl *sc)
+{
+ int i;
+ FreeStrBuf(&sc->RoomInfo);
+ FreeStrBuf(&sc->ListID);
+ for (i = 0; i < maxRoomNetCfg; i++)
+ FreeStrBuf(&sc->Users[i]);
+}
diff --git
a/citadel/modules/network/serv_network.c
b/citadel/modules/network/serv_network.c
index 5ba84707b7b0914cea2323ad06bee3c3d288381e..56492925e221a7ce68e1b769378db4e9e3d75f52 100644
(file)
--- a/
citadel/modules/network/serv_network.c
+++ b/
citadel/modules/network/serv_network.c
@@
-176,7
+176,7
@@
int network_sync_to(char *target_node, long len)
pCfgLine = pRNCFG->NetConfigs[ignet_push_share];
while (pCfgLine != NULL)
{
pCfgLine = pRNCFG->NetConfigs[ignet_push_share];
while (pCfgLine != NULL)
{
- if (strcmp(ChrPtr(pCfgLine->Value[0]), target_node))
+ if (
!
strcmp(ChrPtr(pCfgLine->Value[0]), target_node))
break;
pCfgLine = pCfgLine->next;
}
break;
pCfgLine = pCfgLine->next;
}
@@
-189,13
+189,13
@@
int network_sync_to(char *target_node, long len)
sc.RNCfg = &OneRNCFG;
sc.RNCfg->NetConfigs[ignet_push_share] = DuplicateOneGenericCfgLine(pCfgLine);
sc.RNCfg = &OneRNCFG;
sc.RNCfg->NetConfigs[ignet_push_share] = DuplicateOneGenericCfgLine(pCfgLine);
+ CalcListID(&sc);
+
end_critical_section(S_NETCONFIGS);
sc.working_ignetcfg = CtdlLoadIgNetCfg();
sc.the_netmap = CtdlReadNetworkMap();
end_critical_section(S_NETCONFIGS);
sc.working_ignetcfg = CtdlLoadIgNetCfg();
sc.the_netmap = CtdlReadNetworkMap();
- CalcListID(&sc);
-
/* Send ALL messages */
num_spooled = CtdlForEachMessage(MSGS_ALL, 0L, NULL, NULL, NULL,
network_spool_msg, &sc);
/* Send ALL messages */
num_spooled = CtdlForEachMessage(MSGS_ALL, 0L, NULL, NULL, NULL,
network_spool_msg, &sc);
@@
-205,6
+205,7
@@
int network_sync_to(char *target_node, long len)
DeleteHash(&sc.working_ignetcfg);
DeleteHash(&sc.the_netmap);
DeleteHash(&sc.working_ignetcfg);
DeleteHash(&sc.the_netmap);
+ free_spoolcontrol_struct_members(&sc);
QN_syslog(LOG_NOTICE, "Synchronized %d messages to <%s>\n",
num_spooled, target_node);
QN_syslog(LOG_NOTICE, "Synchronized %d messages to <%s>\n",
num_spooled, target_node);
@@
-441,19
+442,6
@@
void network_bounce(struct CtdlMessage *msg, char *reason)
}
}
-void free_network_spoolout_room(SpoolControl *sc)
-{
- if (sc != NULL)
- {
- int i;
- for (i = subpending; i < maxRoomNetCfg; i++)
- FreeStrBuf(&sc->Users[i]);
- free(sc);
- }
-}
-
-
-
/*
* network_do_queue()
/*
* network_do_queue()
@@
-553,7
+541,7
@@
void network_do_queue(void)
while (pSC != NULL)
{
sc = pSC->next;
while (pSC != NULL)
{
sc = pSC->next;
- free_
network_spoolout_room(
pSC);
+ free_
spoolcontrol_struct(&
pSC);
pSC = sc;
}
/* If there is anything in the inbound queue, process it */
pSC = sc;
}
/* If there is anything in the inbound queue, process it */
diff --git
a/citadel/netconfig.c
b/citadel/netconfig.c
index 7fc53c594c8df304a055847f938e6de65c723f8b..d4652e244b6a7be6848114846a3e58a572166a53 100644
(file)
--- a/
citadel/netconfig.c
+++ b/
citadel/netconfig.c
@@
-146,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)