diff --git a/contrib/ports/unix/port/include/arch/cc.h b/contrib/ports/unix/port/include/arch/cc.h index 7be900bf..89540099 100644 --- a/contrib/ports/unix/port/include/arch/cc.h +++ b/contrib/ports/unix/port/include/arch/cc.h @@ -86,4 +86,8 @@ typedef struct sio_status_s sio_status_t; typedef unsigned int sys_prot_t; +#ifndef __containerof +#define __containerof(ptr, type, member) ((type *)(void *)((char *)ptr - offsetof(type, member))) +#endif + #endif /* LWIP_ARCH_CC_H */ diff --git a/src/api/api_msg.c b/src/api/api_msg.c index 5aec8dd1..09aca160 100644 --- a/src/api/api_msg.c +++ b/src/api/api_msg.c @@ -841,6 +841,20 @@ netconn_free(struct netconn *conn) memp_free(MEMP_NETCONN, conn); } +#if ESP_LWIP +struct tcp_psb_msg { + struct tcpip_api_call_data call; + struct tcp_pcb *pcb; +}; + +static err_t tcp_do_abort(struct tcpip_api_call_data *msg) +{ + struct tcp_psb_msg *pcb_msg = __containerof(msg, struct tcp_psb_msg, call); + tcp_abort(pcb_msg->pcb); + return ERR_OK; +} +#endif /* ESP_LWIP */ + /** * Delete rcvmbox and acceptmbox of a netconn and free the left-over data in * these mboxes @@ -903,7 +917,13 @@ netconn_drain(struct netconn *conn) #endif /* ESP_LWIP */ netconn_drain(newconn); if (newconn->pcb.tcp != NULL) { +#if ESP_LWIP + struct tcp_psb_msg pcb_msg = { 0 }; + pcb_msg.pcb = newconn->pcb.tcp; + tcpip_api_call(tcp_do_abort, &pcb_msg.call); +#else tcp_abort(newconn->pcb.tcp); +#endif /* ESP_LWIP */ newconn->pcb.tcp = NULL; } netconn_free(newconn); diff --git a/test/unit/cc_esp_platform.h b/test/unit/cc_esp_platform.h deleted file mode 100644 index b1ee00d5..00000000 --- a/test/unit/cc_esp_platform.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef LWIP_ARCH_CC_ESP_H -#define LWIP_ARCH_CC_ESP_H - -/* see https://sourceforge.net/p/predef/wiki/OperatingSystems/ */ -#if defined __ANDROID__ -#define LWIP_UNIX_ANDROID -#elif defined __linux__ -#define LWIP_UNIX_LINUX -#elif defined __APPLE__ -#define LWIP_UNIX_MACH -#elif defined __OpenBSD__ -#define LWIP_UNIX_OPENBSD -#elif defined __CYGWIN__ -#define LWIP_UNIX_CYGWIN -#elif defined __GNU__ -#define LWIP_UNIX_HURD -#endif - -#define LWIP_TIMEVAL_PRIVATE 0 -#include - -#define LWIP_ERRNO_INCLUDE - -#if defined(LWIP_UNIX_LINUX) || defined(LWIP_UNIX_HURD) -#define LWIP_ERRNO_STDINCLUDE 1 -#endif - -#ifdef LWIP_RAND -#define LWIP_RAND() ((u32_t)rand()) -#endif - -/* different handling for unit test, normally not needed */ -#ifdef LWIP_NOASSERT_ON_ERROR -#define LWIP_ERROR(message, expression, handler) do { if (!(expression)) { \ - handler;}} while(0) -#endif - -#if defined(LWIP_UNIX_ANDROID) && defined(FD_SET) -typedef __kernel_fd_set fd_set; -#endif - -#if defined(LWIP_UNIX_MACH) -/* sys/types.h and signal.h bring in Darwin byte order macros. pull the - header here and disable LwIP's version so that apps still can get - the macros via LwIP headers and use system headers */ -#include -#define LWIP_DONT_PROVIDE_BYTEORDER_FUNCTIONS -#endif - -struct sio_status_s; -typedef struct sio_status_s sio_status_t; -#define sio_fd_t sio_status_t* -#define __sio_fd_t_defined - -typedef unsigned int sys_prot_t; - -#endif /* LWIP_ARCH_CC_ESP_H */