Add BitlBee to default configuration.
authorJelmer Vernooij <jelmer@samba.org>
Sun, 28 Sep 2008 15:41:46 +0000 (17:41 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Sun, 28 Sep 2008 15:41:46 +0000 (17:41 +0200)
config.default
daemon/backend.c
daemon/backend.h
daemon/main.c
lib/connection.c
src/network.c

index 1aa91a945220397899797d023eb2dd9ca7aa99ee..2d1f187377fe62d3f838cdc43763075d21ce436a 100644 (file)
@@ -101,3 +101,7 @@ virtual = admin
 ## 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
index 89078c40f062c42ff0ac8b316ab95dbc0848b970..12d1fb6deee7099e0faee0b2ee1dc630e34d3357 100644 (file)
@@ -78,8 +78,9 @@ static const struct irc_transport_callbacks daemon_backend_callbacks = {
 };
 
 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;
@@ -92,7 +93,7 @@ struct daemon_backend *daemon_backend_open(const char *socketpath,
        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;
        }
index 76a1d72b537fa25f298ba369fc42cf361b888fa0..1ede1dec9a4cf6857b3607c9da68068d0e34d8ab 100644 (file)
@@ -41,7 +41,8 @@ struct daemon_backend_callbacks {
 
 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));
index c8c47c6d30199ed7f7230c6aca2c6cbd47590209..2022b2ce00e5c5fe6db396598bcc42b45c9e2bf7 100644 (file)
@@ -263,7 +263,9 @@ static gboolean daemon_client_connect_backend(struct daemon_client *cd, struct p
                }
        }
 
-       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;
 }
index 98b9a0f6301109b1e9ed63bf5cd208786a86bc8f..625fb14953db6252ca707812c2cc18890d7505a0 100644 (file)
@@ -54,7 +54,12 @@ static void server_send_login (struct irc_network *s)
        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);
 
index 1bc45d90c0ddf963e03a1034e31229a4c69350da..b1a806019d899f6db604dc708d4b3d6b1cbbdf23 100644 (file)
@@ -355,6 +355,9 @@ static struct irc_login_details *get_login_details(struct irc_network *s)
                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;
 }