diff --git a/cwmp.c b/cwmp.c index 5f5776e..5c0fb52 100644 --- a/cwmp.c +++ b/cwmp.c @@ -179,13 +179,21 @@ int cwmp_schedule_rpc(struct cwmp *cwmp, struct session *session) goto retry; CWMP_LOG(INFO, "Send the %s RPC message to the ACS", rpc_acs_methods[rpc_acs->type].name); - if (xml_send_message(cwmp, session, rpc_acs) || thread_end) - goto retry; + if (xml_send_message(cwmp, session, rpc_acs)) { + if (rpc_acs->type == RPC_ACS_GET_RPC_METHODS) + continue; + else + goto retry; + } CWMP_LOG(INFO, "Get the %sResponse message from the ACS", rpc_acs_methods[rpc_acs->type].name); if (rpc_acs_methods[rpc_acs->type].parse_response || thread_end) - if (rpc_acs_methods[rpc_acs->type].parse_response(cwmp, session, rpc_acs)) - goto retry; + if (rpc_acs_methods[rpc_acs->type].parse_response(cwmp, session, rpc_acs)) { + if (rpc_acs->type == RPC_ACS_GET_RPC_METHODS) + continue; + else + goto retry; + } ilist = ilist->prev; if (rpc_acs_methods[rpc_acs->type].extra_clean != NULL)