aboutsummaryrefslogtreecommitdiffstats
path: root/bitlbee.c
diff options
context:
space:
mode:
authorMarius Halden <marius.h@lden.org>2016-03-13 01:19:37 +0100
committerMarius Halden <marius.h@lden.org>2016-05-07 14:27:54 +0200
commitc9cf3bf878606ee7d4b3933b7e86af9fb05f58b5 (patch)
tree702b4d95ef35de2b854d407c4db664a7b5a7e039 /bitlbee.c
parent35648353ff877344d577e9247ee6f8cfa15ed940 (diff)
more ssl
Diffstat (limited to 'bitlbee.c')
-rw-r--r--bitlbee.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/bitlbee.c b/bitlbee.c
index fa8c6795..c725ff0c 100644
--- a/bitlbee.c
+++ b/bitlbee.c
@@ -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);