View Issue Details

IDProjectCategoryView StatusLast Update
0000141easycwmpHelppublic2021-06-30 05:43
Reporterstone1223 Assigned To 
PrioritynormalSeverityminorReproducibilityhave not tried
Status newResolutionopen 
Summary0000141: Could not talk with ACS. Receive Empty message from ACS.
DescriptionI have device running easycwmp. It works fine against test ACS. But when I change to another ACS which I have not full control. It has problems, that I doesn't appear to the ACS. I don't know what could be the reason. The log is like below:

2016-04-04 17:24:05 [easycwmp] NOTICE - add event '0 BOOTSTRAP'
2016-04-04 17:24:05 [easycwmp] NOTICE - add event '2 PERIODIC'
2016-04-04 17:24:05 [easycwmp] NOTICE - external script init
config_init_local(65):: easycwmp.@local[0].port=7547
config_init_local(83):: easycwmp.@local[0].ubus_socket=/var/run/ubus.sock
config_init_local(94):: easycwmp.@local[0].logging_level=3
config_init_local(71):: easycwmp.@local[0].username=xxx
config_init_local(77):: easycwmp.@local[0].password=xxx
config_init_local(55):: easycwmp.@local[0].interface=pppoe-wan
config_init_acs(177):: easycwmp.@acs[0].periodic_enable=1
config_init_acs(183):: easycwmp.@acs[0].periodic_interval=3600
config_init_acs(190):: easycwmp.@acs[0].periodic_time=0001-01-01T00:00:00Z
config_init_acs(165):: easycwmp.@acs[0].username=xxx
config_init_acs(171):: easycwmp.@acs[0].password=xxx
config_init_acs(159):: easycwmp.@acs[0].url=xxx
2016-04-04 17:24:05 [easycwmp] NOTICE - init periodic inform: reference time = n/a, interval = 3600
2016-04-04 17:24:05 [easycwmp] NOTICE - external: execute update_value_change (null)
2016-04-04 17:24:05 [easycwmp] NOTICE - daemon started
2016-04-04 17:24:05 [easycwmp] NOTICE - external: execute inform device_id
2016-04-04 17:24:06 [easycwmp] NOTICE - external script exit
2016-04-04 17:24:06 [easycwmp] NOTICE - add event '2 PERIODIC'
2016-04-04 17:24:06 [easycwmp] NOTICE - interface pppoe-wan has ip 184.22.148.140
+++ HTTP SERVER CONFIGURATION +++
ip: 'x.x.x.x'
port: '7547'
--- HTTP SERVER CONFIGURATION ---
2016-04-04 17:24:06 [easycwmp] NOTICE - http server initialized
root@xxx:/etc/easycwmp# 2016-04-04 17:24:06 [easycwmp] NOTICE - entering main loop
2016-04-04 17:24:06 [easycwmp] NOTICE - start session
+++ HTTP CLIENT CONFIGURATION +++
http_client_init(50):: url: xxx
http_client_init(56):: ssl_verify: SSL certificate validation disabled.
--- HTTP CLIENT CONFIGURATION ---
2016-04-04 17:24:06 [easycwmp] NOTICE - configured acs url xxx
2016-04-04 17:24:06 [easycwmp] NOTICE - external script init
2016-04-04 17:24:06 [easycwmp] NOTICE - external: execute inform parameter
2016-04-04 17:24:06 [easycwmp] NOTICE - send Inform
+++ SEND HTTP REQUEST +++
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<soap_env:Envelope
xmlns:soap_env="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soap_enc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cwmp="urn:dslforum-org:cwmp-1-2">
  <soap_env:Header>
   <cwmp:ID soap_env:mustUnderstand="1">1</cwmp:ID>
  </soap_env:Header>
  <soap_env:Body>
   <cwmp:Inform>
    <DeviceId>
     <Manufacturer>XXX</Manufacturer>
     <OUI>000000</OUI>
     <ProductClass>XXX</ProductClass>
     <SerialNumber>FFFFFF123456</SerialNumber>
    </DeviceId>
   <Event soap_enc:arrayType="cwmp:EventStruct[2]">
     <EventStruct>
      <EventCode>0 BOOTSTRAP</EventCode>
      <CommandKey />
     </EventStruct>
     <EventStruct>
      <EventCode>2 PERIODIC</EventCode>
      <CommandKey />
     </EventStruct>
    </Event>
    <MaxEnvelopes>1</MaxEnvelopes>
    <CurrentTime>2016-04-04T17:24:06+07:00</CurrentTime>
    <RetryCount>0</RetryCount>
    <ParameterList soap_enc:arrayType="cwmp:ParameterValueStruct[11]">
     <ParameterValueStruct>
      <Name>InternetGatewayDevice.DeviceInfo.HardwareVersion</Name>
      <Value xsi:type="xsd:string">CPE XXX</Value>
     </ParameterValueStruct>
     <ParameterValueStruct>
      <Name>InternetGatewayDevice.DeviceInfo.Manufacturer</Name>
      <Value xsi:type="xsd:string">XXX</Value>
     </ParameterValueStruct>
     <ParameterValueStruct>
      <Name>InternetGatewayDevice.DeviceInfo.ManufacturerOUI</Name>
      <Value xsi:type="xsd:string">000000</Value>
     </ParameterValueStruct>
     <ParameterValueStruct>
      <Name>InternetGatewayDevice.DeviceInfo.ProductClass</Name>
      <Value xsi:type="xsd:string">xxx</Value>
     </ParameterValueStruct>
     <ParameterValueStruct>
      <Name>InternetGatewayDevice.DeviceInfo.ProvisioningCode</Name>
      <Value xsi:type="xsd:string"></Value>
     </ParameterValueStruct>
     <ParameterValueStruct>
      <Name>InternetGatewayDevice.DeviceInfo.SerialNumber</Name>
      <Value xsi:type="xsd:string">FFFFFF123456</Value>
     </ParameterValueStruct>
     <ParameterValueStruct>
      <Name>InternetGatewayDevice.DeviceInfo.SoftwareVersion</Name>
      <Value xsi:type="xsd:string">CPE XXXF</Value>
     </ParameterValueStruct>
     <ParameterValueStruct>
      <Name>InternetGatewayDevice.DeviceInfo.SpecVersion</Name>
      <Value xsi:type="xsd:string">1.0</Value>
     </ParameterValueStruct>
     <ParameterValueStruct>
      <Name>InternetGatewayDevice.ManagementServer.ConnectionRequestURL</Name>
      <Value xsi:type="xsd:string">http://x.x.x.x:7547/</Value>
     </ParameterValueStruct>
     <ParameterValueStruct>
      <Name>InternetGatewayDevice.ManagementServer.ParameterKey</Name>
      <Value xsi:type="xsd:string"></Value>
     </ParameterValueStruct>
     <ParameterValueStruct>
      <Name>InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.ExternalIPAddress</Name>
      <Value xsi:type="xsd:string"></Value>
     </ParameterValueStruct>
    </ParameterList>
   </cwmp:Inform>
  </soap_env:Body>
</soap_env:Envelope>
--- SEND HTTP REQUEST ---
> POST /fbb-sbn HTTP/1.1
Host: xxx
User-Agent: easycwmp
Content-Type: text/html; charset="utf-8"
SOAPAction:
Content-Length: 3200
Expect: 100-continue
 
< HTTP/1.1 100 Continue
< HTTP/1.1 204 No Content
< Server: nginx
< Date: Mon, 04 Apr 2016 10:24:06 GMT
< Content-Type: text/xml;charset=UTF-8
< Connection: keep-alive
< Set-Cookie: AOS_WEB_JSESSIONID=1w6rrcosek6qwkijqcu2z0aop;Path=/;HttpOnly
< Expires: Thu, 01 Jan 1970 00:00:00 GMT
< SOAPAction: ""
<
+++ RECEIVED EMPTY HTTP RESPONSE +++
rpc_inform(223): parse Inform xml message from ACS: Empty message
2016-04-04 17:24:06 [easycwmp] NOTICE - sending Inform failed
2016-04-04 17:24:06 [easycwmp] NOTICE - external: execute apply service
2016-04-04 17:24:06 [easycwmp] NOTICE - external script exit
2016-04-04 17:24:06 [easycwmp] NOTICE - end session failed
2016-04-04 17:24:06 [easycwmp] NOTICE - retry session in 7 sec, RetryCount = 1
2016-04-04 17:24:14 [easycwmp] NOTICE - start session

TagsNo tags attached.

Activities

mohamed.kallel

2016-06-16 10:55

administrator   ~0000483

Your ACS send empty message (http 204) after receiving Inform from CPE. I do not know if a some behaviour is allowed in the TR-069 because as I know the ACS should send InformResponse message when he get Inform message from the CPE

mohamed.kallel

2016-06-16 10:57

administrator   ~0000484

what is your ACS?

stone1223

2016-06-17 12:56

reporter   ~0000486

Hi, it is a commercial ACS. I found the problem is here:

<soap_env:Envelope
xmlns:soap_env="http://schemas.xmlsoap.org/soap/envelope/" [^]
xmlns:soap_enc="http://schemas.xmlsoap.org/soap/encoding/" [^]
xmlns:xsd="http://www.w3.org/2001/XMLSchema" [^]
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" [^]
xmlns:cwmp="urn:dslforum-org:cwmp-1-2">

The attributes are separated by [CR] [LF]. The ACS cannot parse the attribute with it. I should change the separator to [SPACE]. I tried to change in message.h. But it seems not the correct one. How could I change it to SPACE, is this part of the libmicroxml, including the function mxmlLoadString()?

Thank you.

mohamed.kallel

2016-06-17 14:15

administrator   ~0000487

You have to change it in microxml

chengang

2021-06-30 05:43

reporter   ~0001028

I solved a similar problem, The attributes are separated by [LF],I changed the separator to [SPACE]:
I fixed a fun according mohamed.kallel's suggestion
In mxml_write_node() of microxml
for (i = node->value.element.num_attrs, attr = node->value.element.attrs;
         i > 0;
         i --, attr ++)
    {
      width = strlen(attr->name);

      if (attr->value)
        width += strlen(attr->value) + 3;

      if (global->wrap > 0 && (col + width) > global->wrap)
      {
        //fixed
        //if ((*putc_cb)('\n', p) < 0)
        if ((*putc_cb)(' ', p) < 0)
          return (-1);

        col = 0;
      }

Issue History

Date Modified Username Field Change
2016-06-14 12:49 stone1223 New Issue
2016-06-16 10:55 mohamed.kallel Note Added: 0000483
2016-06-16 10:57 mohamed.kallel Note Added: 0000484
2016-06-17 12:56 stone1223 Note Added: 0000486
2016-06-17 14:15 mohamed.kallel Note Added: 0000487
2021-06-30 05:43 chengang Note Added: 0001028