mirror of
https://dev.iopsys.eu/bbf/icwmp.git
synced 2025-12-10 07:44:41 +01:00
Ticket refs #11035 : session should not retried after connection request
This commit is contained in:
parent
e5975d963d
commit
d22ecbdd91
3 changed files with 11 additions and 5 deletions
5
cwmp.c
5
cwmp.c
|
|
@ -187,6 +187,7 @@ void cwmp_schedule_session (struct cwmp *cwmp)
|
|||
static struct timespec time_to_wait = {0, 0};
|
||||
bool retry = false;
|
||||
|
||||
cwmp->cwmp_cr_event = 0;
|
||||
while (1)
|
||||
{
|
||||
pthread_mutex_lock (&(cwmp->mutex_session_send));
|
||||
|
|
@ -219,7 +220,7 @@ void cwmp_schedule_session (struct cwmp *cwmp)
|
|||
error = cwmp_schedule_rpc (cwmp,session);
|
||||
CWMP_LOG (INFO,"End session");
|
||||
run_session_end_func(session);
|
||||
if (session->error == CWMP_RETRY_SESSION)
|
||||
if (session->error == CWMP_RETRY_SESSION && (!list_empty(&(session->head_event_container)) || (list_empty(&(session->head_event_container)) && cwmp->cwmp_cr_event == 0)) )
|
||||
{
|
||||
error = cwmp_move_session_to_session_queue (cwmp, session);
|
||||
CWMP_LOG(INFO,"Retry session, retry count = %d, retry in %ds",cwmp->retry_count_session,cwmp_get_retry_interval(cwmp));
|
||||
|
|
@ -353,7 +354,7 @@ success:
|
|||
retry:
|
||||
CWMP_LOG (INFO,"Failed");
|
||||
session->error = CWMP_RETRY_SESSION;
|
||||
event_remove_noretry_event_container(session);
|
||||
event_remove_noretry_event_container(session, cwmp);
|
||||
|
||||
end:
|
||||
MXML_DELETE(session->tree_in);
|
||||
|
|
|
|||
8
event.c
8
event.c
|
|
@ -406,7 +406,7 @@ int event_remove_all_event_container(struct session *session, int rem_from)
|
|||
return CWMP_OK;
|
||||
}
|
||||
|
||||
int event_remove_noretry_event_container(struct session *session)
|
||||
int event_remove_noretry_event_container(struct session *session, struct cwmp *cwmp)
|
||||
{
|
||||
struct event_container *event_container;
|
||||
struct dm_parameter *dm_parameter;
|
||||
|
|
@ -420,7 +420,11 @@ int event_remove_noretry_event_container(struct session *session)
|
|||
free_dm_parameter_all_fromlist(&(event_container->head_dm_parameter));
|
||||
list_del(&(event_container->list));
|
||||
free (event_container);
|
||||
}
|
||||
}
|
||||
if (EVENT_CONST[event_container->code].CODE[0] == '6')
|
||||
{
|
||||
cwmp->cwmp_cr_event = 1;
|
||||
}
|
||||
}
|
||||
return CWMP_OK;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -275,6 +275,7 @@ typedef struct cwmp {
|
|||
struct list_head head_session_queue;
|
||||
pthread_mutex_t mutex_session_queue;
|
||||
struct session *session_send;
|
||||
bool cwmp_cr_event;
|
||||
pthread_mutex_t mutex_session_send;
|
||||
pthread_cond_t threshold_session_send;
|
||||
pthread_mutex_t mutex_periodic;
|
||||
|
|
@ -342,7 +343,7 @@ struct session *cwmp_add_queue_session (struct cwmp *cwmp);
|
|||
struct rpc *cwmp_add_session_rpc_acs (struct session *session, int type);
|
||||
struct event_container *cwmp_add_event_container (struct cwmp *cwmp, int event_idx, char *command_key);
|
||||
int event_remove_all_event_container(struct session *session, int rem_from);
|
||||
int event_remove_noretry_event_container(struct session *session);
|
||||
int event_remove_noretry_event_container(struct session *session, struct cwmp *cwmp);
|
||||
void cwmp_save_event_container (struct cwmp *cwmp,struct event_container *event_container);
|
||||
void *thread_event_periodic (void *v);
|
||||
void cwmp_add_notification(void);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue