diff --git a/node.ml b/node.ml index b9602a5..138fc8d 100644 --- a/node.ml +++ b/node.ml @@ -73,11 +73,15 @@ let bind (filter, node) = if filter.label = "" then (ignore (Log.warn "Binding to empty name forbidden" []); return false) else - (filter.binding <- Some node; - directory := NameSet.add filter !directory; - node.names <- StringSet.add filter.label node.names; - ignore (Log.info "Node bound" [Sexp.Str filter.label; Sexp.Str node.class_name]); - return true) + match filter.binding with + | None -> + filter.binding <- Some node; + directory := NameSet.add filter !directory; + node.names <- StringSet.add filter.label node.names; + ignore (Log.info "Node bound" [Sexp.Str filter.label; Sexp.Str node.class_name]); + return true + | Some _ -> + return false (* For use in factory constructor functions, hence the odd return type and values *) let make_named class_name node_name handler =