This commit is patch to coap_transaction_id function
problem
- coap_hash function uses structure addr.sa to create tid
- when coap message is received,
tid, which is in received coap message, is used to
comparing sender's tid
- unmatched case occurs, when addr.sa is used to create tid
- in this case, sender cannot find coap response message
which has same tid of sender so infinite retransmission
happens on application
solution
- uses addr and port value to create tid similar to IPv6
Change-Id: I1665577394d772bacb0d923dfeb7094db99e4a3b
Signed-off-by: Jin-Seong Kim <jseong82.kim@samsung.com>
#ifdef WITH_POSIX
switch (peer->addr.sa.sa_family) {
case AF_INET:
+#if defined (__TINYARA__)
+ /* Local Fixes : Make hash value using IPv4 addr and port only */
+ coap_hash((const unsigned char *)&peer->addr.sin.sin_addr, sizeof(peer->addr.sin.sin_addr), h);
+ coap_hash((const unsigned char *)&peer->addr.sin.sin_port, sizeof(peer->addr.sin.sin_port), h);
+#else
coap_hash((const unsigned char *)&peer->addr.sa, peer->size, h);
+#endif
break;
case AF_INET6:
coap_hash((const unsigned char *)&peer->addr.sin6.sin6_port, sizeof(peer->addr.sin6.sin6_port), h);