In newSession (readconnroute.c) connect_dcb will create backend connection via backend_dcb->func.connect()
session_alloc will not start a newSession for the LISTENING socket In dcb.h void *data was added to keep protocol session data if the session is not started in accept(9 but later.
This commit is contained in:
parent
088b3473bc
commit
237a311dda
@ -66,7 +66,9 @@ SESSION *session;
|
||||
session->state = SESSION_STATE_ALLOC;
|
||||
client->session = session;
|
||||
|
||||
session->router_session = service->router->newSession(service->router_instance, session);
|
||||
// this will prevent the connect() backends via connect_dcb() for listening socket
|
||||
if (client->state != DCB_STATE_LISTENING)
|
||||
session->router_session = service->router->newSession(service->router_instance, session);
|
||||
|
||||
spinlock_acquire(&session_spin);
|
||||
session->next = allSessions;
|
||||
|
@ -22,6 +22,7 @@
|
||||
|
||||
struct session;
|
||||
struct server;
|
||||
struct service;
|
||||
|
||||
/**
|
||||
* @file dcb.h The Descriptor Control Block
|
||||
@ -111,6 +112,8 @@ typedef struct dcb {
|
||||
DCBSTATS stats; /**< DCB related statistics */
|
||||
|
||||
struct dcb *next; /**< Next DCB in the chain of allocated DCB's */
|
||||
struct service *service; /**< The related service */
|
||||
void *data; /**< Specific client data */
|
||||
} DCB;
|
||||
|
||||
/* DCB states */
|
||||
|
@ -209,7 +209,8 @@ int i;
|
||||
* Open a backend connection, putting the DCB for this
|
||||
* connection in the client->dcb
|
||||
*/
|
||||
//client->dcb = backend_connect(session);
|
||||
|
||||
client->dcb = connect_dcb(candidate->server, session, candidate->server->protocol);
|
||||
|
||||
/* Add this session to the list of active sessions */
|
||||
spinlock_acquire(&inst->lock);
|
||||
|
Loading…
x
Reference in New Issue
Block a user