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:
@ -1845,9 +1845,6 @@ dcb_close(DCB *dcb)
|
|||||||
spinlock_acquire(&zombiespin);
|
spinlock_acquire(&zombiespin);
|
||||||
if (!dcb->dcb_is_zombie)
|
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
|
* Add closing dcb to the top of the list, setting zombie marker
|
||||||
*/
|
*/
|
||||||
@ -1873,8 +1870,10 @@ static bool
|
|||||||
dcb_maybe_add_persistent(DCB *dcb)
|
dcb_maybe_add_persistent(DCB *dcb)
|
||||||
{
|
{
|
||||||
int poolcount = -1;
|
int poolcount = -1;
|
||||||
if (dcb->user != NULL
|
char *user;
|
||||||
&& strlen(dcb->user)
|
user = session_getUser(dcb->session);
|
||||||
|
if (user != NULL
|
||||||
|
&& strlen(user)
|
||||||
&& dcb->server
|
&& dcb->server
|
||||||
&& dcb->server->persistpoolmax
|
&& dcb->server->persistpoolmax
|
||||||
&& !dcb->dcb_errhandle_called
|
&& !dcb->dcb_errhandle_called
|
||||||
@ -1888,6 +1887,8 @@ dcb_maybe_add_persistent(DCB *dcb)
|
|||||||
dcb->user)));
|
dcb->user)));
|
||||||
dcb->dcb_is_zombie = false;
|
dcb->dcb_is_zombie = false;
|
||||||
dcb->persistentstart = time(NULL);
|
dcb->persistentstart = time(NULL);
|
||||||
|
if (dcb->user) free(dcb->user);
|
||||||
|
dcb->user = strdup(user);
|
||||||
spinlock_acquire(&dcb->server->persistlock);
|
spinlock_acquire(&dcb->server->persistlock);
|
||||||
dcb->nextpersistent = dcb->server->persistent;
|
dcb->nextpersistent = dcb->server->persistent;
|
||||||
dcb->server->persistent = dcb;
|
dcb->server->persistent = dcb;
|
||||||
|
@ -222,7 +222,7 @@ session_alloc(SERVICE *service, DCB *client_dcb)
|
|||||||
* @return The dummy created session
|
* @return The dummy created session
|
||||||
*/
|
*/
|
||||||
SESSION *
|
SESSION *
|
||||||
session_alloc_dummy(DCB *client_dcb)
|
session_set_dummy(DCB *client_dcb)
|
||||||
{
|
{
|
||||||
SESSION *session;
|
SESSION *session;
|
||||||
|
|
||||||
|
@ -163,7 +163,7 @@ typedef struct session {
|
|||||||
|
|
||||||
SESSION *get_all_sessions();
|
SESSION *get_all_sessions();
|
||||||
SESSION *session_alloc(struct service *, struct dcb *);
|
SESSION *session_alloc(struct service *, struct dcb *);
|
||||||
SESSION *session_alloc_dummy(struct dcb *);
|
SESSION *session_set_dummy(struct dcb *);
|
||||||
bool session_free(SESSION *);
|
bool session_free(SESSION *);
|
||||||
int session_isvalid(SESSION *);
|
int session_isvalid(SESSION *);
|
||||||
int session_reply(void *inst, void *session, GWBUF *data);
|
int session_reply(void *inst, void *session, GWBUF *data);
|
||||||
|
@ -1643,7 +1643,7 @@ int gw_MySQLAccept(DCB *listener)
|
|||||||
}
|
}
|
||||||
|
|
||||||
client_dcb->service = listener->session->service;
|
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;
|
client_dcb->fd = c_sock;
|
||||||
|
|
||||||
// get client address
|
// get client address
|
||||||
|
Reference in New Issue
Block a user