]> rtime.felk.cvut.cz Git - frescor/forb.git/blobdiff - src/port.c
Discovery handling moved to discovery.c
[frescor/forb.git] / src / port.c
index 60121b089f6bf5121b51d5f18606876fbcdfc19f..0c54c40018096202e0fd1a25164ff926589eb1c4 100644 (file)
@@ -61,6 +61,7 @@
 #include <forb/config.h>
 #include "iop.h"
 #include <ul_log.h>
+#include "discovery.h"
 
 extern UL_LOG_CUST(ulogd_forb_port);
 
@@ -168,14 +169,19 @@ void forb_destroy_port(forb_port_t *port)
        pthread_join(port->discovery_thread.pthread_id, &thread_return);
 #endif
 
+       /* Because of no locking of port->peers, this must be called
+        * after receiver thread is stopped. */
+       forb_peer_t *peer;
+       ul_list_for_each_cut(forb_port_peer, port, peer) {
+               forb_peer_get(peer);
+               forb_peer_disconnected(peer);
+               forb_peer_put(peer);
+       }
+
        if (port->desc.proto->port_destroy) {
                port->desc.proto->port_destroy(port);
        }
 
-       /* Because of no locking of port->peers, this must be called
-        * after receiver thread is stopped. */
-       forb_peer_delete_by_port(forb, port);
-
        FORB_CDR_codec_release_buffer(&port->codec);
 
        fosa_mutex_lock(&forb->port_mutex);