## How many seconds to wait between tries to reconnect
## to the server.
# reconnect-interval=60
+
+## Interfacing with a local inetd-style program
+[BitlBee]
+program = /usr/sbin/bitlbee
};
struct daemon_backend *daemon_backend_open(const char *socketpath,
- const struct daemon_backend_callbacks *callbacks,
- gpointer userdata)
+ const struct daemon_backend_callbacks *callbacks,
+ gpointer userdata,
+ struct irc_listener *listener)
{
struct daemon_backend *backend;
int sock;
strncpy(un.sun_path, socketpath, sizeof(un.sun_path));
if (connect(sock, (struct sockaddr *)&un, sizeof(un)) < 0) {
- /* FIXME: listener_log(LOG_INFO, pc->listener, "unable to connect to %s: %s", un.sun_path, strerror(errno)); */
+ listener_log(LOG_INFO, listener, "unable to connect to %s: %s", un.sun_path, strerror(errno));
close(sock);
return NULL;
}
struct daemon_backend *daemon_backend_open(const char *socketpath,
const struct daemon_backend_callbacks *callbacks,
- gpointer userdata);
+ gpointer userdata,
+ struct irc_listener *listener);
gboolean daemon_backend_authenticate(struct daemon_backend *backend,
const char *password,
void (*callback) (struct daemon_backend *backend, gboolean));
}
}
- cd->backend = daemon_backend_open(cd->user->socketpath, &backend_callbacks, cd);
+ cd->backend = daemon_backend_open(cd->user->socketpath, &backend_callbacks, cd, cl->listener);
+ if (cd->backend == NULL)
+ return FALSE;
return TRUE;
}
if (login_details->password != NULL) {
network_send_args(s, "PASS", login_details->password, NULL);
}
+ g_assert(login_details->nick != NULL && strlen(login_details->nick) > 0);
network_send_args(s, "NICK", login_details->nick, NULL);
+ g_assert(login_details->username != NULL && strlen(login_details->username) > 0);
+ g_assert(login_details->mode != NULL && strlen(login_details->mode) > 0);
+ g_assert(login_details->unused != NULL && strlen(login_details->unused) > 0);
+ g_assert(login_details->realname != NULL && strlen(login_details->realname) > 0);
network_send_args(s, "USER", login_details->username, login_details->mode,
login_details->unused, login_details->realname, NULL);
ret->password = g_strdup(nc->password);
}
+ ret->mode = g_strdup("a"); /* FIXME: Should this perhaps be set to something else ? */
+ ret->unused = g_strdup("a"); /* FIXME: Should this perhaps be set to something else ? */
+
return ret;
}