#include "discovery.h"
#include <ul_log.h>
#include "object.h"
+#include <forb/config.h>
+#include "iop.h"
extern UL_LOG_CUST(ulogd_forb_discovery);
* @param forb
* @param server_id
*
- * @return The found peer or NULL if no peer is found. You have to
- * call forb_peer_put() after you finish working with the non NULL
- * retuned value.
+ * @return The found peer or NULL if no peer is found. forb_peer_put()
+ * has to be called on the non-NULL returned value after is not
+ * needed.
*/
forb_peer_t *
forb_peer_find(forb_t *forb, forb_server_id *server_id)
forb_server_id_to_string(str, &peer->server_id, sizeof(str)),
orb_id);
}
+#ifdef CONFIG_FORB_PROTO_INET_DEFAULT
+ if (forb->attr.redistribute_hellos) {
+ forb_peer_t *p;
+ ul_list_for_each(forb_port_peer, port, p) {
+ if (p != peer &&
+ forb_server_id_cmp(&p->server_id, &forb->server_id) != 0) {
+ forb_iop_redistribute_hello_to(p, peer); /* Introduce new peer to others */
+ forb_iop_redistribute_hello_to(peer, p); /* Introduce other peers to the new one */
+ }
+ }
+ }
+#endif
if (forb->attr.peer_discovery_callback) {
forb_orb peer_orb = forb_object_new(forb->orb, &peer->server_id, 0);
forb->attr.peer_discovery_callback(peer_orb, orb_id);
{
forb_peer_delete(peer->port->forb, peer);
forb_port_peer_delete(peer->port, peer);
- forb_peer_put(peer); /* This should release the peer and in case on proto_inet close the socker. */
+
+ /* This should release the peer and in case on proto_inet
+ * close the socket. */
+ forb_peer_put(peer);
}