Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LWS_CALLBACK_EVENT_WAIT_CANCELLED event not supported for FreeRtos with lwip #3120

Open
sush126 opened this issue Apr 19, 2024 · 10 comments
Open

Comments

@sush126
Copy link

sush126 commented Apr 19, 2024

Hi @lws-team ,
"On the Unix platform, when I call the lws_cancel_service() API, I receive the LWS_CALLBACK_EVENT_WAIT_CANCELLED event in the WebSocket callback function (lwscallback). However, on the FreeRTOS platform, I do not receive this event. Are there any similar events that I should expect from libwebsocket? I need to trigger lws_writable from within the callback function based on an event. Could you please suggest a solution for this?"

@lws-team
Copy link
Member

Recent lws supports it on freertos... it uses two UDP sockets back - back to simulate a pipe().

@sush126
Copy link
Author

sush126 commented Apr 19, 2024

i am using v4.3.2 can you please mention which recent version i can use it which has support for freertos LWS_CALLBACK_EVENT_WAIT_CANCELLED event

@lws-team
Copy link
Member

It should have it, but does your lwip / freertos build support udp?

@sush126
Copy link
Author

sush126 commented Apr 20, 2024

yes LWS_WITH_UDP is defined , please find below lws_config.h file

/* lws_config.h Generated from lws_config.h.in */

#ifndef NDEBUG
#ifndef _DEBUG
#define _DEBUG
#endif
#endif

#define LWS_INSTALL_DATADIR "D:/libwebsocket_plat/test/lws/.conan/data/websockets/1.0.6-4444617a/embeddedV/stable/package/36e27edb2c8581008f0583330e65cd1eddbe05ad/share"
#define LWS_INSTALL_LIBDIR "D:/libwebsocket_plat/test/lws/.conan/data/websockets/1.0.6-4444617a/embeddedV/stable/package/36e27edb2c8581008f0583330e65cd1eddbe05ad/lib"
#define LWS_LIBRARY_VERSION_MAJOR 4
#define LWS_LIBRARY_VERSION_MINOR 3
#define LWS_LIBRARY_VERSION_PATCH_ELABORATED 2-v4.3.2-2-g9d0a696d
#define LWS_LIBRARY_VERSION_PATCH 2

/* LWS_LIBRARY_VERSION_NUMBER looks like 1005001 for e.g. version 1.5.1 /
#define LWS_LIBRARY_VERSION_NUMBER (LWS_LIBRARY_VERSION_MAJOR * 1000000) +
(LWS_LIBRARY_VERSION_MINOR * 1000) +
LWS_LIBRARY_VERSION_PATCH
#define LWS_MAX_SMP 1
#define LWS_AMAZON_RTOS
/
#undef LWS_ESP_PLATFORM /
/
#undef LWS_LIBRARY_VERSION_NUMBER */

/* #undef LWS_EXT_PTHREAD_LIBRARIES */

/* #undef LWS_AVOID_SIGPIPE_IGN /
#define LWS_BUILD_HASH "v4.3.2-2-g9d0a696d"
/
#undef LWS_BUILTIN_GETIFADDRS /
#define LWS_CLIENT_HTTP_PROXYING
/
#undef LWS_DETECTED_PLAT_IOS /
/
#undef LWS_FALLBACK_GETHOSTBYNAME /
#define LWS_HAS_INTPTR_T
#define LWS_HAS_GETOPT_LONG
/
#undef LWS_HAVE__ATOI64 /
#define LWS_HAVE_ATOLL
/
#undef LWS_HAVE_BN_bn2binpad /
/
#undef LWS_HAVE_CLOCK_GETTIME /
/
#undef LWS_HAVE_EC_POINT_get_affine_coordinates /
/
#undef LWS_HAVE_EC_KEY_new_by_curve_name /
/
#undef LWS_HAVE_ECDSA_SIG_set0 /
/
#undef LWS_HAVE_EVP_MD_CTX_free /
/
#undef LWS_HAVE_EVP_aes_128_wrap /
/
#undef LWS_HAVE_EVP_aes_128_cfb8 /
/
#undef LWS_HAVE_EVP_aes_128_cfb128 /
/
#undef LWS_HAVE_EVP_aes_192_cfb8 /
/
#undef LWS_HAVE_EVP_aes_192_cfb128 /
/
#undef LWS_HAVE_EVP_aes_256_cfb8 /
/
#undef LWS_HAVE_EVP_aes_256_cfb128 /
/
#undef LWS_HAVE_EVP_aes_128_ofb /
/
#undef LWS_HAVE_EVP_aes_128_xts /
/
#undef LWS_HAVE_EVP_aes_128_ctr /
/
#undef LWS_HAVE_EVP_aes_128_ecb /
/
#undef LWS_HAVE_EVP_PKEY_new_raw_private_key /
/
#undef LWS_HAVE_EXECVPE /
#define LWS_HAVE_LOCALTIME_R
#define LWS_HAVE_GMTIME_R
#define LWS_HAVE_CTIME_R
/
#undef LWS_HAVE_GETGRGID_R /
/
#undef LWS_HAVE_GETGRNAM_R /
/
#undef LWS_HAVE_GETPWUID_R /
/
#undef LWS_HAVE_GETPWNAM_R /
/
#undef LWS_HAVE_LIBCAP /
/
#undef LWS_HAVE_HMAC_CTX_new /
#define LWS_HAVE_MALLOC_H
#define LWS_HAVE_MALLOC_TRIM
#define LWS_HAVE_MALLOC_USABLE_SIZE
/
#undef LWS_HAVE_mbedtls_md_setup /
/
#undef LWS_HAVE_mbedtls_net_init /
/
#undef LWS_HAVE_mbedtls_rsa_complete /
/
#undef LWS_HAVE_mbedtls_internal_aes_encrypt /
/
#undef LWS_HAVE_mbedtls_ssl_conf_alpn_protocols /
/
#undef LWS_HAVE_mbedtls_ssl_get_alpn_protocol /
/
#undef LWS_HAVE_mbedtls_ssl_conf_sni /
/
#undef LWS_HAVE_mbedtls_ssl_set_hs_ca_chain /
/
#undef LWS_HAVE_mbedtls_ssl_set_hs_own_cert /
/
#undef LWS_HAVE_mbedtls_ssl_set_hs_authmode /
/
#undef LWS_HAVE_mbedtls_ssl_set_verify /
/
#undef LWS_HAVE_mbedtls_x509_crt_parse_file /
#define LWS_HAVE_MBEDTLS_NET_SOCKETS
/
#undef LWS_HAVE_MBEDTLS_AUTH_KEY_ID /
/
#undef LWS_HAVE_NEW_UV_VERSION_H /
/
#undef LWS_HAVE_OPENSSL_ECDH_H /
/
#undef LWS_HAVE_OPENSSL_STACK /
/
#undef LWS_HAVE_PIPE2 /
/
#undef LWS_HAVE_EVENTFD /
#define LWS_HAVE_PTHREAD_H
/
#undef LWS_HAVE_RSA_SET0_KEY /
/
#undef LWS_HAVE_RSA_verify_pss_mgf1 /
/
#undef LWS_HAVE_SSL_CTX_get0_certificate /
/
#undef LWS_HAVE_SSL_CTX_load_verify_file /
/
#undef LWS_HAVE_SSL_CTX_load_verify_dir /
/
#undef LWS_HAVE_SSL_CTX_set1_param /
/
#undef LWS_HAVE_SSL_CTX_set_ciphersuites /
/
#undef LWS_HAVE_SSL_EXTRA_CHAIN_CERTS /
/
#undef LWS_HAVE_SSL_get0_alpn_selected /
/
#undef LWS_HAVE_SSL_CTX_EVP_PKEY_new_raw_private_key /
/
#undef LWS_HAVE_SSL_set_alpn_protos /
/
#undef LWS_HAVE_SSL_SET_INFO_CALLBACK /
/
#undef LWS_HAVE_SSL_SESSION_set_time /
/
#undef LWS_HAVE_SSL_SESSION_up_ref /
/
#undef LWS_HAVE__STAT32I64 /
#define LWS_HAVE_STDINT_H
/
#undef LWS_HAVE_SYS_CAPABILITY_H /
/
#undef LWS_HAVE_TIMEGM /
/
#undef LWS_HAVE_TLS_CLIENT_METHOD /
/
#undef LWS_HAVE_TLSV1_2_CLIENT_METHOD /
#define LWS_HAVE_SUSECONDS_T
/
#undef LWS_HAVE_UV_VERSION_H /
/
#undef LWS_HAVE_VFORK /
/
#undef LWS_HAVE_X509_get_key_usage /
/
#undef LWS_HAVE_X509_VERIFY_PARAM_set1_host /
#define LWS_LIBRARY_VERSION "4.3.2-v4.3.2-2-g9d0a696d"
#define LWS_LOGGING_BITFIELD_CLEAR 0
#define LWS_LOGGING_BITFIELD_SET 0
#define LWS_LOG_TAG_LIFECYCLE
/
#undef LWS_MINGW_SUPPORT /
/
#undef LWS_NO_CLIENT /
#define LWS_NO_DAEMONIZE
#define LWS_OPENSSL_CLIENT_CERTS "../share"
#define LWS_OPENSSL_SUPPORT
/
#undef LWS_PLAT_OPTEE /
/
#undef LWS_PLAT_UNIX /
#define LWS_PLAT_FREERTOS
/
#undef LWS_ROLE_CGI /
/
#undef LWS_ROLE_DBUS /
#define LWS_ROLE_H1
#define LWS_ROLE_H2
#define LWS_ROLE_RAW
#define LWS_ROLE_RAW_FILE
/
#undef LWS_ROLE_RAW_PROXY /
#define LWS_ROLE_WS
/
#undef LWS_ROLE_MQTT /
/
#undef LWS_SHA1_USE_OPENSSL_NAME /
#define LWS_SSL_CLIENT_USE_OS_CA_CERTS
/
#undef LWS_SSL_SERVER_WITH_ECDH_CERT /
#define LWS_SUPPRESS_DEPRECATED_API_WARNINGS
/
#undef LWS_TLS_LOG_PLAINTEXT_RX /
/
#undef LWS_TLS_LOG_PLAINTEXT_TX /
/
#undef LWS_WITH_ABSTRACT /
/
#undef LWS_WITH_ACCESS_LOG /
/
#undef LWS_WITH_ACME /
/
#undef LWS_WITH_ALSA /
/
#undef LWS_WITH_SYS_ASYNC_DNS /
/
#undef LWS_WITH_BORINGSSL /
/
#undef LWS_WITH_CGI /
/
#undef LWS_WITH_CONMON /
/
#undef LWS_WITH_COSE /
/
#undef LWS_WITH_CUSTOM_HEADERS /
/
#undef LWS_WITH_DEPRECATED_LWS_DLL /
/
#undef LWS_WITH_DETAILED_LATENCY /
/
#undef LWS_WITH_DIR /
/
#undef LWS_WITH_DRIVERS /
/
#undef LWS_WITH_ESP32 /
/
#undef LWS_HAVE_EVBACKEND_LINUXAIO /
/
#undef LWS_HAVE_EVBACKEND_IOURING /
/
#undef LWS_WITH_EXTERNAL_POLL /
/
#undef LWS_WITH_FILE_OPS /
/
#undef LWS_WITH_FSMOUNT /
/
#undef LWS_WITH_FTS /
/
#undef LWS_WITH_GENCRYPTO /
/
#undef LWS_WITH_GENERIC_SESSIONS /
/
#undef LWS_WITH_GLIB /
/
#undef LWS_WITH_GTK /
#define LWS_WITH_HTTP2
#define LWS_WITH_HTTP_BASIC_AUTH
/
#undef LWS_WITH_HTTP_BROTLI /
/
#undef LWS_HTTP_HEADERS_ALL /
/
#undef LWS_WITH_HTTP_PROXY /
/
#undef LWS_WITH_HTTP_STREAM_COMPRESSION /
#define LWS_WITH_HTTP_UNCOMMON_HEADERS
/
#undef LWS_WITH_IPV6 /
/
#undef LWS_WITH_JOSE /
/
#undef LWS_WITH_CBOR /
#define LWS_WITH_CBOR_FLOAT
#define LWS_WITH_LEJP
/
#undef LWS_WITH_LIBEV /
/
#undef LWS_WITH_LIBEVENT /
/
#undef LWS_WITH_LIBUV /
/
#undef LWS_WITH_SDEVENT /
#define LWS_WITH_LWSAC
#define LWS_LOGS_TIMESTAMP
#define LWS_WITH_MBEDTLS
/
#undef LWS_WITH_MINIZ /
/
#undef LWS_WITH_NETLINK /
#define LWS_WITH_NETWORK
/
#undef LWS_WITH_NO_LOGS /
/
#undef LWS_WITH_CACHE_NSCOOKIEJAR /
#define LWS_WITH_CLIENT
#define LWS_WITHOUT_EXTENSIONS
#define LWS_WITH_SERVER
/
#undef LWS_WITH_SPAWN /
/
#undef LWS_WITH_PEER_LIMITS /
/
#undef LWS_WITH_PLUGINS /
/
#undef LWS_WITH_PLUGINS_BUILTIN /
/
#undef LWS_WITH_POLARSSL /
#define LWS_WITH_POLL
#define LWS_WITH_RANGES
/
#undef LWS_WITH_RFC6724 /
/
#undef LWS_WITH_SECURE_STREAMS /
/
#undef LWS_WITH_SECURE_STREAMS_CPP /
/
#undef LWS_WITH_SECURE_STREAMS_SYS_AUTH_API_AMAZON_COM /
/
#undef LWS_WITH_SECURE_STREAMS_PROXY_API /
/
#undef LWS_WITH_SECURE_STREAMS_STATIC_POLICY_ONLY /
/
#undef LWS_WITH_SECURE_STREAMS_AUTH_SIGV4 /
/
#undef LWS_WITH_SECURE_STREAMS_BUFFER_DUMP /
/
#undef LWS_WITH_SS_DIRECT_PROTOCOL_STR /
/
#undef LWS_WITH_SELFTESTS /
/
#undef LWS_WITH_SEQUENCER /
/
#undef LWS_WITH_SERVER_STATUS /
#define LWS_WITH_SYS_SMD
/
#undef LWS_WITH_SMTP /
/
#undef LWS_WITH_SOCKS5 /
/
#undef LWS_WITH_STATEFUL_URLDECODE /
/
#undef LWS_WITH_STATS /
/
#undef LWS_WITH_STRUCT_SQLITE3 /
/
#undef LWS_WITH_STRUCT_JSON /
/
#undef LWS_WITH_SUL_DEBUGGING /
/
#undef LWS_WITH_SQLITE3 /
/
#undef LWS_WITH_SYS_DHCP_CLIENT /
/
#undef LWS_WITH_SYS_FAULT_INJECTION /
/
#undef LWS_WITH_SYS_METRICS /
/
#undef LWS_WITH_SYS_NTPCLIENT /
#define LWS_WITH_SYS_STATE
/
#undef LWS_WITH_THREADPOOL /
#define LWS_WITH_TLS
/
#undef LWS_WITH_TLS_JIT_TRUST /
#define LWS_WITH_TLS_SESSIONS
#define LWS_WITH_UDP
/
#undef LWS_WITH_ULOOP /
/
#undef LWS_WITH_UNIX_SOCK /
/
#undef LWS_WITH_ZIP_FOPS /
/
#undef USE_OLD_CYASSL /
/
#undef USE_WOLFSSL /
/
#undef LWS_WITH_EVENT_LIBS /
/
#undef LWS_WITH_EVLIB_PLUGINS /
/
#undef LWS_WITH_LIBUV_INTERNAL /
/
#undef LWS_WITH_PLUGINS_API /
/
#undef LWS_HAVE_RTA_PREF */

@lws-team
Copy link
Member

Not lws, but your LWIP and FreeRTOS itself are configured for UDP support?

@sush126
Copy link
Author

sush126 commented Apr 22, 2024

@lws-team UDP support is added in lwip and freertos .

@lws-team
Copy link
Member

Well... OK. Then you'll have to debug it, is it giving back an error when you cancel the service?

Any sign in the verbose logs?

Try main branch of lws instead?

@sush126
Copy link
Author

sush126 commented Apr 23, 2024

Below are the logs with v4.3.2 .

[LWS][1970/01/01 00:00:03:5260] N: 145192: lws_create_context: LWS: 4.3.2-v4.3.2-2-g9d0a696d, NET CLI SRV H1 H2 WS MbedTLS IPv6-absent

[LWS][1970/01/01 00:00:03:5270] I: 145192: lws_create_context: Event loop: poll

[LWS][1970/01/01 00:00:03:5270] D: 145016: _realloc: size 32: lws_smd_register (free heap 144984)

[LWS][1970/01/01 00:00:03:5270] I: 144976: lws_smd_register: peer 0x2001aa00 (cou nt 1) registered
[LWS][1970/01/01 00:00:03:5270] D: 144976: _realloc: size 240: fds table (free heap 144736)

[LWS][1970/01/01 00:00:03:5280] I: 144728: lws_create _context: ctx: 3932B (1884 ctx + pt(1 thr x 2048)), pt-fds: 30, fdmap: 240

[LWS] [1970/01/01 00:00:03:5280] I: 144728: lws_create_context: http: ah_data: 4096, ah: 752, max count 30
[LWS][1970/01/01 00:00:03:5330] D: 144552: _realloc: size 120: esp32 lws_lookup (free heap 144432)

[LWS][1970/01/01 00:00:03:5330] N: 144424: mem: platform fd map: 120 bytes

[LWS][[LWS][1970/01/01 00:00:03:5940] D: 107080: _realloc: size 996: __lws_wsi_create_with_role (f[LWS][1970/01/01 00:00:03: 5940] D: 106072: : lws_vhost_bind_wsi: vh Node_lx_0.txt: wsi none/none, count_bo und_wsi 1

[LWS][1970/01/01 00:00:03:5950] D: 106072: _realloc: size 316: client ws struct (free heap 105756)
[LWS][1970/01/01 00:00:03:5950] D: 105744: : lws_role _transition: wsistate 0x10000200, ops h1

[LWS][1970/01/01 00:00:03:5950] I: 105744: : lws_client_connect_via_info: role binding to h1

[LWS][1970/01/01 00:00:03:5950] I: 105744: : lws_client_connect_via_info: vh Node[LWS][1970/01/01 00:00:08:5 440] D: 99624: heap :99624 (-8664)
[LWS][1970/01/01 00:00:08:5440] I: 99624: [vh|0|default||-1]: lws_tls_check_cert_lifetime: vhost default: no cert

[LWS][1970/01/01 00:00:08:5440] I: 99624: [vh|1|Node_lx_0.txt|eth0|eth0|-1]: lws_tls_c

@lws-team
Copy link
Member

I am not going to be able to debug this for you, it only happens on your platform.

It looks like your serial logs are truncated quite badly, unless it's a cut-and-paste problem (terminal emulator window width?) you will need to do something about it.

You should be seeing an info log from lib/plat/freertos/freertos-pipe.c during init

    lwsl_info("%s: cancel UDP skt port %d\n", __func__,
              ntohs(si->sin_port));

but it's hard to tell if it's missing with the logs all mangled.

@sush126
Copy link
Author

sush126 commented Apr 30, 2024

Thanks @lws-team . This is working fine , i have configured wrong in lwip.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants