Changeset: 861df4226a76 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=861df4226a76
Modified Files:
tools/merovingian/daemon/forkmserver.c
Branch: Jul2012
Log Message:
forkMserver: fix leak of default props (for mfunnels)
diffs (87 lines):
diff --git a/tools/merovingian/daemon/forkmserver.c
b/tools/merovingian/daemon/forkmserver.c
--- a/tools/merovingian/daemon/forkmserver.c
+++ b/tools/merovingian/daemon/forkmserver.c
@@ -96,6 +96,8 @@ forkMserver(char *database, sabdb** stat
if (force == 0) {
Mfprintf(stdout, "%s '%s' is under maintenance\n",
kv->val, database);
+ freeConfFile(ckv);
+ free(ckv);
return(NO_ERR);
} else {
Mfprintf(stdout, "startup of %s under maintenance "
@@ -109,11 +111,15 @@ forkMserver(char *database, sabdb** stat
err e = newErr("could not retrieve uplog information: %s", er);
free(er);
msab_freeStatus(stats);
+ freeConfFile(ckv);
+ free(ckv);
return(e);
}
switch ((*stats)->state) {
case SABdbRunning:
+ freeConfFile(ckv);
+ free(ckv);
return(NO_ERR);
case SABdbCrashed:
t = localtime(&info.lastcrash);
@@ -144,6 +150,8 @@ forkMserver(char *database, sabdb** stat
break;
default:
msab_freeStatus(stats);
+ freeConfFile(ckv);
+ free(ckv);
return(newErr("unknown state: %d",
(int)(*stats)->state));
}
@@ -151,12 +159,16 @@ forkMserver(char *database, sabdb** stat
* child have the same descriptor set */
if (pipe(pfdo) == -1) {
msab_freeStatus(stats);
+ freeConfFile(ckv);
+ free(ckv);
return(newErr("unable to create pipe: %s", strerror(errno)));
}
if (pipe(pfde) == -1) {
close(pfdo[0]);
close(pfdo[1]);
msab_freeStatus(stats);
+ freeConfFile(ckv);
+ free(ckv);
return(newErr("unable to create pipe: %s", strerror(errno)));
}
@@ -184,8 +196,12 @@ forkMserver(char *database, sabdb** stat
{
Mfprintf(stderr, "failed to create multiplex-funnel:
%s\n",
getErrMsg(er));
+ freeConfFile(ckv);
+ free(ckv);
return(er);
}
+ freeConfFile(ckv);
+ free(ckv);
/* refresh stats, now we will have a connection registered */
msab_freeStatus(stats);
@@ -205,6 +221,8 @@ forkMserver(char *database, sabdb** stat
snprintf(vaultkey, sizeof(vaultkey), "%s/.vaultkey", (*stats)->path);
if (stat(vaultkey, &statbuf) == -1) {
msab_freeStatus(stats);
+ freeConfFile(ckv);
+ free(ckv);
return(newErr("cannot start database '%s': no .vaultkey found "
"(did you create the database with
`monetdb create %s`?)",
database, database));
@@ -355,6 +373,10 @@ forkMserver(char *database, sabdb** stat
} else if (pid > 0) {
int i;
+ /* don't need this, child did */
+ freeConfFile(ckv);
+ free(ckv);
+
/* make sure no entries are shot while adding and that we
* deliver a consistent state */
pthread_mutex_lock(&_mero_topdp_lock);
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list