quassel-irc: Update to latest version

Now that the library has been updated, we can also update this.

Switched to codeload as we don't need the submodule anymore.

Various other Makefile consistency updates.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
This commit is contained in:
Rosen Penev
2019-01-05 19:01:29 -08:00
parent 873762ce2c
commit 1a7d79d981
5 changed files with 134 additions and 25 deletions
@@ -1,5 +1,3 @@
diff --git a/core/Makefile b/core/Makefile
index 6133087..389855c 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -3,7 +3,7 @@ DESTDIR ?=
@@ -11,12 +9,12 @@ index 6133087..389855c 100644
IRSSI_LIB?=$(DESTDIR)/$(LIBDIR)/irssi
IRSSI_CFLAGS+=-I$(IRSSI_INCLUDE)/src/
IRSSI_CFLAGS+=-I$(IRSSI_INCLUDE)/src/core/
@@ -26,7 +26,7 @@ else
@@ -28,7 +28,7 @@ else
LDFLAGS += -lquasselc
endif
-CFLAGS=-std=gnu11 -Wall -Wextra -Werror -g -O2 $(IRSSI_CFLAGS) $(QUASSELC_FLAGS) -Wmissing-prototypes -Wmissing-declarations
+CFLAGS+=-std=gnu11 -Wall -Wextra -Werror -g $(IRSSI_CFLAGS) $(QUASSELC_FLAGS) -Wmissing-prototypes -Wmissing-declarations
TARGET=libquassel_core.so
CFLAGS += $(SSL_CFLAGS)
LDFLAGS+= $(SSL_LDLAGS)
@@ -1,8 +1,6 @@
diff --git a/core/Makefile b/core/Makefile
index 389855c..2f81417 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -44,7 +44,7 @@ irssi/network-openssl.o: CFLAGS:=$(IRSSI_CFLAGS)
@@ -49,7 +49,7 @@ irssi/network-openssl.o: CFLAGS:=$(IRSSI_CFLAGS)
quasselc-connector.o: CFLAGS:=$(CFLAGS)
$(TARGET): $(OBJECTS)
@@ -1,8 +1,6 @@
diff --git a/core/Makefile b/core/Makefile
index 2f81417..aa62201 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -23,7 +23,7 @@ ifndef SYSTEM_QUASSELC
@@ -25,7 +25,7 @@ ifndef SYSTEM_QUASSELC
QUASSELC_FLAGS:=-Ilib
else
QUASSELC_FLAGS:=$(shell pkg-config --cflags quasselc)
@@ -10,4 +8,4 @@ index 2f81417..aa62201 100644
+ LDFLAGS += $(shell pkg-config --libs quasselc)
endif
CFLAGS+=-std=gnu11 -Wall -Wextra -Werror -g -O2 $(IRSSI_CFLAGS) $(QUASSELC_FLAGS) -Wmissing-prototypes -Wmissing-declarations
CFLAGS+=-std=gnu11 -Wall -Wextra -Werror -g $(IRSSI_CFLAGS) $(QUASSELC_FLAGS) -Wmissing-prototypes -Wmissing-declarations
@@ -0,0 +1,118 @@
From 19e810405789a35b92026b56ea49d01a3f544b07 Mon Sep 17 00:00:00 2001
From: Pierre-Hugues Husson <phh@phh.me>
Date: Tue, 17 Jan 2017 23:09:24 +0100
Subject: [PATCH] Get compatible with potential irssi abi 8, and drop polling
---
core/Makefile | 1 -
core/quassel-net.c | 64 ++++++++++++++++++++++++++++++++++++++--------
2 files changed, 53 insertions(+), 10 deletions(-)
diff --git a/core/Makefile b/core/Makefile
index c1c65fc..987bd7b 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -16,7 +16,6 @@ SSL_CFLAGS=$(shell pkg-config --cflags openssl)
SSL_LDLAGS=$(shell pkg-config --libs openssl)
OBJECTS:=quasselc-connector.o quassel-core.o
OBJECTS+=quassel-net.o quassel-msgs.o quassel-cmds.o
-OBJECTS+=irssi/network-openssl.o
OBJECTS+=quassel-fe-window.o quassel-fe-level.o quassel-cfg.o
LDFLAGS ?=
diff --git a/core/quassel-net.c b/core/quassel-net.c
index 8a6eb55..5db7fe0 100644
--- a/core/quassel-net.c
+++ b/core/quassel-net.c
@@ -132,10 +132,10 @@ static SERVER_REC* quassel_server_init_connect(SERVER_CONNECT_REC* conn) {
ret->got = 0;
server_connect_ref(SERVER_CONNECT(conn));
- if(conn->use_ssl) {
+ if(conn->use_tls) {
ret->ssl = 1;
}
- ret->connrec->use_ssl = 0;
+ ret->connrec->use_tls = 0;
ret->channels_join = quassel_irssi_channels_join;
ret->send_message = quassel_irssi_send_message;
@@ -161,12 +161,59 @@ void quassel_net_init(CHAT_PROTOCOL_REC* rec) {
signal_add_first("server connected", (SIGNAL_FUNC) sig_connected);
}
-GIOChannel *irssi_ssl_get_iochannel(GIOChannel *handle, int port, SERVER_REC *server);
+static void quassel_net_final_setup(SERVER_REC* server, GIOChannel *handle) {
+ quassel_login(handle, server->connrec->nick, server->connrec->password);
+ server->handle->handle = handle;
+
+ server->readtag =
+ g_input_add(handle,
+ G_INPUT_READ,
+ (GInputFunction) quassel_parse_incoming, server);
+}
+
+static void quassel_net_ssl_callback(SERVER_REC *server, GIOChannel *handle) {
+ int error;
+
+ g_return_if_fail(IS_SERVER(server));
+
+ error = irssi_ssl_handshake(handle);
+ if (error == -1) {
+ server->connection_lost = TRUE;
+ server_connect_failed(server, NULL);
+ return;
+ }
+ if (error & 1) {
+ if (server->connect_tag != -1)
+ g_source_remove(server->connect_tag);
+ server->connect_tag = g_input_add(handle, error == 1 ? G_INPUT_READ : G_INPUT_WRITE,
+ (GInputFunction)
+ quassel_net_ssl_callback,
+ server);
+ return;
+ }
+
+ if (server->connect_tag != -1) {
+ g_source_remove(server->connect_tag);
+ server->connect_tag = -1;
+ }
+
+ quassel_net_final_setup(server, handle);
+}
+
void quassel_irssi_init_ack(void *arg) {
Quassel_SERVER_REC *server = (Quassel_SERVER_REC*)arg;
- if(!server->ssl)
- goto login;
- GIOChannel* ssl_handle = irssi_ssl_get_iochannel(server->handle->handle, 1337, SERVER(server));
+ GIOChannel* ssl_handle = net_start_ssl((SERVER_REC*)server);
+
+ if(server->readtag != -1) {
+ g_source_remove(server->readtag);
+ server->readtag = -1;
+ }
+
+ if(!server->ssl) {
+ quassel_net_final_setup((SERVER_REC*)server, server->handle->handle);
+ return;
+ }
+
int error;
//That's polling, and that's really bad...
while( (error=irssi_ssl_handshake(ssl_handle)) & 1) {
@@ -175,10 +222,7 @@ void quassel_irssi_init_ack(void *arg) {
return;
}
}
- server->handle->handle = ssl_handle;
-
-login:
- quassel_login(server->handle->handle, server->connrec->nick, server->connrec->password);
+ quassel_net_ssl_callback((SERVER_REC*)server, ssl_handle);
}
void quassel_irssi_init_nack(void *arg) {
--
2.17.1