Пример #1
0
static err_t
test_tcp_recv_expectclose(void* arg, struct tcp_pcb* pcb, struct pbuf* p, err_t err)
{
  EXPECT_RETX(pcb != NULL, ERR_OK);
  EXPECT_RETX(err == ERR_OK, ERR_OK);
  LWIP_UNUSED_ARG(arg);

  if (p != NULL) {
    fail();
  } else {
    /* correct: FIN received; close our end, too */
    err_t err2 = tcp_close(pcb);
    fail_unless(err2 == ERR_OK);
    /* set back to some other rx function, just to not get here again */
    tcp_recv(pcb, test_tcp_recv_expect1byte);
  }
  return ERR_OK;
}
Пример #2
0
static err_t
test_tcp_recv_expect1byte(void* arg, struct tcp_pcb* pcb, struct pbuf* p, err_t err)
{
  EXPECT_RETX(pcb != NULL, ERR_OK);
  EXPECT_RETX(err == ERR_OK, ERR_OK);
  LWIP_UNUSED_ARG(arg);

  if (p != NULL) {
    if ((p->len == 1) && (p->tot_len == 1)) {
      tcp_recv(pcb, test_tcp_recv_expectclose);
    } else {
      fail();
    }
    pbuf_free(p);
  } else {
    fail();
  }
  return ERR_OK;
}
Пример #3
0
err_t
test_tcp_counters_recv(void* arg, struct tcp_pcb* pcb, struct pbuf* p, err_t err)
{
  struct test_tcp_counters* counters = (struct test_tcp_counters*)arg;
  EXPECT_RETX(arg != NULL, ERR_OK);
  EXPECT_RETX(pcb != NULL, ERR_OK);
  EXPECT_RETX(err == ERR_OK, ERR_OK);

  if (p != NULL) {
    if (counters->close_calls == 0) {
      counters->recv_calls++;
      test_tcp_counters_check_rxdata(counters, p);
      counters->recved_bytes += p->tot_len;
    } else {
      counters->recv_calls_after_close++;
      counters->recved_bytes_after_close += p->tot_len;
    }
    pbuf_free(p);
  } else {
    counters->close_calls++;
  }
  EXPECT(counters->recv_calls_after_close == 0 && counters->recved_bytes_after_close == 0);
  return ERR_OK;
}