jvermillard / leshan

OMA Lightweight M2M java implementation - LWM2M
40 stars 25 forks source link

LeshanClientExample.java error when try to read device object #50

Closed alseddnm closed 9 years ago

alseddnm commented 9 years ago

Hi, This bug occurred when try to read device object /3/0. When we Decode a byte array into a date value, I don't why we validate "value.length <= 8 " look at leshan.tlv.TlvDecoder.java line 178, We can by pass this issue if we change "value.length <= 11" ). How to reproduce it:

  1. start LeshanStandalone.java .
  2. run LeshanClientExample -> register device object.
  3. read 3/0 -> Error.

2014-12-02 09:47:31,703 INFO o.e.j.s.Server [main] Started @1059ms 2014-12-02 09:50:50,644 WARN l.s.s.ClientServlet [qtp93703502-36] Error accessing resource /api/clients/8df34a19-cdd9-4c92-ac8f-fa3da0f354ae/3/0. leshan.server.request.ResourceAccessException: Invalid content for type TIME at leshan.server.californium.impl.LwM2mResponseBuilder.buildContentResponse(LwM2mResponseBuilder.java:267) ~[classes/:?] at leshan.server.californium.impl.LwM2mResponseBuilder.visit(LwM2mResponseBuilder.java:110) ~[classes/:?] at leshan.server.request.ReadRequest.accept(ReadRequest.java:98) ~[classes/:?] at leshan.server.californium.impl.CaliforniumLwM2mRequestSender$1.buildResponse(CaliforniumLwM2mRequestSender.java:106) ~[classes/:?] at leshan.server.californium.impl.CaliforniumLwM2mRequestSender$SyncRequestObserver.onResponse(CaliforniumLwM2mRequestSender.java:242) ~[classes/:?] at org.eclipse.californium.core.coap.Request.setResponse(Request.java:356) ~[californium-core-1.0.0-M2.jar:?] at org.eclipse.californium.core.server.ServerMessageDeliverer.deliverResponse(ServerMessageDeliverer.java:152) ~[californium-core-1.0.0-M2.jar:?] at org.eclipse.californium.core.network.stack.CoapStack$StackTopAdapter.receiveResponse(CoapStack.java:190) ~[californium-core-1.0.0-M2.jar:?] at org.eclipse.californium.core.network.stack.AbstractLayer.receiveResponse(AbstractLayer.java:98) ~[californium-core-1.0.0-M2.jar:?] at org.eclipse.californium.core.network.stack.ObserveLayer.receiveResponse(ObserveLayer.java:138) ~[californium-core-1.0.0-M2.jar:?] at org.eclipse.californium.core.network.stack.AbstractLayer.receiveResponse(AbstractLayer.java:98) ~[californium-core-1.0.0-M2.jar:?] at org.eclipse.californium.core.network.stack.BlockwiseLayer.receiveResponse(BlockwiseLayer.java:281) ~[californium-core-1.0.0-M2.jar:?] at org.eclipse.californium.core.network.stack.AbstractLayer.receiveResponse(AbstractLayer.java:98) ~[californium-core-1.0.0-M2.jar:?] at org.eclipse.californium.core.network.stack.TokenLayer.receiveResponse(TokenLayer.java:82) ~[californium-core-1.0.0-M2.jar:?] at org.eclipse.californium.core.network.stack.AbstractLayer.receiveResponse(AbstractLayer.java:98) ~[californium-core-1.0.0-M2.jar:?] at org.eclipse.californium.core.network.stack.ReliabilityLayer.receiveResponse(ReliabilityLayer.java:224) ~[californium-core-1.0.0-M2.jar:?] at org.eclipse.californium.core.network.stack.AbstractLayer.receiveResponse(AbstractLayer.java:98) ~[californium-core-1.0.0-M2.jar:?] at org.eclipse.californium.core.network.stack.CoapStack.receiveResponse(CoapStack.java:137) ~[californium-core-1.0.0-M2.jar:?] at org.eclipse.californium.core.network.CoAPEndpoint$InboxImpl.receiveMessage(CoAPEndpoint.java:594) ~[californium-core-1.0.0-M2.jar:?] at org.eclipse.californium.core.network.CoAPEndpoint$InboxImpl.access$700(CoAPEndpoint.java:505) ~[californium-core-1.0.0-M2.jar:?] at org.eclipse.californium.core.network.CoAPEndpoint$InboxImpl$1.run(CoAPEndpoint.java:517) ~[californium-core-1.0.0-M2.jar:?] at org.eclipse.californium.core.network.CoAPEndpoint$4.run(CoAPEndpoint.java:649) ~[californium-core-1.0.0-M2.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) ~[?:1.7.0_60] at java.util.concurrent.FutureTask.run(FutureTask.java:262) ~[?:1.7.0_60] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178) ~[?:1.7.0_60] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292) ~[?:1.7.0_60] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) ~[?:1.7.0_60] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) ~[?:1.7.0_60] at java.lang.Thread.run(Thread.java:745) [?:1.7.0_60] Caused by: leshan.core.node.codec.InvalidValueException: Invalid content for type TIME at leshan.core.node.codec.LwM2mNodeDecoder.parseTlvValue(LwM2mNodeDecoder.java:283) ~[classes/:?] at leshan.core.node.codec.LwM2mNodeDecoder.parseResourceTlv(LwM2mNodeDecoder.java:236) ~[classes/:?] at leshan.core.node.codec.LwM2mNodeDecoder.parseTlv(LwM2mNodeDecoder.java:186) ~[classes/:?] at leshan.core.node.codec.LwM2mNodeDecoder.decode(LwM2mNodeDecoder.java:107) ~[classes/:?] at leshan.server.californium.impl.LwM2mResponseBuilder.buildContentResponse(LwM2mResponseBuilder.java:263) ~[classes/:?] ... 28 more Caused by: leshan.tlv.TlvException: Invalid length for a time value: 10 at leshan.tlv.TlvDecoder.decodeDate(TlvDecoder.java:181) ~[classes/:?] at leshan.core.node.codec.LwM2mNodeDecoder.parseTlvValue(LwM2mNodeDecoder.java:276) ~[classes/:?] at leshan.core.node.codec.LwM2mNodeDecoder.parseResourceTlv(LwM2mNodeDecoder.java:236) ~[classes/:?] at leshan.core.node.codec.LwM2mNodeDecoder.parseTlv(LwM2mNodeDecoder.java:186) ~[classes/:?] at leshan.core.node.codec.LwM2mNodeDecoder.decode(LwM2mNodeDecoder.java:107) ~[classes/:?] at leshan.server.californium.impl.LwM2mResponseBuilder.buildContentResponse(LwM2mResponseBuilder.java:263) ~[classes/:?] ... 28 more

sbernard31 commented 9 years ago

This is a bug at client side. As jschloman said here :

This is a known issue that should hopefully be resolved by moving the leshan-client over to LwM2mNodeEncoder/LwM2mNode from the Leshan Core (you can see a related issue tackled in a PR here: https://github.com/jvermillard/leshan/pull/48

sbernard31 commented 9 years ago

This should be fixed now.