From f72c3fa9a7c631027eaab2edbc181073ba866361 Mon Sep 17 00:00:00 2001 From: Alexander Alashkin <alexander.alashkin@cesanta.com> Date: Wed, 9 Nov 2016 12:15:06 +0100 Subject: [PATCH] Unbreak PIC32 compilation. Close cesanta/dev#5807 PUBLISHED_FROM=cfd7de45e4357a17719501b8ab004c2edbd3e87e --- mongoose.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/mongoose.c b/mongoose.c index f551580f3..603cca542 100644 --- a/mongoose.c +++ b/mongoose.c @@ -12939,6 +12939,14 @@ char *inet_ntoa(struct in_addr in) { static void mg_handle_send(struct mg_connection *nc) { uint16_t bytes_written = 0; if (nc->flags & MG_F_UDP) { + if (!TCPIP_UDP_RemoteBind( + (UDP_SOCKET) nc->sock, + nc->sa.sin.sin_family == AF_INET ? IP_ADDRESS_TYPE_IPV4 + : IP_ADDRESS_TYPE_IPV6, + ntohs(nc->sa.sin.sin_port), (IP_MULTI_ADDRESS *) &nc->sa.sin)) { + nc->flags |= MG_F_CLOSE_IMMEDIATELY; + return; + } bytes_written = TCPIP_UDP_TxPutIsReady((UDP_SOCKET) nc->sock, 0); if (bytes_written >= nc->send_mbuf.len) { if (TCPIP_UDP_ArrayPut((UDP_SOCKET) nc->sock, @@ -13058,6 +13066,20 @@ void mg_pic32_harmony_if_get_conn_addr(struct mg_connection *nc, int remote, /* TODO(alaskin): not implemented yet */ } +void mg_pic32_harmony_if_connect_tcp(struct mg_connection *nc, + const union socket_address *sa) { + nc->sock = TCPIP_TCP_ClientOpen( + sa->sin.sin_family == AF_INET ? IP_ADDRESS_TYPE_IPV4 + : IP_ADDRESS_TYPE_IPV6, + ntohs(sa->sin.sin_port), (IP_MULTI_ADDRESS *) &sa->sin); + nc->err = (nc->sock == INVALID_SOCKET) ? -1 : 0; +} + +void mg_pic32_harmony_if_connect_udp(struct mg_connection *nc) { + nc->sock = TCPIP_UDP_ClientOpen(IP_ADDRESS_TYPE_ANY, 0, NULL); + nc->err = (nc->sock == INVALID_SOCKET) ? -1 : 0; +} + /* clang-format off */ #define MG_PIC32_HARMONY_IFACE_VTABLE \ { \ @@ -13082,7 +13104,7 @@ void mg_pic32_harmony_if_get_conn_addr(struct mg_connection *nc, int remote, struct mg_iface_vtable mg_pic32_harmony_iface_vtable = MG_PIC32_HARMONY_IFACE_VTABLE; -#if MG_NET_IF == MG_NET_IF_PIC32_HARMONY_LOW_LEVEL +#if MG_NET_IF == MG_NET_IF_PIC32_HARMONY struct mg_iface_vtable mg_default_iface_vtable = MG_PIC32_HARMONY_IFACE_VTABLE; #endif -- GitLab