diff options
author | Dimitri Staessens <[email protected]> | 2018-10-12 17:01:39 +0200 |
---|---|---|
committer | Sander Vrijders <[email protected]> | 2018-10-12 17:35:11 +0200 |
commit | 3a650d07d2d7540ebee65cef58b35f0373ad14d6 (patch) | |
tree | ed4c42539f3fb25b0cf0177c211b91424e42513a | |
parent | d375c023b5fa68e3a9804687683772c2734be8a4 (diff) | |
download | ouroboros-0.12.3.tar.gz ouroboros-0.12.3.zip |
ipcpd: Send link state message before lsdb update0.12.3
When a new link is added, the link state update will be sent before
the database update, so the network is a little bit more quickly
aware. This improves odds of the DHT successfully enrolling at its
first attempt, reducing bootstrap time of a network.
Signed-off-by: Dimitri Staessens <[email protected]>
Signed-off-by: Sander Vrijders <[email protected]>
-rw-r--r-- | CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/ipcpd/normal/pol/link_state.c | 9 |
2 files changed, 5 insertions, 6 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index badfd4b6..7a5d9671 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,7 +8,7 @@ include(GNUInstallDirs) set(PACKAGE_VERSION_MAJOR 0) set(PACKAGE_VERSION_MINOR 12) -set(PACKAGE_VERSION_PATCH 2) +set(PACKAGE_VERSION_PATCH 3) set(PACKAGE_NAME "${CMAKE_PROJECT_NAME}") set(PACKAGE_DESCRIPTION "The Ouroboros prototype") diff --git a/src/ipcpd/normal/pol/link_state.c b/src/ipcpd/normal/pol/link_state.c index e8677f0d..5f592edf 100644 --- a/src/ipcpd/normal/pol/link_state.c +++ b/src/ipcpd/normal/pol/link_state.c @@ -789,16 +789,15 @@ static void handle_event(void * self, switch (event) { case NOTIFY_DT_CONN_ADD: + pthread_rwlock_rdlock(&ls.db_lock); + send_lsm(ipcpi.dt_addr, c->conn_info.addr, 0); + pthread_rwlock_unlock(&ls.db_lock); + if (lsdb_add_nb(c->conn_info.addr, c->flow_info.fd, NB_DT)) log_dbg("Failed to add neighbor to LSDB."); if (lsdb_add_link(ipcpi.dt_addr, c->conn_info.addr, 0, &qs)) log_dbg("Failed to add new adjacency to LSDB."); - - pthread_rwlock_rdlock(&ls.db_lock); - send_lsm(ipcpi.dt_addr, c->conn_info.addr, 0); - pthread_rwlock_unlock(&ls.db_lock); - break; case NOTIFY_DT_CONN_DEL: flow_event(c->flow_info.fd, false); |