diff --git a/src/ac/ac_backend.c b/src/ac/ac_backend.c index 9096d52..4512e1f 100644 --- a/src/ac/ac_backend.c +++ b/src/ac/ac_backend.c @@ -27,7 +27,7 @@ struct ac_backend_t { static struct ac_backend_t g_ac_backend; /* */ -static int ac_backend_soap_join(void) { +static int ac_backend_soap_join(int forcereset) { int result = 0; struct ac_soap_request* request; struct ac_http_soap_server* server; @@ -47,6 +47,7 @@ static int ac_backend_soap_join(void) { if (request) { ac_soapclient_add_param(request, "xs:string", "acid", g_ac.backendacid); ac_soapclient_add_param(request, "xs:string", "version", g_ac.backendversion); + ac_soapclient_add_param(request, "xs:boolean", "forcereset", (forcereset ? "true" : "false")); g_ac_backend.soaprequest = ac_soapclient_prepare_request(request, server); } } @@ -137,10 +138,10 @@ static int ac_backend_soap_waitevent(void) { struct ac_soap_response* response = ac_soapclient_recv_response(g_ac_backend.soaprequest); if (response) { /* Wait event result */ - /*if ((response->responsecode == HTTP_RESULT_OK) && response->xmlResponseReturn) { - TODO - }*/ - result = 0; + if ((response->responsecode == HTTP_RESULT_OK) && response->xmlResponseReturn) { + /* TODO */ + result = 0; + } /* */ ac_soapclient_free_response(response); @@ -217,6 +218,7 @@ static void ac_backend_soap_leave(void) { static void ac_backend_run(void) { int result; int connected = 0; + int forcereset = 1; capwap_lock_enter(&g_ac_backend.backendlock); @@ -242,11 +244,12 @@ static void ac_backend_run(void) { } } else { /* Join with a Backend Server */ - if (ac_backend_soap_join()) { + if (ac_backend_soap_join(forcereset)) { capwap_logging_debug("Joined with Backend Server"); /* Join Complete */ connected = 1; + forcereset = 0; g_ac_backend.backendstatus = 1; g_ac_backend.errorjoinbackend = 0; capwap_lock_exit(&g_ac_backend.backendlock); @@ -260,6 +263,7 @@ static void ac_backend_run(void) { capwap_logging_debug("Unable to join with Backend Server"); /* */ + forcereset = 1; g_ac_backend.backendstatus = 0; g_ac_backend.errorjoinbackend = 0; diff --git a/webservice/smartcapwap.wsdl b/webservice/smartcapwap.wsdl index d26aa71..5281af8 100644 --- a/webservice/smartcapwap.wsdl +++ b/webservice/smartcapwap.wsdl @@ -7,6 +7,7 @@ + @@ -18,7 +19,9 @@ - + + +