Improve user name setting in DCB for persistent connections and to fix bug; change name of session_alloc_dummy to session_set_dummy to be more informative.

This commit is contained in:
counterpoint
2015-08-28 18:20:18 +01:00
parent f1c3b65b15
commit a711b25fec
4 changed files with 9 additions and 8 deletions

View File

@ -1845,9 +1845,6 @@ dcb_close(DCB *dcb)
spinlock_acquire(&zombiespin);
if (!dcb->dcb_is_zombie)
{
char *user;
user = session_getUser(dcb->session);
if (NULL != user) dcb->user = strdup(user);
/*<
* Add closing dcb to the top of the list, setting zombie marker
*/
@ -1873,8 +1870,10 @@ static bool
dcb_maybe_add_persistent(DCB *dcb)
{
int poolcount = -1;
if (dcb->user != NULL
&& strlen(dcb->user)
char *user;
user = session_getUser(dcb->session);
if (user != NULL
&& strlen(user)
&& dcb->server
&& dcb->server->persistpoolmax
&& !dcb->dcb_errhandle_called
@ -1888,6 +1887,8 @@ dcb_maybe_add_persistent(DCB *dcb)
dcb->user)));
dcb->dcb_is_zombie = false;
dcb->persistentstart = time(NULL);
if (dcb->user) free(dcb->user);
dcb->user = strdup(user);
spinlock_acquire(&dcb->server->persistlock);
dcb->nextpersistent = dcb->server->persistent;
dcb->server->persistent = dcb;

View File

@ -222,7 +222,7 @@ session_alloc(SERVICE *service, DCB *client_dcb)
* @return The dummy created session
*/
SESSION *
session_alloc_dummy(DCB *client_dcb)
session_set_dummy(DCB *client_dcb)
{
SESSION *session;

View File

@ -163,7 +163,7 @@ typedef struct session {
SESSION *get_all_sessions();
SESSION *session_alloc(struct service *, struct dcb *);
SESSION *session_alloc_dummy(struct dcb *);
SESSION *session_set_dummy(struct dcb *);
bool session_free(SESSION *);
int session_isvalid(SESSION *);
int session_reply(void *inst, void *session, GWBUF *data);

View File

@ -1643,7 +1643,7 @@ int gw_MySQLAccept(DCB *listener)
}
client_dcb->service = listener->session->service;
client_dcb->session = session_alloc_dummy(client_dcb);
client_dcb->session = session_set_dummy(client_dcb);
client_dcb->fd = c_sock;
// get client address