g_assert(n);
g_assert(n->config);
- cur = g_list_find(n->config->type_settings.tcp_servers, n->connection.data.tcp.current_server);
+ cur = g_list_find(n->config->type_settings.tcp.servers, n->connection.data.tcp.current_server);
/* Get next available server */
if (cur != NULL && cur->next != NULL)
cur = cur->next;
else
- cur = n->config->type_settings.tcp_servers;
+ cur = n->config->type_settings.tcp.servers;
if (cur != NULL)
return cur->data;
if (cs->bind_address)
bindsock(s, sock, res, cs->bind_address, NULL);
+ else if (s->config->type_settings.tcp.default_bind_address)
+ bindsock(s, sock, res, s->config->type_settings.tcp.default_bind_address, NULL);
ioc = g_io_channel_unix_new(sock);
g_io_channel_set_flags(ioc, G_IO_FLAG_NONBLOCK, NULL);
g_assert(n->config);
if (n->config->type == NETWORK_TCP)
{
- for (sv = n->config->type_settings.tcp_servers; sv; sv = sv->next)
+ for (sv = n->config->type_settings.tcp.servers; sv; sv = sv->next)
{
struct tcp_server_config *server = sv->data;
struct servent *sv_serv = getservbyname(server->port, "tcp");
s->host = g_strdup(hostname);
s->port = portname;
- nc->type_settings.tcp_servers = g_list_append(nc->type_settings.tcp_servers, s);
+ nc->type_settings.tcp.servers = g_list_append(nc->type_settings.tcp.servers, s);
n = load_network(global, nc);
network_set_log_fn(n, (network_log_fn)handle_network_log, n);
{
GList *gl;
int i = 0;
- gchar **values = g_new0(gchar *, g_list_length(n->type_settings.tcp_servers)+1);
+ gchar **values = g_new0(gchar *, g_list_length(n->type_settings.tcp.servers)+1);
- for (gl = n->type_settings.tcp_servers; gl; gl = gl->next) {
+ for (gl = n->type_settings.tcp.servers; gl; gl = gl->next) {
struct tcp_server_config *ts = gl->data;
char *name = irc_create_url(ts->host, ts->port, ts->ssl);
break;
case NETWORK_TCP:
config_save_tcp_servers(n, kf);
+ if (n->type_settings.tcp.default_bind_address != NULL)
+ g_key_file_set_string(kf, "global", "bind",
+ n->type_settings.tcp.default_bind_address);
+ else
+ g_key_file_remove_key(kf, "global", "bind", NULL);
break;
default:break;
}
s->bind_address = g_key_file_get_string(n->keyfile, servers[i], "bind", NULL);
- n->type_settings.tcp_servers = g_list_append(n->type_settings.tcp_servers, s);
+ n->type_settings.tcp.servers = g_list_append(n->type_settings.tcp.servers, s);
g_key_file_remove_group(n->keyfile, servers[i], NULL);
}
switch (n->type) {
case NETWORK_TCP:
+ n->type_settings.tcp.default_bind_address = g_key_file_get_string(kf, "global", "bind", NULL);
config_load_servers(n);
break;
case NETWORK_PROGRAM:
if (nc->type != NETWORK_TCP)
continue;
- for (gl1 = nc->type_settings.tcp_servers; gl1; gl1 = gl1->next) {
+ for (gl1 = nc->type_settings.tcp.servers; gl1; gl1 = gl1->next) {
char *tmp;
struct tcp_server_config *sc = gl1->data;
nc->type = NETWORK_TCP;
tc = g_new0(struct tcp_server_config, 1);
irc_parse_url(name, &tc->host, &tc->port, &tc->ssl);
- nc->type_settings.tcp_servers = g_list_append(nc->type_settings.tcp_servers, tc);
+ nc->type_settings.tcp.servers = g_list_append(nc->type_settings.tcp.servers, tc);
cfg->networks = g_list_append(cfg->networks, nc);
}
switch (nc->type) {
case NETWORK_TCP:
- while (nc->type_settings.tcp_servers) {
- struct tcp_server_config *tc = nc->type_settings.tcp_servers->data;
+ while (nc->type_settings.tcp.servers) {
+ struct tcp_server_config *tc = nc->type_settings.tcp.servers->data;
g_free(tc->host);
g_free(tc->port);
g_free(tc->bind_address);
g_free(tc->password);
- nc->type_settings.tcp_servers = g_list_remove(nc->type_settings.tcp_servers, tc);
+ nc->type_settings.tcp.servers = g_list_remove(nc->type_settings.tcp.servers, tc);
g_free(tc);
}
+ g_free(nc->type_settings.tcp.default_bind_address);
break;
case NETWORK_VIRTUAL:
g_free(nc->type_settings.virtual_type);