sescmd_cursor_reset didn't reset cursor's property pointer which made reset ineffective.

This commit is contained in:
VilhoRaatikka 2014-06-16 13:40:45 +03:00
parent 0200ca4e24
commit 4f03c775e5
3 changed files with 11 additions and 6 deletions

View File

@ -469,7 +469,7 @@ int error_count = 0;
s = strtok(NULL, ",");
}
}
if (filters)
if (filters && obj->element)
{
serviceSetFilters(obj->element, filters);
}

View File

@ -55,8 +55,8 @@ typedef struct rses_property_st rses_property_t;
typedef struct router_client_session ROUTER_CLIENT_SES;
typedef enum rses_property_type_t {
RSES_PROP_TYPE_UNDEFINED=0,
RSES_PROP_TYPE_SESCMD,
RSES_PROP_TYPE_UNDEFINED=-1,
RSES_PROP_TYPE_SESCMD=0,
RSES_PROP_TYPE_FIRST = RSES_PROP_TYPE_SESCMD,
RSES_PROP_TYPE_LAST=RSES_PROP_TYPE_SESCMD,
RSES_PROP_TYPE_COUNT=RSES_PROP_TYPE_LAST+1

View File

@ -1640,6 +1640,8 @@ static bool select_connect_backend_servers(
DCB_REASON_NOT_RESPONDING,
&router_handle_state_switch,
(void *)&backend_ref[i]);
bref_clear_state(&backend_ref[i],
BREF_CLOSED);
bref_clear_state(&backend_ref[i],
BREF_NOT_USED);
bref_set_state(&backend_ref[i],
@ -2198,11 +2200,14 @@ static bool sescmd_cursor_history_empty(
static void sescmd_cursor_reset(
sescmd_cursor_t* scur)
{
ROUTER_CLIENT_SES* rses;
CHK_SESCMD_CUR(scur);
CHK_CLIENT_RSES(scur->scmd_cur_rses);
rses = scur->scmd_cur_rses;
scur->scmd_cur_ptr_property = &rses->rses_properties[RSES_PROP_TYPE_SESCMD];
CHK_RSES_PROP((*scur->scmd_cur_ptr_property));
scur->scmd_cur_active = false;
scur->scmd_cur_cmd = &(*scur->scmd_cur_ptr_property)->rses_prop_data.sescmd;
}
@ -2688,6 +2693,8 @@ static void handleError (
return;
}
bref = get_bref_from_dcb(rses, backend_dcb);
/**
* Error handler is already called for this DCB because
* it's not polling anymore. It can be assumed that
@ -2699,9 +2706,7 @@ static void handleError (
*succp = true;
return;
}
bref = get_bref_from_dcb(rses, backend_dcb);
CHK_BACKEND_REF(bref);
if (BREF_IS_WAITING_RESULT(bref))