From f7cd1346cc8a813d8b5176d2c5889b9a552afb73 Mon Sep 17 00:00:00 2001 From: HanzZ Date: Tue, 25 Oct 2011 18:31:13 +0200 Subject: [PATCH] PURPLE_INPUT_WRITE works again --- backends/libpurple/main.cpp | 10 +++++++++- spectrum/src/sample.cfg | 4 ++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/backends/libpurple/main.cpp b/backends/libpurple/main.cpp index 9e03792a..657a3799 100644 --- a/backends/libpurple/main.cpp +++ b/backends/libpurple/main.cpp @@ -45,6 +45,7 @@ using namespace log4cxx; static LoggerPtr logger_libpurple = log4cxx::Logger::getLogger("libpurple"); static LoggerPtr logger = log4cxx::Logger::getLogger("backend"); int m_sock; +static int writeInput; using namespace Transport; @@ -61,6 +62,8 @@ template std::string stringOf(T object) { return (os.str()); } +static void transportDataReceived(gpointer data, gint source, PurpleInputCondition cond); + class SpectrumNetworkPlugin; GKeyFile *keyfile; @@ -907,6 +910,8 @@ class SpectrumNetworkPlugin : public NetworkPlugin { void sendData(const std::string &string) { write(m_sock, string.c_str(), string.size()); + if (writeInput == 0) + writeInput = purple_input_add(m_sock, PURPLE_INPUT_WRITE, &transportDataReceived, NULL); } void readyForData() { @@ -1750,6 +1755,10 @@ static void transportDataReceived(gpointer data, gint source, PurpleInputConditi np->handleDataRead(d); } else { + if (writeInput != 0) { + purple_input_remove(writeInput); + writeInput = 0; + } np->readyForData(); } } @@ -1852,7 +1861,6 @@ int main(int argc, char **argv) { m_sock = create_socket(host, port); purple_input_add(m_sock, PURPLE_INPUT_READ, &transportDataReceived, NULL); -// purple_input_add(m_sock, PURPLE_INPUT_WRITE, &transportDataReceived, NULL); np = new SpectrumNetworkPlugin(host, port); bool libev = KEYFILE_STRING("service", "eventloop") == "libev"; diff --git a/spectrum/src/sample.cfg b/spectrum/src/sample.cfg index b3b18dd7..c89c7871 100644 --- a/spectrum/src/sample.cfg +++ b/spectrum/src/sample.cfg @@ -11,10 +11,10 @@ admin_password=test #cert=server.pfx #patch to PKCS#12 certificate #cert_password=test #password to that certificate if any users_per_backend=10 -#backend=/home/hanzz/code/libtransport/backends/libpurple/spectrum2_libpurple_backend +backend=/home/hanzz/code/libtransport/backends/libpurple/spectrum2_libpurple_backend #backend=/usr/bin/mono /home/hanzz/code/networkplugin-csharp/msnp-sharp-backend/bin/Debug/msnp-sharp-backend.exe #backend=/home/hanzz/code/libtransport/backends/frotz/spectrum2_frotz_backend -backend=/home/hanzz/code/libtransport/backends/libircclient-qt/spectrum2_libircclient-qt_backend +#backend=/home/hanzz/code/libtransport/backends/libircclient-qt/spectrum2_libircclient-qt_backend #protocol=prpl-msn protocol=any #protocol=prpl-icq