diff options
author | Marius Halden <marius.h@lden.org> | 2016-03-13 01:19:37 +0100 |
---|---|---|
committer | Marius Halden <marius.h@lden.org> | 2016-05-07 14:27:54 +0200 |
commit | c9cf3bf878606ee7d4b3933b7e86af9fb05f58b5 (patch) | |
tree | 702b4d95ef35de2b854d407c4db664a7b5a7e039 /bitlbee.c | |
parent | 35648353ff877344d577e9247ee6f8cfa15ed940 (diff) |
more ssl
Diffstat (limited to 'bitlbee.c')
-rw-r--r-- | bitlbee.c | 21 |
1 files changed, 19 insertions, 2 deletions
@@ -29,6 +29,7 @@ #include "protocols/nogaim.h" #include "help.h" #include "ipc.h" +#include "lib/ssl_client.h" #include <signal.h> #include <stdio.h> #include <errno.h> @@ -169,6 +170,10 @@ int bitlbee_daemon_init() log_link(LOGLVL_WARNING, LOGOUTPUT_SYSLOG); } + if (global.conf->ssl) { + ssl_setup_server(); + } + return(0); } @@ -187,7 +192,11 @@ gboolean bitlbee_io_current_client_read(gpointer data, gint fd, b_input_conditio char line[513]; int st; - st = read(irc->fd, line, sizeof(line) - 1); + if (global.conf->ssl) { + st = ssl_server_read(irc, line, sizeof(line) - 1); + } else { + st = read(irc->fd, line, sizeof(line) - 1); + } if (st == 0) { irc_abort(irc, 1, "Connection reset by peer"); return FALSE; @@ -236,7 +245,11 @@ gboolean bitlbee_io_current_client_write(gpointer data, gint fd, b_input_conditi } size = strlen(irc->sendbuffer); - st = write(irc->fd, irc->sendbuffer, size); + if (global.conf->ssl) { + st = ssl_server_write(irc, irc->sendbuffer, size); + } else { + st = write(irc->fd, irc->sendbuffer, size); + } if (st == 0 || (st < 0 && !sockerr_again())) { irc_abort(irc, 1, "Write error: %s", strerror(errno)); @@ -316,6 +329,10 @@ static gboolean bitlbee_io_new_client(gpointer data, gint fd, b_input_condition /* Make the connection. */ irc = irc_new(new_socket); + if (global.conf->ssl) { + ssl_accept(irc); + } + /* We can store the IPC fd there now. */ global.listen_socket = fds[1]; global.listen_watch_source_id = b_input_add(fds[1], B_EV_IO_READ, ipc_child_read, irc); |