521dad5888fde0e10237c9c6b741e071cd0c5cee angie Tue May 14 09:47:56 2019 -0700 hgSession: added CGI param hgS_sessionDataDbSuffix to randomize choice of customData db* when bulk-converting old saved sessions to use sessionDataDir/sessionDataDbPrefix. refs #22440 diff --git src/hg/hgSession/hgSession.c src/hg/hgSession/hgSession.c index c6deead..c07a0d5 100644 --- src/hg/hgSession/hgSession.c +++ src/hg/hgSession/hgSession.c @@ -39,31 +39,31 @@ #include "hubConnect.h" #include "trackHub.h" void usage() /* Explain usage and exit. */ { errAbort( "hgSession - Interface with wiki login and do session saving/loading.\n" "usage:\n" " hgSession \n" ); } /* Global variables. */ struct cart *cart; -char *excludeVars[] = {"Submit", "submit", NULL}; +char *excludeVars[] = {"Submit", "submit", hgsSessionDataDbSuffix, NULL}; struct slName *existingSessionNames = NULL; /* Javascript to confirm that the user truly wants to delete a session. */ #define confirmDeleteFormat "return confirm('Are you sure you want to delete ' + decodeURIComponent('%s') + '?');" char *cgiDecodeClone(char *encStr) /* Allocate and return a CGI-decoded copy of encStr. */ { size_t len = strlen(encStr); char *decStr = needMem(len+1); cgiDecode(encStr, decStr, len); return decStr; } @@ -787,31 +787,32 @@ if ((row = sqlNextRow(sr)) != NULL) { safef(firstUseBuf, sizeof(firstUseBuf), "'%s'", row[0]); firstUse = firstUseBuf; useCount = atoi(row[1]) + 1; } sqlFreeResult(&sr); /* Remove pre-existing session (if any) before updating. */ dyStringClear(dy); sqlDyStringPrintf(dy, "DELETE FROM %s WHERE userName = '%s' AND " "sessionName = '%s';", namedSessionTable, encUserName, encSessionName); sqlUpdate(conn, dy->string); - saveSessionData(cart, encUserName, encSessionName); + saveSessionData(cart, encUserName, encSessionName, + cgiOptionalString(hgsSessionDataDbSuffix)); dyStringClear(dy); sqlDyStringPrintf(dy, "INSERT INTO %s ", namedSessionTable); dyStringAppend(dy, "(userName, sessionName, contents, shared, " "firstUse, lastUse, useCount, settings) VALUES ("); dyStringPrintf(dy, "'%s', '%s', ", encUserName, encSessionName); dyStringAppend(dy, "'"); cleanHgSessionFromCart(cart); struct dyString *encoded = newDyString(4096); cartEncodeState(cart, encoded); // Now add all the default visibilities to output. outDefaultTracks(cart, encoded); sqlDyAppendEscaped(dy, encoded->string);