aboutsummaryrefslogtreecommitdiffstats
path: root/irc.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 /irc.c
parent35648353ff877344d577e9247ee6f8cfa15ed940 (diff)
more ssl
Diffstat (limited to 'irc.c')
-rw-r--r--irc.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/irc.c b/irc.c
index 9cac0742..563d3fca 100644
--- a/irc.c
+++ b/irc.c
@@ -281,8 +281,14 @@ void irc_free(irc_t * irc)
b_event_remove(irc->w_watch_source_id);
}
+ if (global.conf->ssl) {
+ gnutls_bye(irc->ssl_session, GNUTLS_SHUT_WR);
+ }
closesocket(irc->fd);
irc->fd = -1;
+ if (global.conf->ssl) {
+ gnutls_deinit(irc->ssl_session);
+ }
g_hash_table_foreach_remove(irc->nick_user_hash, irc_free_hashkey, NULL);
g_hash_table_destroy(irc->nick_user_hash);
@@ -665,7 +671,12 @@ void irc_flush(irc_t *irc)
}
len = strlen(irc->sendbuffer);
- if ((n = send(irc->fd, irc->sendbuffer, len, 0)) == len) {
+ if (global.conf->ssl) {
+ n = ssl_server_write(irc, irc->sendbuffer, len);
+ } else {
+ n = send(irc->fd, irc->sendbuffer, len, 0);
+ }
+ if (n == len) {
g_free(irc->sendbuffer);
irc->sendbuffer = NULL;