pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-pcap/+/39271?usp=email ) Change subject: server: Simplify code paths in read_cb_* ...................................................................... server: Simplify code paths in read_cb_* Change-Id: Ib609af3b1788fe02d9d6957a08d85bc8bae821e8 --- M src/osmo_server_network.c 1 file changed, 29 insertions(+), 26 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-pcap refs/changes/71/39271/1 diff --git a/src/osmo_server_network.c b/src/osmo_server_network.c index ff44198..f4f6b06 100644 --- a/src/osmo_server_network.c +++ b/src/osmo_server_network.c @@ -628,16 +628,17 @@ LOGP(DSERVER, LOGL_ERROR, "Someone got the pending read wrong: %d\n", conn->pend); return -1; - } else if (conn->pend == 0) { - conn->data->len = ntohs(conn->data->len); - - if (!pcap_data_valid(conn)) - return -1; - - conn->state = STATE_DATA; - conn->pend = conn->data->len; } + if (conn->pend > 0) + return 1; /* Wait for more data before continuing */ + conn->data->len = ntohs(conn->data->len); + + if (!pcap_data_valid(conn)) + return -1; + + conn->state = STATE_DATA; + conn->pend = conn->data->len; return 1; } @@ -659,29 +660,31 @@ LOGP(DSERVER, LOGL_ERROR, "Someone got the pending read wrong: %d\n", conn->pend); return -1; - } else if (conn->pend == 0) { - conn->state = STATE_INITIAL; - conn->pend = sizeof(*conn->data); + } + if (conn->pend > 0) + return 1; /* Wait for more data before continuing */ - /* count the full packet we got */ - rate_ctr_inc2(conn->ctrg, PEER_CTR_PKTS); - rate_ctr_inc2(conn->server->ctrg, SERVER_CTR_PKTS); + conn->state = STATE_INITIAL; + conn->pend = sizeof(*conn->data); - /* count the bytes of it */ - rate_ctr_add2(conn->ctrg, PEER_CTR_BYTES, conn->data->len); - rate_ctr_add2(conn->server->ctrg, SERVER_CTR_BYTES, conn->data->len); + /* count the full packet we got */ + rate_ctr_inc2(conn->ctrg, PEER_CTR_PKTS); + rate_ctr_inc2(conn->server->ctrg, SERVER_CTR_PKTS); - switch (conn->data->type) { - case PKT_LINK_HDR: - return rx_link_hdr(conn, conn->data); - break; - case PKT_LINK_DATA: - return rx_link_data(conn, conn->data); - break; - } + /* count the bytes of it */ + rate_ctr_add2(conn->ctrg, PEER_CTR_BYTES, conn->data->len); + rate_ctr_add2(conn->server->ctrg, SERVER_CTR_BYTES, conn->data->len); + + switch (conn->data->type) { + case PKT_LINK_HDR: + rc = rx_link_hdr(conn, conn->data); + case PKT_LINK_DATA: + rc = rx_link_data(conn, conn->data); + default: + OSMO_ASSERT(0); } - return 1; + return rc; } /* returns >0 on success, <= 0 on failure (closes conn) */ -- To view, visit https://gerrit.osmocom.org/c/osmo-pcap/+/39271?usp=email To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email Gerrit-MessageType: newchange Gerrit-Project: osmo-pcap Gerrit-Branch: master Gerrit-Change-Id: Ib609af3b1788fe02d9d6957a08d85bc8bae821e8 Gerrit-Change-Number: 39271 Gerrit-PatchSet: 1 Gerrit-Owner: pespin <pespin@sysmocom.de>