Use new session entry points to get remote and user rather than dereference

the DCB directly.
This commit is contained in:
Mark Riddoch
2014-06-19 16:07:21 +01:00
parent 058d553973
commit c759767a91
5 changed files with 26 additions and 15 deletions

View File

@ -731,3 +731,16 @@ return_succp:
return succp;
}
/**
* Return the username of the user connected to the client side of the
* session.
*
* @param session The session pointer.
* @return The user name or NULL if it can not be determined.
*/
char *
session_getUser(SESSION *session)
{
return (session && session->client) ? session->client->user : NULL;
}

View File

@ -150,6 +150,7 @@ bool session_free(SESSION *);
int session_isvalid(SESSION *);
int session_reply(void *inst, void *session, GWBUF *data);
char *session_get_remote(SESSION *);
char *session_getUser(SESSION *);
void printAllSessions();
void printSession(SESSION *);
void dprintAllSessions(struct dcb *);

View File

@ -270,11 +270,8 @@ char *remote, *userName;
if (strcmp(remote, my_instance->source))
my_session->active = 0;
}
if (session && session->client && session->client->user)
userName = session->client->user;
else
userName = NULL;
if (my_instance->userName && strcmp(userName,
userName = session_getUser(session);
if (my_instance->userName && userName && strcmp(userName,
my_instance->userName))
my_session->active = 0;
sprintf(my_session->filename, "%s.%d", my_instance->filebase,

View File

@ -218,7 +218,7 @@ newSession(FILTER *instance, SESSION *session)
{
REGEX_INSTANCE *my_instance = (REGEX_INSTANCE *)instance;
REGEX_SESSION *my_session;
char *remote;
char *remote, *user;
if ((my_session = calloc(1, sizeof(REGEX_SESSION))) != NULL)
{
@ -231,10 +231,9 @@ char *remote;
if (strcmp(remote, my_instance->source))
my_session->active = 0;
}
if (my_instance->user
&& session && session->client && session->client->user
&& strcmp(session->client->user,
my_instance->user))
if (my_instance->user && (user = session_getUser(session))
&& strcmp(user, my_instance->user))
{
my_session->active = 0;
}

View File

@ -274,6 +274,7 @@ newSession(FILTER *instance, SESSION *session)
TOPN_INSTANCE *my_instance = (TOPN_INSTANCE *)instance;
TOPN_SESSION *my_session;
int i;
char *remote, *user;
if ((my_session = calloc(1, sizeof(TOPN_SESSION))) != NULL)
{
@ -298,12 +299,12 @@ int i;
my_session->total.tv_sec = 0;
my_session->total.tv_usec = 0;
my_session->current = NULL;
if (session && session->client && session->client->remote)
my_session->clientHost = strdup(session->client->remote);
if ((remote = session_get_remote(session)) != NULL)
my_session->clientHost = strdup(remote);
else
my_session->clientHost = NULL;
if (session && session->client && session->client->user)
my_session->userName = strdup(session->client->user);
if ((user = session_getUser(session)) != NULL)
my_session->userName = strdup(user);
else
my_session->userName = NULL;
my_session->active = 1;