Hello folks ``` static int type_registered = 0;
qd_router_t *qd_router(qd_dispatch_t *qd, qd_router_mode_t mode, const char *area, const char *id) { if (!type_registered) { type_registered = 1; qd_container_register_node_type(qd, &router_node); } ``` https://github.com/apache/qpid-dispatch/blob/d8800269d3a80225794be9914b5fc9f8d6118d04/src/router_node.c#L1623-L1630 I'd like to understand the motivation behind this code better. Some parts of the codebase assume that there may be many qd_dispatch_t instances around, while others assume there is only one. There is the `dispatch` global variable in python_embedded.c, there is the global flag `type_registered` here, but the `qd_dispatch_t` pointer is usually passed through function argument (as if there could be more than one). Having this check for `type_registered` prevents me from stopping and freeing one instance of a router, then immediately starting another in the same process. I want to do this for testing purposes. What happens now is that the second router I start will not function correctly; deleting this type_registered logic makes it work right (as far as my tests so far are concerned). It seems to me that it should be perfectly ok to have multiple dispatch instances in the single process, as long as there is only one at a time. -- Mit freundlichen Grüßen / Kind regards Jiri Daněk