* Add "default-network" setting.
BUG FIXES
+
+ * Don't allow disconnect of admin network. (#164)
* Clearer error messages during disconnect.
if (s->connection.state == NETWORK_CONNECTION_STATE_NOT_CONNECTED) {
return FALSE;
}
+
log_network(LOG_INFO, s, "Disconnecting");
return close_server(s);
}
void *private_data;
struct virtual_network_ops {
char *name;
+ gboolean not_disconnectable;
gboolean (*init) (struct network *);
gboolean (*to_server) (struct network *, struct client *c, const struct line *);
- gboolean (*fini) (struct network *);
+ void (*fini) (struct network *);
} *ops;
} virtual;
} data;
if (n->connection.state == NETWORK_CONNECTION_STATE_NOT_CONNECTED) {
admin_out(h, "Already disconnected from `%s'", n->info.name);
+ } else if (n->config->type == NETWORK_VIRTUAL &&
+ n->connection.data.virtual.ops->not_disconnectable) {
+ admin_out(h, "Built-in network `%s' can't be disconnected",
+ n->info.name);
} else {
admin_out(h, "Disconnecting from `%s'", n->info.name);
disconnect_network(n);
}
struct virtual_network_ops admin_network = {
- "admin", admin_net_init, admin_to_server, NULL
+ .name = "admin",
+ .init = admin_net_init,
+ .to_server = admin_to_server,
+ .not_disconnectable = TRUE,
};