diff --git a/include/libwebsockets.h b/include/libwebsockets.h index e5f234691..7d91c3da4 100644 --- a/include/libwebsockets.h +++ b/include/libwebsockets.h @@ -331,11 +331,27 @@ typedef int lws_sockfd_type; typedef int lws_filefd_type; #endif +#if defined(LWS_PLAT_OPTEE) +#include #define lws_pollfd pollfd -#define LWS_POLLHUP (POLLHUP|POLLERR) + +//struct lws_pollfd +//{ + // int fd; /* File descriptor to poll. */ + // short int events; /* Types of events poller cares about. */ + // short int revents; /* Types of events that actually occurred. */ +//}; +#define LWS_POLLHUP (0x18) +#define LWS_POLLIN (1) +#define LWS_POLLOUT (4) + +#else +#define lws_pollfd pollfd +#define LWS_POLLHUP (POLLHUP | POLLERR) #define LWS_POLLIN (POLLIN) #define LWS_POLLOUT (POLLOUT) #endif +#endif #if (defined(WIN32) || defined(_WIN32)) && !defined(__MINGW32__) diff --git a/include/libwebsockets/lws-adopt.h b/include/libwebsockets/lws-adopt.h index 4686098bb..4c5e59a0a 100644 --- a/include/libwebsockets/lws-adopt.h +++ b/include/libwebsockets/lws-adopt.h @@ -78,7 +78,7 @@ typedef union { lws_filefd_type filefd; } lws_sock_file_fd_type; -#if !defined(LWS_WITH_ESP32) +#if !defined(LWS_WITH_ESP32) && !defined(LWS_PLAT_OPTEE) struct lws_udp { struct sockaddr sa; socklen_t salen; diff --git a/include/libwebsockets/lws-network-helper.h b/include/libwebsockets/lws-network-helper.h index 94ee8d9a5..b3ad5961e 100644 --- a/include/libwebsockets/lws-network-helper.h +++ b/include/libwebsockets/lws-network-helper.h @@ -77,7 +77,7 @@ lws_get_peer_simple(struct lws *wsi, char *name, int namelen); #define LWS_ITOSA_BUSY -3 /* only returned by lws_socket_bind() on EADDRINUSE */ -#if !defined(LWS_WITH_ESP32) +#if !defined(LWS_WITH_ESP32) && !defined(LWS_PLAT_OPTEE) /** * lws_interface_to_sa() - Convert interface name or IP to sockaddr struct * diff --git a/lib/core/libwebsockets.c b/lib/core/libwebsockets.c index 46b69ed89..da8f9bbce 100644 --- a/lib/core/libwebsockets.c +++ b/lib/core/libwebsockets.c @@ -1211,7 +1211,7 @@ lws_get_urlarg_by_name(struct lws *wsi, const char *name, char *buf, int len) return NULL; } -#if !defined(LWS_WITH_ESP32) +#if !defined(LWS_WITH_ESP32) && !defined(LWS_PLAT_OPTEE) LWS_VISIBLE int interface_to_sa(struct lws_vhost *vh, const char *ifname, struct sockaddr_in *addr, size_t addrlen) @@ -2685,7 +2685,7 @@ lws_socket_bind(struct lws_vhost *vhost, lws_sockfd_type sockfd, int port, socklen_t len = sizeof(struct sockaddr_storage); #endif int n; -#if !defined(LWS_WITH_ESP32) +#if !defined(LWS_WITH_ESP32) && !defined(LWS_PLAT_OPTEE) int m; #endif struct sockaddr_storage sin; @@ -2746,7 +2746,7 @@ lws_socket_bind(struct lws_vhost *vhost, lws_sockfd_type sockfd, int port, serv_addr4.sin_addr.s_addr = INADDR_ANY; serv_addr4.sin_family = AF_INET; -#if !defined(LWS_WITH_ESP32) +#if !defined(LWS_WITH_ESP32) && !defined(LWS_PLAT_OPTEE) if (iface) { m = interface_to_sa(vhost, iface, (struct sockaddr_in *)v, n); diff --git a/lib/core/output.c b/lib/core/output.c index aef2d7b9d..b2de11916 100644 --- a/lib/core/output.c +++ b/lib/core/output.c @@ -199,7 +199,7 @@ int lws_issue_raw(struct lws *wsi, unsigned char *buf, size_t len) lws_stats_atomic_bump(wsi->context, pt, LWSSTATS_B_PARTIALS_ACCEPTED_PARTS, m); -#if !defined(LWS_WITH_ESP32) +#if !defined(LWS_WITH_ESP32) && !defined(LWS_PLAT_OPTEE) if (lws_wsi_is_udp(wsi)) { /* stash original destination for fulfilling UDP partials */ wsi->udp->sa_pending = wsi->udp->sa; @@ -251,7 +251,7 @@ lws_ssl_capable_read_no_ssl(struct lws *wsi, unsigned char *buf, int len) lws_stats_atomic_bump(context, pt, LWSSTATS_C_API_READ, 1); if (lws_wsi_is_udp(wsi)) { -#if !defined(LWS_WITH_ESP32) +#if !defined(LWS_WITH_ESP32) && !defined(LWS_PLAT_OPTEE) wsi->udp->salen = sizeof(wsi->udp->sa); n = recvfrom(wsi->desc.sockfd, (char *)buf, len, 0, &wsi->udp->sa, &wsi->udp->salen); @@ -286,7 +286,7 @@ lws_ssl_capable_write_no_ssl(struct lws *wsi, unsigned char *buf, int len) int n = 0; if (lws_wsi_is_udp(wsi)) { -#if !defined(LWS_WITH_ESP32) +#if !defined(LWS_WITH_ESP32) && !defined(LWS_PLAT_OPTEE) if (lws_has_buffered_out(wsi)) n = sendto(wsi->desc.sockfd, (const char *)buf, len, 0, &wsi->udp->sa_pending, diff --git a/lib/roles/http/server/server.c b/lib/roles/http/server/server.c index dc5e5ff6d..e488edf48 100644 --- a/lib/roles/http/server/server.c +++ b/lib/roles/http/server/server.c @@ -2023,7 +2023,12 @@ lws_http_transaction_completed(struct lws *wsi) if (!wsi->hdr_parsing_completed) { char peer[64]; + +#if !defined(LWS_PLAT_OPTEE) lws_get_peer_simple(wsi, peer, sizeof(peer) - 1); +#else + peer[0] = '\0'; +#endif peer[sizeof(peer) - 1] = '\0'; lwsl_notice("%s: (from %s) ignoring, ah parsing incomplete\n", __func__, peer); diff --git a/lib/roles/raw-skt/ops-raw-skt.c b/lib/roles/raw-skt/ops-raw-skt.c index cc6ed615e..3a4fe9995 100644 --- a/lib/roles/raw-skt/ops-raw-skt.c +++ b/lib/roles/raw-skt/ops-raw-skt.c @@ -144,7 +144,7 @@ rops_adoption_bind_raw_skt(struct lws *wsi, int type, const char *vh_prot_name) (type & _LWS_ADOPT_FINISH)) return 0; /* no match */ -#if !defined(LWS_WITH_ESP32) +#if !defined(LWS_WITH_ESP32) && !defined(LWS_PLAT_OPTEE) if (type & LWS_ADOPT_FLAG_UDP) /* * these can be >128 bytes, so just alloc for UDP