[sr-dev] [kamailio/kamailio] [5.2.2] sometimes wss doesn't work with received TLS packet in specific condition (#1933)
BroWater
notifications at github.com
Tue Apr 23 10:11:15 CEST 2019
### Description
I bind a wss port on kamailio for connecting to WebRTC clients,
when I received a TLS packet on wss port,
it will reply a HTML window to browser who sent the packet ,
as defined in kamailio.cfg:
> \# xhttp event route
> event_route[xhttp:request] {
> ...
>
> If(wss port receives a packet)
> {
> xhttp_reply("200", "OK", "text/html","<html><head><meta http-equiv=\"refresh\" content=\"0;url=$shv(URLToBeOpened)\"></head></html>");
> }
> ...
> }
However , sometimes the HTML window appears stuck in a connecting state,
it may be connected or timeout finally.
Above problem happens on ARMv4 , but works smoothly on AArch64.
I put some related information in Troubleshooting block,
hope these may help to figure out why this happens.
### Troubleshooting
#### Reproduction
Access to https://(IP address of kamailio):(wss port),
and stuck in loading page.
<Environment settings>
[ARMv4]
config.mak:
CC=/opt/toolchains/sdk51/gcc/bin/arm-marvell-linux-gnueabi-gcc make cfg include_modules="db_sqlite tls websocket" mode=debug ARCH=armv41 CPUTYPE=cortex-a8 LOCALBASE=/mnt/test/kamailio/
[AArch64]
config.mak:
CC=/opt/toolchains/aarch64-thunderx/bin/aarch64-thunderx-linux-gnu-gcc make cfg include_modules="db_sqlite tls websocket" mode=debug ARCH=aarch64 CPUTYPE=ARMv8 LOCALBASE=/mnt/test/kamailio/
#### Debugging Data
**Note: Not the same time as Log Messsages and SIP Traffic**
[ARMv4]
\# netstat -apn | grep 10443
tcp 0 0 10.100.92.52:10443 0.0.0.0:* LISTEN 32418/kamailio
tcp 518 0 10.100.92.52:10443 10.100.92.29:54693 CLOSE_WAIT 32417/kamailio
Recv-Q on wss port seems stuck here...
[AArch64]
\# netstat -apn | grep 10443
tcp 0 0 10.100.92.222:10443 0.0.0.0:* LISTEN 9799/kamailio
tcp 0 0 10.100.92.222:10443 10.100.92.29:54817 TIME_WAIT -
tcp 0 0 10.100.92.222:10443 10.100.92.29:54818 TIME_WAIT -
tcp 0 0 10.100.92.222:10443 10.100.92.29:54820 ESTABLISHED 9798/kamailio
#### Log Messages
WSS port used here is 10443,
10.100.92.29 is my PC which uses a WebRTC client to connect to kamailio,
10.100.92.222 is kamailio on AAch64,
10.100.92.52 is kamailio on ARMv4.
[ARMv4] (which stuck in connecting to https://10.100.92.222:10443 )
(no related log was output...)
whole log here:
[WSS_TLS_FAIL_10.100.92.52.txt](https://github.com/kamailio/kamailio/files/3106496/WSS_TLS_FAIL_10.100.92.52.txt)
[AArch64]
...
DEBUG: tls [tls_locking.c:110]: locking_f(): lock get (9): 2 (ex_data.c:318)
DEBUG: tls [tls_locking.c:116]: locking_f(): lock release (10): 2 (ex_data.c:338)
DEBUG: tls [tls_locking.c:110]: locking_f(): lock get (5): 2 (ex_data.c:507)
DEBUG: tls [tls_locking.c:116]: locking_f(): lock release (6): 2 (ex_data.c:517)
DEBUG: tls [tls_domain.c:736]: sr_ssl_ctx_info_callback(): SSL handshake done
DEBUG: tls [tls_domain.c:740]: sr_ssl_ctx_info_callback(): SSL disable renegotiation
DEBUG: tls [tls_server.c:415]: tls_accept(): TLS accept successful
EBUG: tls [tls_server.c:422]: tls_accept(): tls_accept: new connection from 10.100.92.29:53189 using TLSv1/SSLv3 AES256-SHA 256
DEBUG: tls [tls_server.c:425]: tls_accept(): tls_accept: local socket: 10.100.92.222:10443
DEBUG: tls [tls_server.c:436]: tls_accept(): tls_accept: client did not present a certificate
DEBUG: <core> [core/tcp_read.c:1492]: tcp_read_req(): read= 0 bytes, parsed=0, state=0, error=1
DEBUG: <core> [core/tcp_read.c:1495]: tcp_read_req(): last char=0x00, parsed msg=
...
whole log here:
[WSS_TLS_OK_10.100.92.222.txt](https://github.com/kamailio/kamailio/files/3106497/WSS_TLS_OK_10.100.92.222.txt)
#### SIP Traffic
TLS packets captured image
[ARMv4]
https://imgur.com/jgnTaLy
[AArch64]
https://imgur.com/pfpWSXB
### Possible Solutions
### Additional Information
* **Kamailio Version** - output of `kamailio -v`
[ARMv4]
/mnt/test/kamailio/sbin# ./kamailio -v
version: MyLogo , 5.2.2 (armv41/linux) a82930-dirty
flags: STATS: Off, EXTRA_DEBUG, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, USE_PTHREAD_MUTEX, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES
MAX_RECV_BUFFER_SIZE 262144 MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: a82930 -dirty
compiled on 15:20:56 Apr 22 2019 with /opt/toolchains/sdk51/gcc/bin/arm-marvell-linux-gnueabi-gcc 4.6.2
[AArch64]
/mnt/test/kamailio/sbin# ./kamailio -v
version: MyLogo , 5.2.0-dev3 (aarch64/linux)
flags: STATS: Off, EXTRA_DEBUG, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT-NOSMP, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES
ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: unknown
compiled on 15:47:47 Feb 6 2018 with /opt/toolchains/aarch64-thunderx/bin/aarch64-thunderx-linux-gnu-gcc 5.3.0
* **Operating System**:
[ARMv4]
Linux Test 3.2.36-1.00 #1479 SMP Mon Apr 15 10:21:28 CST 2019 armv7l GNU/Linux
[AArch64]
Linux Test 4.4.13 #1 SMP PREEMPT Fri Mar 24 10:50:44 CST 2017 aarch64 GNU/Linux
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/1933
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-dev/attachments/20190423/a9a9eb80/attachment.html>
More information about the sr-dev
mailing list