LWIP netconn non blocking принимает зависание - PullRequest
0 голосов
/ 28 ноября 2018

Я использую netconn api в LWIP, но в неблокирующем режиме.Поэтому, когда я открываю новый сокет, я прикрепляю к нему обратный вызов.Я получаю обратный вызов, когда я пытаюсь подключиться к клиенту, и когда я получаю обратный вызов, я вызываю netconn_accept (), но это блокирует навсегда.Может ли кто-нибудь помочь, кажется, висит на sys_arch_mbox_fetch

static callback(struct netconn *conn, enum netconn_evt evt, uint16_t length)
{
  switch (evt) {
    case NETCONN_EVT_RCVPLUS:
      if (conn->state == NETCONN_LISTEN)
        accept(&conn);
}

struct netconn* accept(struct netconn *conn)
{
  struct netconn *nc;
  if (netconn_accept(conn, &nc) == ERR_OK)
    return nc;
  else
    return NULL;
}

struct netconn *nc = NULL;
nc = netconn_new_with_callback(NETCONN_TCP, callback);
if(!*nc) {
    return;
}
netconn_set_nonblocking(nc,NETCONN_FLAG_NON_BLOCKING);
netconn_set_recvtimeout(nc, 1);
netconn_bind(nc, IP_ADDR_ANY, 100);
netconn_listen(*nc);
...