/** * Close a netconn 'connection' and free its resources. * UDP and RAW connection are completely closed, TCP pcbs might still be in a waitstate * after this returns. * * @param conn the netconn to delete * @return ERR_OK if the connection was deleted */ err_t netconn_delete(struct netconn *conn) { err_t err; API_MSG_VAR_DECLARE(msg); /* No ASSERT here because possible to get a (conn == NULL) if we got an accept error */ if (conn == NULL) { return ERR_OK; } API_MSG_VAR_ALLOC(msg); API_MSG_VAR_REF(msg).function = lwip_netconn_do_delconn; API_MSG_VAR_REF(msg).msg.conn = conn; err = tcpip_apimsg(&API_MSG_VAR_REF(msg)); API_MSG_VAR_FREE(msg); if (err != ERR_OK) { return err; } netconn_free(conn); return ERR_OK; }
/** * Close a netconn 'connection' and free its resources. * UDP and RAW connection are completely closed, TCP pcbs might still be in a waitstate * after this returns. * * @param conn the netconn to delete * @return ERR_OK if the connection was deleted */ err_t netconn_delete(struct netconn *conn) { struct api_msg msg; sys_prot_t prot; /* No ASSERT here because possible to get a (conn == NULL) if we got an accept error */ if (conn == NULL) { return ERR_OK; } msg.function = do_delconn; msg.msg.conn = conn; // [MS_CHANGE] - check to see if we have interrupts off. If so call the delete directly. SYS_ARCH_PROTECT(prot); SYS_ARCH_UNPROTECT(prot); if(prot != 1) { do_delconn(&msg.msg); } else { tcpip_apimsg(&msg); } // [END_MS_CHANGE] netconn_free(conn); /* don't care for return value of do_delconn since it only calls void functions */ return ERR_OK; }
/** * Close a netconn 'connection' and free its resources. * UDP and RAW connection are completely closed, TCP pcbs might still be in a waitstate * after this returns. * * @param conn the netconn to delete * @return ERR_OK if the connection was deleted */ err_t netconn_delete(struct netconn *conn) { struct api_msg msg; /* No ASSERT here because possible to get a (conn == NULL) if we got an accept error */ if (conn == NULL) { return ERR_OK; } msg.function = do_delconn; msg.msg.conn = conn; tcpip_apimsg(&msg); conn->pcb.tcp = NULL; netconn_free(conn); return ERR_OK; }
/** * Close a netconn 'connection' and free its resources. * UDP and RAW connection are completely closed, TCP pcbs might still be in a waitstate * after this returns. * * @param conn the netconn to delete * @return ERR_OK if the connection was deleted */ err_t netconn_delete(struct netconn *conn) { struct api_msg msg; /* No ASSERT here because possible to get a (conn == NULL) if we got an accept error */ if (conn == NULL) { return ERR_OK; } msg.function = do_delconn; msg.msg.conn = conn; tcpip_apimsg(&msg); netconn_free(conn); /* don't care for return value of do_delconn since it only calls void functions */ return ERR_OK; }
/** * Close a netconn 'connection' and free its resources. * UDP and RAW connection are completely closed, TCP pcbs might still be in a waitstate * after this returns. * * @param conn the netconn to delete * @return ERR_OK if the connection was deleted */ err_t netconn_delete(struct netconn *conn) { API_MSG_VAR_DECLARE(msg); /* No ASSERT here because possible to get a (conn == NULL) if we got an accept error */ if (conn == NULL) { return ERR_OK; } API_MSG_VAR_ALLOC(msg); API_MSG_VAR_REF(msg).function = lwip_netconn_do_delconn; API_MSG_VAR_REF(msg).msg.conn = conn; tcpip_apimsg(&API_MSG_VAR_REF(msg)); API_MSG_VAR_FREE(msg); netconn_free(conn); /* don't care for return value of lwip_netconn_do_delconn since it only calls void functions */ return ERR_OK; }
void api_msg_post(struct api_msg *msg) { tcpip_apimsg(msg); }