aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/salticidae/netaddr.h6
-rw-r--r--include/salticidae/network.h3
-rw-r--r--include/salticidae/stream.h2
-rw-r--r--src/netaddr.cpp17
-rw-r--r--src/network.cpp28
-rw-r--r--src/stream.cpp16
-rw-r--r--test/test_msgnet.cpp4
-rw-r--r--test/test_msgnet_c.c4
-rw-r--r--test/test_msgnet_tls.cpp4
9 files changed, 59 insertions, 25 deletions
diff --git a/include/salticidae/netaddr.h b/include/salticidae/netaddr.h
index e4e8c6c..7d04d43 100644
--- a/include/salticidae/netaddr.h
+++ b/include/salticidae/netaddr.h
@@ -138,9 +138,9 @@ extern "C" {
netaddr_t *netaddr_new();
void netaddr_free(const netaddr_t *self);
-netaddr_t *netaddr_new_from_ip_port(uint32_t ip, uint16_t port);
-netaddr_t *netaddr_new_from_sip_port(const char *ip, uint16_t port);
-netaddr_t *netaddr_new_from_sipport(const char *ip_port_addr);
+netaddr_t *netaddr_new_from_ip_port(uint32_t ip, uint16_t port, SalticidaeCError *err);
+netaddr_t *netaddr_new_from_sip_port(const char *ip, uint16_t port, SalticidaeCError *err);
+netaddr_t *netaddr_new_from_sipport(const char *ip_port_addr, SalticidaeCError *err);
netaddr_t *netaddr_copy(const netaddr_t *self);
bool netaddr_is_eq(const netaddr_t *a, const netaddr_t *b);
bool netaddr_is_null(const netaddr_t *self);
diff --git a/include/salticidae/network.h b/include/salticidae/network.h
index 092c969..f8b3353 100644
--- a/include/salticidae/network.h
+++ b/include/salticidae/network.h
@@ -1186,7 +1186,8 @@ typedef enum msgnetwork_conn_mode_t {
} msgnetwork_conn_mode_t;
typedef enum peernetwork_id_mode_t {
- ID_MODE_ADDR_BASED
+ ID_MODE_ADDR_BASED,
+ ID_MODE_CERT_BASED
} peernetwork_id_mode_t;
#ifdef __cplusplus
diff --git a/include/salticidae/stream.h b/include/salticidae/stream.h
index 2efc532..2f41782 100644
--- a/include/salticidae/stream.h
+++ b/include/salticidae/stream.h
@@ -546,7 +546,9 @@ int64_t datastream_get_i64(datastream_t *self, bool *succ);
const uint8_t *datastream_get_data_inplace(datastream_t *self, size_t len);
uint256_t *datastream_get_hash(const datastream_t *self);
bytearray_t *bytearray_new_moved_from_datastream(datastream_t *_moved_self);
+bytearray_t *bytearray_new_copied_from_datastream(datastream_t *src);
bytearray_t *bytearray_new_from_hex(const char *hex_str);
+bytearray_t *bytearray_new_from_bytes(const uint8_t *arr, size_t len);
char *datastream_get_hex(datastream_t *self);
diff --git a/src/netaddr.cpp b/src/netaddr.cpp
index cb8a3d2..736d606 100644
--- a/src/netaddr.cpp
+++ b/src/netaddr.cpp
@@ -2,22 +2,33 @@
#ifdef SALTICIDAE_CBINDINGS
#include "salticidae/netaddr.h"
+using namespace salticidae;
+
extern "C" {
netaddr_t *netaddr_new() { return new netaddr_t(); }
void netaddr_free(const netaddr_t *self) { delete self; }
-netaddr_t *netaddr_new_from_ip_port(uint32_t ip, uint16_t port) {
+netaddr_t *netaddr_new_from_ip_port(uint32_t ip, uint16_t port, SalticidaeCError *cerror) {
+ SALTICIDAE_CERROR_TRY(cerror)
return new netaddr_t(ip, port);
+ SALTICIDAE_CERROR_CATCH(cerror)
+ return nullptr;
}
-netaddr_t *netaddr_new_from_sip_port(const char *ip, uint16_t port) {
+netaddr_t *netaddr_new_from_sip_port(const char *ip, uint16_t port, SalticidaeCError *cerror) {
+ SALTICIDAE_CERROR_TRY(cerror)
return new netaddr_t(ip, port);
+ SALTICIDAE_CERROR_CATCH(cerror)
+ return nullptr;
}
-netaddr_t *netaddr_new_from_sipport(const char *ip_port_addr) {
+netaddr_t *netaddr_new_from_sipport(const char *ip_port_addr, SalticidaeCError *cerror) {
+ SALTICIDAE_CERROR_TRY(cerror)
return new netaddr_t(ip_port_addr);
+ SALTICIDAE_CERROR_CATCH(cerror)
+ return nullptr;
}
netaddr_t *netaddr_copy(const netaddr_t *self) {
diff --git a/src/network.cpp b/src/network.cpp
index a02ead1..2dc7d1f 100644
--- a/src/network.cpp
+++ b/src/network.cpp
@@ -190,19 +190,23 @@ peernetwork_t *peernetwork_new(const eventcontext_t *ec, const peernetwork_confi
void peernetwork_free(const peernetwork_t *self) { delete self; }
-void peernetwork_add_peer(peernetwork_t *self, const netaddr_t *paddr) {
- self->add_peer(*paddr);
+void peernetwork_add_peer(peernetwork_t *self, const netaddr_t *addr) {
+ self->add_peer(*addr);
}
-bool peernetwork_has_peer(const peernetwork_t *self, const netaddr_t *paddr) {
- return self->has_peer(*paddr);
+void peernetwork_del_peer(peernetwork_t *self, const netaddr_t *addr) {
+ self->del_peer(*addr);
+}
+
+bool peernetwork_has_peer(const peernetwork_t *self, const netaddr_t *addr) {
+ return self->has_peer(*addr);
}
const peernetwork_conn_t *peernetwork_get_peer_conn(const peernetwork_t *self,
- const netaddr_t *paddr,
+ const netaddr_t *addr,
SalticidaeCError *cerror) {
SALTICIDAE_CERROR_TRY(cerror)
- return new peernetwork_conn_t(self->get_peer_conn(*paddr));
+ return new peernetwork_conn_t(self->get_peer_conn(*addr));
SALTICIDAE_CERROR_CATCH(cerror)
return nullptr;
}
@@ -227,18 +231,18 @@ peernetwork_conn_t *peernetwork_conn_copy(const peernetwork_conn_t *self) {
void peernetwork_conn_free(const peernetwork_conn_t *self) { delete self; }
-void peernetwork_send_msg(peernetwork_t *self, const msg_t * msg, const netaddr_t *paddr) {
- self->_send_msg(*msg, *paddr);
+void peernetwork_send_msg(peernetwork_t *self, const msg_t * msg, const netaddr_t *addr) {
+ self->_send_msg(*msg, *addr);
}
void peernetwork_send_msg_deferred_by_move(peernetwork_t *self,
- msg_t *_moved_msg, const netaddr_t *paddr) {
- self->_send_msg_deferred(std::move(*_moved_msg), *paddr);
+ msg_t *_moved_msg, const netaddr_t *addr) {
+ self->_send_msg_deferred(std::move(*_moved_msg), *addr);
}
void peernetwork_multicast_msg_by_move(peernetwork_t *self,
- msg_t *_moved_msg, const netaddr_array_t *paddrs) {
- self->_multicast_msg(std::move(*_moved_msg), *paddrs);
+ msg_t *_moved_msg, const netaddr_array_t *addrs) {
+ self->_multicast_msg(std::move(*_moved_msg), *addrs);
}
void peernetwork_listen(peernetwork_t *self, const netaddr_t *listen_addr, SalticidaeCError *cerror) {
diff --git a/src/stream.cpp b/src/stream.cpp
index f5d4ac9..6b208aa 100644
--- a/src/stream.cpp
+++ b/src/stream.cpp
@@ -133,6 +133,14 @@ bytearray_t *bytearray_new_moved_from_datastream(datastream_t *_moved_src) {
}
}
+bytearray_t *bytearray_new_copied_from_datastream(datastream_t *src) {
+ try {
+ return new bytearray_t(*src);
+ } catch (...) {
+ return nullptr;
+ }
+}
+
bytearray_t *bytearray_new_from_hex(const char *hex_str) {
try {
return new bytearray_t(salticidae::from_hex(hex_str));
@@ -141,6 +149,14 @@ bytearray_t *bytearray_new_from_hex(const char *hex_str) {
}
}
+bytearray_t *bytearray_new_from_bytes(const uint8_t *arr, size_t len) {
+ try {
+ return new bytearray_t(arr, arr + len);
+ } catch (...) {
+ return nullptr;
+ }
+}
+
char *datastream_get_hex(datastream_t *self) {
std::string tmp = self->get_hex();
auto res = (char *)malloc(tmp.length() + 1);
diff --git a/test/test_msgnet.cpp b/test/test_msgnet.cpp
index 5578031..50e35dc 100644
--- a/test/test_msgnet.cpp
+++ b/test/test_msgnet.cpp
@@ -94,7 +94,7 @@ struct MyNet: public MsgNetworkByteOp {
{
if (conn->get_mode() == ConnPool::Conn::ACTIVE)
{
- printf("[%s] Connected, sending hello.\n",
+ printf("[%s] connected, sending hello.\n",
this->name.c_str());
/* send the first message through this connection */
send_msg(MsgHello(this->name, "Hello there!"),
@@ -106,7 +106,7 @@ struct MyNet: public MsgNetworkByteOp {
}
else
{
- printf("[%s] Disconnected, retrying.\n", this->name.c_str());
+ printf("[%s] disconnected, retrying.\n", this->name.c_str());
/* try to reconnect to the same address */
connect(conn->get_addr(), false);
}
diff --git a/test/test_msgnet_c.c b/test/test_msgnet_c.c
index 753c70f..1417d2b 100644
--- a/test/test_msgnet_c.c
+++ b/test/test_msgnet_c.c
@@ -170,8 +170,8 @@ void on_term_signal(int sig, void *userdata) {
int main() {
ec = eventcontext_new();
- netaddr_t *alice_addr = netaddr_new_from_sipport("127.0.0.1:12345");
- netaddr_t *bob_addr = netaddr_new_from_sipport("127.0.0.1:12346");
+ netaddr_t *alice_addr = netaddr_new_from_sipport("127.0.0.1:12345", &err);
+ netaddr_t *bob_addr = netaddr_new_from_sipport("127.0.0.1:12346", &err);
/* test two nodes in the same main loop */
alice = gen_mynet(ec, "Alice");
diff --git a/test/test_msgnet_tls.cpp b/test/test_msgnet_tls.cpp
index b839497..a779ba5 100644
--- a/test/test_msgnet_tls.cpp
+++ b/test/test_msgnet_tls.cpp
@@ -105,7 +105,7 @@ struct MyNet: public MsgNetworkByteOp {
res = peer_fingerprint == cert_hash;
if (conn->get_mode() == ConnPool::Conn::ACTIVE)
{
- printf("[%s] Connected, sending hello.\n",
+ printf("[%s] connected, sending hello.\n",
this->name.c_str());
/* send the first message through this connection */
send_msg(MsgHello(this->name, "Hello there!"),
@@ -119,7 +119,7 @@ struct MyNet: public MsgNetworkByteOp {
}
else
{
- printf("[%s] Disconnected, retrying.\n", this->name.c_str());
+ printf("[%s] disconnected, retrying.\n", this->name.c_str());
/* try to reconnect to the same address */
connect(conn->get_addr(), false);
}