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>lilik-openwrt-22.03
@ -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 | |||||
@ -1,26 +0,0 @@ | |||||
From 7d4caa6a60af0e584dc5c3dc44437117744f6f84 Mon Sep 17 00:00:00 2001 | |||||
From: =?UTF-8?q?Jelmer=20Vernoo=C4=B3?= <jelmer@jelmer.uk> | |||||
Date: Sat, 14 Jan 2017 20:55:00 +0000 | |||||
Subject: [PATCH] Use sys/socket.h rather than asm/socket.h. | |||||
The latter is not available on some platforms. | |||||
--- | |||||
core/quasselc-connector.c | 2 +- | |||||
1 file changed, 1 insertion(+), 1 deletion(-) | |||||
diff --git a/core/quasselc-connector.c b/core/quasselc-connector.c | |||||
index 08a3718..77e8d7a 100644 | |||||
--- a/core/quasselc-connector.c | |||||
+++ b/core/quasselc-connector.c | |||||
@@ -16,7 +16,7 @@ | |||||
*/ | |||||
#define _GNU_SOURCE | |||||
-#include <asm/socket.h> | |||||
+#include <sys/socket.h> | |||||
#include <sys/types.h> | |||||
#include <sys/socket.h> | |||||
#include <sys/wait.h> | |||||
-- | |||||
2.19.1 | |||||
@ -1,28 +0,0 @@ | |||||
From 525ff7ec3bafe9ccbf5802559e2664a25cf925e1 Mon Sep 17 00:00:00 2001 | |||||
From: =?UTF-8?q?Bastian=20M=C3=BCller?= <db1bm@gmx.de> | |||||
Date: Sat, 12 Aug 2017 10:24:49 +0200 | |||||
Subject: [PATCH] Fix nullpointer dereference when leaving an unconnected | |||||
window | |||||
--- | |||||
core/quassel-fe-level.c | 4 ++++ | |||||
1 file changed, 4 insertions(+) | |||||
diff --git a/core/quassel-fe-level.c b/core/quassel-fe-level.c | |||||
index 3d69202..3382ddc 100644 | |||||
--- a/core/quassel-fe-level.c | |||||
+++ b/core/quassel-fe-level.c | |||||
@@ -62,6 +62,10 @@ static void sig_created(WINDOW_REC *winrec, int automatic) { | |||||
return; | |||||
} | |||||
+ if (!winrec->active_server) { | |||||
+ return; | |||||
+ } | |||||
+ | |||||
CHANNEL_REC *_chanrec = channel_find(winrec->active_server, winrec->active->visible_name); | |||||
if(_chanrec->chat_type != Quassel_PROTOCOL) | |||||
return; | |||||
-- | |||||
2.19.1 | |||||
@ -1,64 +0,0 @@ | |||||
From ab0dc71822b3e769b4be2a990bc6c87347016cfd Mon Sep 17 00:00:00 2001 | |||||
From: Pierre-Hugues Husson <phh@archos.com> | |||||
Date: Tue, 12 Sep 2017 17:42:46 +0200 | |||||
Subject: [PATCH] Makes gcc7 happy | |||||
--- | |||||
core/quasselc-connector.c | 7 +++++++ | |||||
1 file changed, 7 insertions(+) | |||||
diff --git a/core/quasselc-connector.c b/core/quasselc-connector.c | |||||
index 77e8d7a..d28fa5e 100644 | |||||
--- a/core/quasselc-connector.c | |||||
+++ b/core/quasselc-connector.c | |||||
@@ -145,6 +145,7 @@ void handle_sync(void* irssi_arg, object_t o, function_t f, ...) { | |||||
highlight=0; | |||||
if(!fnc) | |||||
fnc="MarkBufferAsRead"; | |||||
+ /* Falls through */ | |||||
case Displayed: | |||||
if(!fnc) | |||||
fnc="BufferDisplayed"; | |||||
@@ -155,6 +156,7 @@ void handle_sync(void* irssi_arg, object_t o, function_t f, ...) { | |||||
case Removed: | |||||
if(!fnc) | |||||
fnc="BufferRemoved"; | |||||
+ /* Falls through */ | |||||
case TempRemoved: | |||||
if(!fnc) | |||||
fnc="BufferTempRemoved"; | |||||
@@ -210,6 +212,7 @@ void handle_sync(void* irssi_arg, object_t o, function_t f, ...) { | |||||
case AddUserMode: | |||||
if(!fnc) | |||||
fnc="AddUserMode"; | |||||
+ /* Falls through */ | |||||
case RemoveUserMode: | |||||
if(!fnc) | |||||
fnc="RemoveUserMode"; | |||||
@@ -223,6 +226,7 @@ void handle_sync(void* irssi_arg, object_t o, function_t f, ...) { | |||||
case SetNick2: | |||||
if(!fnc) | |||||
fnc="SetNick"; | |||||
+ /* Falls through */ | |||||
case Quit: | |||||
if(!fnc) | |||||
fnc="Quit"; | |||||
@@ -233,12 +237,15 @@ void handle_sync(void* irssi_arg, object_t o, function_t f, ...) { | |||||
case SetNick: | |||||
if(!fnc) | |||||
fnc="SetNick"; | |||||
+ /* Falls through */ | |||||
case SetServer: | |||||
if(!fnc) | |||||
fnc="SetServer"; | |||||
+ /* Falls through */ | |||||
case SetRealName: | |||||
if(!fnc) | |||||
fnc="SetRealName"; | |||||
+ /* Falls through */ | |||||
case PartChannel: | |||||
if(!fnc) | |||||
fnc="PartChannel"; | |||||
-- | |||||
2.19.1 | |||||