File update-to-latest-git-fixes.patch of Package libjreen
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8b248b1..512fd35 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,7 +1,7 @@
-CMAKE_MINIMUM_REQUIRED( VERSION 2.6 )
-PROJECT(Jreen)
+cmake_minimum_required(VERSION 2.8.6)
+project(Jreen)
-LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
set(CMAKE_JREEN_VERSION_MAJOR 1 CACHE INT "Major Jreen version number" FORCE)
set(CMAKE_JREEN_VERSION_MINOR 1 CACHE INT "Minor Jreen version number" FORCE)
@@ -9,156 +9,139 @@ set(CMAKE_JREEN_VERSION_PATCH 1 CACHE INT "Release Jreen version number" FORCE)
set(CMAKE_JREEN_VERSION_STRING "${CMAKE_JREEN_VERSION_MAJOR}.${CMAKE_JREEN_VERSION_MINOR}.${CMAKE_JREEN_VERSION_PATCH}" CACHE STRING "Jreen version string" FORCE)
# Search for source and headers in source directory (non-recursive)
-FILE(GLOB_RECURSE SRC "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
-FILE(GLOB_RECURSE HDR "${CMAKE_CURRENT_SOURCE_DIR}/src/*.h")
+file(GLOB_RECURSE SRC "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
-# Require QT 4.6
-SET(QT_MIN_VERSION "4.6.0")
+option(JREEN_FORCE_QT4 "Force using of Qt4 in Jreen" off)
-# Search for QT4
-FIND_PACKAGE(Qt4 COMPONENTS QtCore QtNetwork REQUIRED)
-INCLUDE(${QT_USE_FILE})
-INCLUDE(jreenMacros)
-FIND_PACKAGE(QCA2 REQUIRED)
+if(NOT JREEN_FORCE_QT4)
+ find_package(Qt5Core QUIET)
+endif()
+
+if(Qt5Core_DIR)
+ find_package(Qt5Network QUIET)
+ message(STATUS "Found Qt5!")
+
+ add_definitions("-DQT_DISABLE_DEPRECATED_BEFORE=0")
+ list(REMOVE_ITEM SRC "${CMAKE_CURRENT_SOURCE_DIR}/src/sjdns.cpp")
+else()
+ message(STATUS "Could not find Qt5, so let's use Qt4...")
-if( JREEN_BUILD_INTERNAL )
- add_definitions( "-DJ_BUILD_INTERNAL" )
+ find_package(Qt4 4.6.0 COMPONENTS QtCore QtNetwork REQUIRED)
+
+ macro(qt5_use_modules)
+ endmacro()
+
+ include(${QT_USE_FILE})
endif()
-FIND_PACKAGE(PkgConfig)
-#pkg_search_module(NICE nice)
-#if(NOT NICE_FOUND)
-# message(STATUS "Could not find nice library.")
-#else(NOT NICE_FOUND)
-# message(STATUS "Nice library is found.")
-# include_directories(${NICE_INCLUDE_DIRS})
-# ADD_DEFINITIONS("-DJREEN_HAVE_NICE=1")
-#endif(NOT NICE_FOUND)
+if(JREEN_BUILD_INTERNAL)
+ add_definitions("-DJ_BUILD_INTERNAL")
+endif()
+find_package(PkgConfig)
+find_package(GSASL REQUIRED)
pkg_search_module(SPEEX speex)
if(NOT SPEEX_FOUND)
- message(STATUS "Could not find speex library.")
-else(NOT SPEEX_FOUND)
- message(STATUS "Speex library is found.")
- include_directories(${SPEEX_INCLUDE_DIRS})
- ADD_DEFINITIONS("-DJREEN_HAVE_SPEEX=1")
-endif(NOT SPEEX_FOUND)
+ message(STATUS "Could not find speex library.")
+else()
+ message(STATUS "Speex library is found.")
+ include_directories(${SPEEX_INCLUDE_DIRS})
+ add_definitions("-DJREEN_HAVE_SPEEX=1")
+endif()
# FindZLIB is broken on Ubuntu, so find the library using pkg-config
if(LINUX)
- find_package(PkgConfig)
- pkg_search_module(ZLIB_PKGCONF REQUIRED zlib)
- find_path(ZLIB_INCLUDE_DIR
- NAMES zlib.h
- PATHS ${ZLIB_PKGCONF_INCLUDE_DIRS}
- )
- find_library(ZLIB_LIBRARIES
- NAMES z
- PATHS ${ZLIB_PKGCONF_LIBRARY_DIRS}
- )
- if(NOT ZLIB_INCLUDE_DIR)
- message(SEND_ERROR "Could not find zlib includes.")
- endif(NOT ZLIB_INCLUDE_DIR)
- if(NOT ZLIB_LIBRARIES)
- message(SEND_ERROR "Could not find zlib library.")
- endif(NOT ZLIB_LIBRARIES)
-
-
+ find_package(PkgConfig)
+ pkg_search_module(ZLIB_PKGCONF REQUIRED zlib)
+
+ find_path(ZLIB_INCLUDE_DIR
+ NAMES zlib.h
+ PATHS ${ZLIB_PKGCONF_INCLUDE_DIRS}
+ )
+
+ find_library(ZLIB_LIBRARIES
+ NAMES z
+ PATHS ${ZLIB_PKGCONF_LIBRARY_DIRS}
+ )
+
+ if(NOT ZLIB_INCLUDE_DIR)
+ message(SEND_ERROR "Could not find zlib includes.")
+ endif(NOT ZLIB_INCLUDE_DIR)
+
+ if(NOT ZLIB_LIBRARIES)
+ message(SEND_ERROR "Could not find zlib library.")
+ endif(NOT ZLIB_LIBRARIES)
else()
- find_package(ZLIB REQUIRED)
+ find_package(ZLIB REQUIRED)
endif()
-#add_subdirectory(3rdparty)
-
-#spike
-
# Add include directories
-INCLUDE_DIRECTORIES(.
- ${CMAKE_CURRENT_BINARY_DIR}
- 3rdparty
- ${QCA2_INCLUDE_DIR}
- ${ZLIB_INCLUDE_DIR}
+include_directories(.
+ ${CMAKE_CURRENT_BINARY_DIR}
+ 3rdparty
+ ${GSASL_INCLUDE_DIRS}
+ ${ZLIB_INCLUDE_DIR}
)
LIST(APPEND SRC ${3RD_PARTY_SRC_C})
LIST(APPEND SRC ${3RD_PARTY_SRC})
-LIST(APPEND HDR ${3RD_PARTY_HDR})
# Ice support
option(JREEN_USE_IRISICE "Use ICE from IRIS" OFF)
if (JREEN_USE_IRISICE)
- file(GLOB_RECURSE ICESUPPORT_SRC "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/icesupport/*.cpp")
- file(GLOB_RECURSE ICESUPPORT_SRC_C "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/icesupport/*.c")
- file(GLOB_RECURSE ICESUPPORT_HDR "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/icesupport/*.h")
- list(APPEND SRC ${ICESUPPORT_SRC})
- list(APPEND SRC ${ICESUPPORT_SRC_C})
- list(APPEND HDR ${ICESUPPORT_HDR})
- add_definitions("-DHAVE_IRISICE")
-endif()
-
-option(JREEN_USE_SIMPLESASL "Use SimpleSASL" ON)
-if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/simplesasl")
- set(JREEN_USE_SIMPLESASL OFF)
- message("Using cyrus sasl auth")
-endif()
-if(JREEN_USE_SIMPLESASL)
- message("Using simple sasl auth instead cyrus sasl")
- add_definitions("-DHAVE_SIMPLESASL")
- file(GLOB_RECURSE SIMPLESASL_SRC "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/simplesasl/*.cpp")
- file(GLOB_RECURSE SIMPLESASL_SRC_C "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/simplesasl/*.c")
- file(GLOB_RECURSE SIMPLESASL_HDR "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/simplesasl/*.h")
- list(APPEND SRC ${SIMPLESASL_SRC})
- list(APPEND SRC ${SIMPLESASL_SRC_C})
- list(APPEND HDR ${SIMPLESASL_HDR})
+ file(GLOB_RECURSE ICESUPPORT_SRC "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/icesupport/*.cpp")
+ file(GLOB_RECURSE ICESUPPORT_SRC_C "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/icesupport/*.c")
+ list(APPEND SRC ${ICESUPPORT_SRC})
+ list(APPEND SRC ${ICESUPPORT_SRC_C})
+ add_definitions("-DHAVE_IRISICE")
endif()
-option(JREEN_USE_SYSTEM_JDNS "Use system JDNS" OFF)
-if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/jdns")
- set(JREEN_USE_SYSTEM_JDNS ON)
+if(NOT Qt5Core_DIR)
+ option(JREEN_USE_SYSTEM_JDNS "Use system JDNS" OFF)
+
+ if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/jdns")
+ set(JREEN_USE_SYSTEM_JDNS ON)
+ endif()
+
+ if(JREEN_USE_SYSTEM_JDNS)
+ # For Linux it was found already before at line 29
+ if(NOT LINUX)
+ find_package(PkgConfig)
+ endif()
+ pkg_search_module(JDNS REQUIRED qjdns)
+ include_directories(${JDNS_INCLUDE_DIR})
+ list(APPEND EXTRA_LIBS ${JDNS_LIBRARIES})
+ else()
+ file(GLOB_RECURSE JDNS_SRC "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/jdns/*.cpp")
+ file(GLOB_RECURSE JDNS_SRC_C "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/jdns/*.c")
+ list(APPEND SRC ${JDNS_SRC})
+ list(APPEND SRC ${JDNS_SRC_C})
+ include_directories("${CMAKE_CURRENT_SOURCE_DIR}/3rdparty")
+ endif()
endif()
-if(JREEN_USE_SYSTEM_JDNS)
- # For Linux it was found already before at line 29
- if(NOT LINUX)
- find_package(PkgConfig)
- endif()
- pkg_search_module(JDNS REQUIRED qjdns)
- include_directories(${JDNS_INCLUDE_DIR})
- list(APPEND EXTRA_LIBS ${JDNS_LIBRARIES})
-else()
- file(GLOB_RECURSE JDNS_SRC "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/jdns/*.cpp")
- file(GLOB_RECURSE JDNS_SRC_C "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/jdns/*.c")
- file(GLOB_RECURSE JDNS_HDR "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/jdns/*.h")
- list(APPEND SRC ${JDNS_SRC})
- list(APPEND SRC ${JDNS_SRC_C})
- list(APPEND HDR ${JDNS_HDR})
- include_directories("${CMAKE_CURRENT_SOURCE_DIR}/3rdparty")
-endif()
-
-# Generate moc files
-JREEN_WRAP_CPP(MOC_SRC ${HDR})
# This project will generate library
if(SYMBIAN)
- set(JREEN_BUILD_TYPE STATIC)
+ set(JREEN_BUILD_TYPE STATIC)
else()
set(JREEN_BUILD_TYPE SHARED)
endif()
-ADD_LIBRARY(jreen ${JREEN_BUILD_TYPE} ${SRC} ${MOC_SRC} ${HDR} )
+ADD_LIBRARY(jreen ${JREEN_BUILD_TYPE} ${SRC} ${MOC_SRC})
#compiler flags
#fixme add macro to clang
if(CMAKE_COMPILER_IS_GNUCXX)
- IF(SYMBIAN)
+ if(SYMBIAN)
#disable stupid warnings
ADD_DEFINITIONS("-w")
- ELSE()
+ else()
ADD_DEFINITIONS("-Wall -Wextra" ) #add -Werror
- ENDIF()
- if(NOT WIN32)
+ ENDif()
+ if(NOT WIN32)
ADD_DEFINITIONS("-fvisibility=hidden" )
- endif(NOT WIN32)
+ endif(NOT WIN32)
elseif(MSVC)
ADD_DEFINITIONS("/W3" )
endif()
@@ -171,14 +154,15 @@ set_target_properties(jreen PROPERTIES
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/include/jreen" )
file(GLOB_RECURSE JREEN_INCLUDE_HEADERS RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/src" "${CMAKE_CURRENT_SOURCE_DIR}/src/*.h")
+
foreach(header ${JREEN_INCLUDE_HEADERS})
- if(NOT ${header} MATCHES ".*_p\\.h")
- if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/include/jreen/${header}")
+ if(NOT ${header} MATCHES ".*_p\\.h")
+ if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/include/jreen/${header}")
file( WRITE "${CMAKE_CURRENT_BINARY_DIR}/include/jreen/${header}"
"#include \"${CMAKE_CURRENT_SOURCE_DIR}/src/${header}\"
"
)
- endif(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/include/jreen/${header}")
+ endif(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/include/jreen/${header}")
get_filename_component(headerPath ${header} PATH)
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/${header}"
DESTINATION include/jreen/${headerPath}
@@ -190,27 +174,24 @@ endforeach(header)
set(JREEN_LIBRARIES jreen CACHE INTERNAL "" )
set(JREEN_INCLUDE_DIRS "${CMAKE_CURRENT_BINARY_DIR}/include" CACHE INTERNAL "")
-IF(WIN32)
- LIST(APPEND EXTRA_LIBS ws2_32)
-ENDIF()
-#IF(NICE_FOUND)
-# LIST(APPEND EXTRA_LIBS ${NICE_LIBRARIES})
-#ENDIF(NICE_FOUND)
-IF(SPEEX_FOUND)
- LIST(APPEND EXTRA_LIBS ${SPEEX_LIBRARIES})
-ENDIF(SPEEX_FOUND)
-
-# Link with Qt
-#IF(SYMBIAN)
-#ENDIF()
-
-JREEN_TARGET_LINK_LIBRARIES(jreen
- ${QT_LIBRARIES}
- ${QCA2_LIBRARIES}
- ${ZLIB_LIBRARIES}
- ${EXTRA_LIBS}
+if(WIN32)
+ list(APPEND EXTRA_LIBS ws2_32)
+endif()
+
+if(SPEEX_FOUND)
+ list(APPEND EXTRA_LIBS ${SPEEX_LIBRARIES} )
+endif()
+
+target_link_libraries(jreen
+ ${QT_LIBRARIES}
+ ${GSASL_LIBRARIES}
+ ${ZLIB_LIBRARIES}
+ ${EXTRA_LIBS}
)
+set_target_properties(jreen PROPERTIES AUTOMOC TRUE)
+qt5_use_modules(jreen Core Network)
+
# Install package config file
if(NOT WIN32)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/libjreen.pc.cmake
@@ -219,7 +200,7 @@ if(NOT WIN32)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libjreen.pc
DESTINATION lib${LIB_SUFFIX}/pkgconfig
)
-endif(NOT WIN32)
+endif()
install( TARGETS jreen
RUNTIME DESTINATION bin
diff --git a/cmake/FindGSASL.cmake b/cmake/FindGSASL.cmake
new file mode 100644
index 0000000..a80e24e
--- /dev/null
+++ b/cmake/FindGSASL.cmake
@@ -0,0 +1,28 @@
+# - Try to find GSASL
+# Find GSASL headers, libraries and the answer to all questions.
+#
+# GSASL_FOUND True if libgsasl got found
+# GSASL_INCLUDE_DIRS Location of libgsasl headers
+# GSASL_LIBRARIES List of libaries to use libgsasl
+#
+# Copyright (c) 2009 Nigmatullin Ruslan <euroelessar@gmail.com>
+#
+# Redistribution and use is allowed according to the terms of the New
+# BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+#
+
+if( WIN32 )
+ FIND_PATH( GSASL_INCLUDE_DIRS gsasl.h $ENV{INCLUDE} )
+ FIND_LIBRARY( GSASL_LIBRARIES libgsasl libgsasl-7 libgsasl-8 $ENV{LIB} )
+else( )
+ FIND_PACKAGE(PkgConfig)
+ PKG_SEARCH_MODULE(GSASL REQUIRED libgsasl)
+endif( )
+
+if( GSASL_LIBRARIES AND GSASL_INCLUDE_DIRS )
+ message( STATUS "Found libgsasl: ${GSASL_LIBRARIES}" )
+ set( GSASL_FOUND true )
+else( GSASL_LIBRARIES AND GSASL_INCLUDE_DIRS )
+ message( STATUS "Could NOT find libgsasl" )
+endif( GSASL_LIBRARIES AND GSASL_INCLUDE_DIRS )
diff --git a/cmake/jreenMacros.cmake b/cmake/jreenMacros.cmake
deleted file mode 100644
index 821bd3c..0000000
--- a/cmake/jreenMacros.cmake
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-if(SYMBIAN)
- function(jreen_add_executable)
- symbian_add_executable(${ARGN})
- endfunction()
- function(jreen_target_link_libraries)
- symbian_target_link_libraries(${ARGN})
- endfunction()
-else(SYMBIAN)
- function(jreen_add_executable)
- add_executable(${ARGN})
- endfunction()
- function(jreen_target_link_libraries)
- target_link_libraries(${ARGN})
- endfunction()
-endif(SYMBIAN)
-
-MACRO (JREEN_WRAP_CPP outfiles )
- # get include dirs
- QT4_GET_MOC_FLAGS(moc_flags)
- QT4_EXTRACT_OPTIONS(moc_files moc_options ${ARGN})
-
- FOREACH (it ${moc_files})
- GET_FILENAME_COMPONENT(_abs_FILE ${it} ABSOLUTE)
- GET_FILENAME_COMPONENT(_abs_PATH ${_abs_FILE} PATH)
- GET_FILENAME_COMPONENT(_basename ${it} NAME_WE)
-
- SET(_HAS_MOC false)
-
- IF(EXISTS ${_abs_PATH}/${_basename}.cpp)
- SET(_header ${_abs_PATH}/${_basename}.cpp)
- FILE(READ ${_header} _contents)
- STRING(REGEX MATCHALL "# *include +[\">]moc_[^ ]+\\.cpp[\">]" _match "${_contents}")
- STRING(REGEX MATCHALL "# *include +[^ ]+\\.moc[\">]" _match2 "${_contents}")
- STRING(REGEX MATCHALL "Q_OBJECT" _match3 "${_contents}")
- IF(_match)
- SET(_HAS_MOC true)
- FOREACH (_current_MOC_INC ${_match})
- STRING(REGEX MATCH "moc_[^ <\"]+\\.cpp" _current_MOC "${_current_MOC_INC}")
- SET(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_current_MOC})
- QT4_CREATE_MOC_COMMAND(${_abs_FILE} ${_moc} "${_moc_INCS}" "")
- MACRO_ADD_FILE_DEPENDENCIES(${_abs_FILE} ${_moc})
- ENDFOREACH (_current_MOC_INC)
- ENDIF()
- IF(_match2)
- FOREACH (_current_MOC_INC ${_match2})
- STRING(REGEX MATCH "[^ <\"]+\\.moc" _current_MOC "${_current_MOC_INC}")
- SET(_moc ${CMAKE_CURRENT_BINARY_DIR}/${_current_MOC})
- QT4_CREATE_MOC_COMMAND(${_header} ${_moc} "${_moc_INCS}" "")
- MACRO_ADD_FILE_DEPENDENCIES(${_header} ${_moc})
- ENDFOREACH (_current_MOC_INC)
- ENDIF()
- ENDIF()
- IF(NOT _HAS_MOC)
- FILE(READ ${_abs_FILE} _contents)
- STRING(REGEX MATCHALL "Q_OBJECT|Q_GADGET" _match2 "${_contents}")
- IF(_match2)
- QT4_MAKE_OUTPUT_FILE(${_abs_FILE} moc_ cpp outfile)
- QT4_CREATE_MOC_COMMAND(${_abs_FILE} ${outfile} "${moc_flags}" "${moc_options}")
- SET(${outfiles} ${${outfiles}} ${outfile})
- ENDIF()
- ENDIF()
- ENDFOREACH(it)
-ENDMACRO (JREEN_WRAP_CPP)
diff --git a/src/abstractroster.cpp b/src/abstractroster.cpp
index eac5d32..b829b99 100644
--- a/src/abstractroster.cpp
+++ b/src/abstractroster.cpp
@@ -221,7 +221,7 @@ void AbstractRoster::load()
{
Q_D(AbstractRoster);
IQ iq(IQ::Get, JID(), d->client->getID());
- Logger::debug() << Q_FUNC_INFO << d->version;
+ jreenDebug() << Q_FUNC_INFO << d->version;
iq.addExtension(new AbstractRosterQuery(d->version));
d->client->send(iq, this, SLOT(handleIQ(Jreen::IQ,int)), LoadRoster);
}
@@ -291,7 +291,7 @@ void AbstractRoster::handleIQ(const IQ &iq)
d->version = roster->ver();
iq.accept();
foreach (const RosterItem::Ptr &item, roster->items()) {
- Logger::debug() << "handle item" << item->jid();
+ jreenDebug() << "handle item" << item->jid();
if(item->subscription() == RosterItem::Remove) {
onItemRemoved(item->jid());
d->items.remove(item->jid());
@@ -340,7 +340,7 @@ void AbstractRoster::handleIQ(const IQ &iq, int context)
break;
case AddRosterItem:
case RemoveRosterItem: {
- Logger::debug() << "handle add/remove item" << (iq.subtype() == IQ::Error);
+ jreenDebug() << "handle add/remove item" << (iq.subtype() == IQ::Error);
// IQ request = d->iqHash.take(iq.id());
// Q_ASSERT(request.subtype() != IQ::Invalid);
// if(iq.subtype() == IQ::Error)
diff --git a/src/abstractroster.h b/src/abstractroster.h
index 602b3aa..6684b4b 100644
--- a/src/abstractroster.h
+++ b/src/abstractroster.h
@@ -25,8 +25,8 @@
// TODO: Create simple RosterManager for bots and simple applications
-#ifndef ABSTRACTROSTER_H
-#define ABSTRACTROSTER_H
+#ifndef JREEN_ABSTRACTROSTER_H
+#define JREEN_ABSTRACTROSTER_H
#include <QSharedPointer>
@@ -171,4 +171,4 @@ protected:
}
-#endif // ABSTRACTROSTER_H
+#endif // JREEN_ABSTRACTROSTER_H
diff --git a/src/abstractroster_p.h b/src/abstractroster_p.h
index 8f7d283..e904fd1 100644
--- a/src/abstractroster_p.h
+++ b/src/abstractroster_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef ABSTRACTROSTER_P_H
-#define ABSTRACTROSTER_P_H
+#ifndef JREEN_ABSTRACTROSTER_P_H
+#define JREEN_ABSTRACTROSTER_P_H
#include "abstractroster.h"
@@ -94,4 +94,4 @@ private:
};
}
-#endif // ABSTRACTROSTER_P_H
+#endif // JREEN_ABSTRACTROSTER_P_H
diff --git a/src/action_p.h b/src/action_p.h
index 2cf38d0..990462e 100644
--- a/src/action_p.h
+++ b/src/action_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef ACTION_H
-#define ACTION_H
+#ifndef JREEN_ACTION_P_H
+#define JREEN_ACTION_P_H
#include <QObject>
#include <QMap>
@@ -51,4 +51,4 @@ private:
}
-#endif // ACTION_H
+#endif // JREEN_ACTION_P_H
diff --git a/src/activity.h b/src/activity.h
index 2746ec8..7ada9c0 100644
--- a/src/activity.h
+++ b/src/activity.h
@@ -24,8 +24,8 @@
**
****************************************************************************/
-#ifndef ACTIVITY_H
-#define ACTIVITY_H
+#ifndef JREEN_ACTIVITY_H
+#define JREEN_ACTIVITY_H
#include "stanzaextension.h"
namespace Jreen {
@@ -148,4 +148,4 @@ private:
} // namespace Jreen
-#endif // ACTIVITY_H
+#endif // JREEN_ACTIVITY_H
diff --git a/src/activityfactory_p.h b/src/activityfactory_p.h
index 7d1b685..5409b60 100644
--- a/src/activityfactory_p.h
+++ b/src/activityfactory_p.h
@@ -24,8 +24,8 @@
**
****************************************************************************/
-#ifndef ACTIVITYFACTORY_P_H
-#define ACTIVITYFACTORY_P_H
+#ifndef JREEN_ACTIVITYFACTORY_P_H
+#define JREEN_ACTIVITYFACTORY_P_H
#include "stanzaextension.h"
#include "activity.h"
@@ -60,4 +60,4 @@ private:
} // namespace Jreen
-#endif // ACTIVITYFACTORY_P_H
+#endif // JREEN_ACTIVITYFACTORY_P_H
diff --git a/src/attention.h b/src/attention.h
index f8c0771..0bda1fd 100644
--- a/src/attention.h
+++ b/src/attention.h
@@ -22,8 +22,8 @@
** $JREEN_END_LICENSE$
**
****************************************************************************/
-#ifndef ATTENTION_H
-#define ATTENTION_H
+#ifndef JREEN_ATTENTION_H
+#define JREEN_ATTENTION_H
#include "stanzaextension.h"
namespace Jreen {
@@ -45,4 +45,4 @@ private:
} // namespace Jreen
-#endif // ATTENTION_H
+#endif // JREEN_ATTENTION_H
diff --git a/src/attentionfactory_p.h b/src/attentionfactory_p.h
index 69e9ae9..e671c67 100644
--- a/src/attentionfactory_p.h
+++ b/src/attentionfactory_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef ATTENTIONFACTORY_P_H
-#define ATTENTIONFACTORY_P_H
+#ifndef JREEN_ATTENTIONFACTORY_P_H
+#define JREEN_ATTENTIONFACTORY_P_H
#include "stanzaextension.h"
#include "attention.h"
@@ -46,4 +46,4 @@ public:
} // namespace Jreen
-#endif // ATTENTIONFACTORY_P_H
+#endif // JREEN_ATTENTIONFACTORY_P_H
diff --git a/src/bindfeature.cpp b/src/bindfeature.cpp
index 44d9f51..ce9a20e 100644
--- a/src/bindfeature.cpp
+++ b/src/bindfeature.cpp
@@ -148,7 +148,7 @@ void BindFeature::reset()
bool BindFeature::canParse(const QStringRef &name, const QStringRef &uri, const QXmlStreamAttributes &attributes)
{
Q_UNUSED(attributes);
- Logger::debug() << Q_FUNC_INFO;
+ jreenDebug() << Q_FUNC_INFO;
return name == QLatin1String("bind") && uri == NS_BIND;
}
@@ -157,7 +157,7 @@ void BindFeature::handleStartElement(const QStringRef &name, const QStringRef &u
Q_UNUSED(name);
Q_UNUSED(uri);
Q_UNUSED(attributes);
- Logger::debug() << Q_FUNC_INFO;
+ jreenDebug() << Q_FUNC_INFO;
m_hasFeature = true;
}
diff --git a/src/bindfeature_p.h b/src/bindfeature_p.h
index 5823edc..5f23e59 100644
--- a/src/bindfeature_p.h
+++ b/src/bindfeature_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef BINDFEATURE_H
-#define BINDFEATURE_H
+#ifndef JREEN_BINDFEATURE_P_H
+#define JREEN_BINDFEATURE_P_H
#include "streamfeature_p.h"
#include "stanzaextension.h"
@@ -55,4 +55,4 @@ private:
};
}
-#endif // BINDFEATURE_H
+#endif // JREEN_BINDFEATURE_P_H
diff --git a/src/bookmark.h b/src/bookmark.h
index e9d1d5f..9d26cbb 100644
--- a/src/bookmark.h
+++ b/src/bookmark.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef BOOKMARK_H
-#define BOOKMARK_H
+#ifndef JREEN_BOOKMARK_H
+#define JREEN_BOOKMARK_H
#include "stanzaextension.h"
#include "jid.h"
@@ -108,4 +108,4 @@ private:
} // namespace Jreen
-#endif // BOOKMARK_H
+#endif // JREEN_BOOKMARK_H
diff --git a/src/bookmarkfactory_p.h b/src/bookmarkfactory_p.h
index 1da0d53..35fa279 100644
--- a/src/bookmarkfactory_p.h
+++ b/src/bookmarkfactory_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef BOOKMARKFACTORY_H
-#define BOOKMARKFACTORY_H
+#ifndef JREEN_BOOKMARKFACTORY_P_H
+#define JREEN_BOOKMARKFACTORY_P_H
#include "bookmark.h"
namespace Jreen {
@@ -51,4 +51,4 @@ private:
} // namespace Jreen
-#endif // BOOKMARKFACTORY_H
+#endif // JREEN_BOOKMARKFACTORY_P_H
diff --git a/src/bookmarkstorage.cpp b/src/bookmarkstorage.cpp
index a3bdeab..a563cf9 100644
--- a/src/bookmarkstorage.cpp
+++ b/src/bookmarkstorage.cpp
@@ -81,10 +81,10 @@ void BookmarkStorage::onResultReady(const Payload::Ptr &node,
PrivateXml::Result result, const Error::Ptr &error)
{
Q_UNUSED(error);
- Logger::debug() << "onResultReady";
+ jreenDebug() << "onResultReady";
if(result == PrivateXml::RequestOk) {
Bookmark *bookmark = se_cast<Bookmark*>(node.data());
- Logger::debug() << "received bookmarks" << bookmark << node.data();
+ jreenDebug() << "received bookmarks" << bookmark << node.data();
if (bookmark)
emit bookmarksReceived(node.staticCast<Bookmark>());
else
diff --git a/src/bookmarkstorage.h b/src/bookmarkstorage.h
index c0a2654..ad545da 100644
--- a/src/bookmarkstorage.h
+++ b/src/bookmarkstorage.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef BOOKMARKSTORAGE_H
-#define BOOKMARKSTORAGE_H
+#ifndef JREEN_BOOKMARKSTORAGE_H
+#define JREEN_BOOKMARKSTORAGE_H
#include "bookmark.h"
#include "privatexml.h"
@@ -58,4 +58,4 @@ private:
};
}
-#endif // BOOKMARKSTORAGE_H
+#endif // JREEN_BOOKMARKSTORAGE_H
diff --git a/src/buffereddatastream.cpp b/src/buffereddatastream.cpp
index 717ab77..2cf465d 100644
--- a/src/buffereddatastream.cpp
+++ b/src/buffereddatastream.cpp
@@ -93,7 +93,7 @@ void BufferedDataStream::incomingDataReady()
int bytes = device()->bytesAvailable();
d->ensureSize(bytes);
device()->read(d->buffer.data() + d->offset + d->len, bytes);
-// Logger::debug("< \"%s\"", QByteArray(d->buffer.constData() + d->offset + d->len, bytes).constData());
+// jreenDebug("< \"%s\"", QByteArray(d->buffer.constData() + d->offset + d->len, bytes).constData());
d->len += bytes;
emit readyRead();
}
@@ -115,7 +115,7 @@ void BufferedDataStream::flush()
foreach (XmlStreamHandler *handler, *d->handlers)
handler->handleOutgoingData(d->outBuffer.constData(), d->outBuffer.size());
device()->write(d->outBuffer.constData(), d->outBuffer.size());
-// Logger::debug("> \"%s\"", d->outBuffer.constData());
+// jreenDebug("> \"%s\"", d->outBuffer.constData());
d->outBuffer.clear();
}
@@ -123,7 +123,7 @@ qint64 BufferedDataStream::readData(char *data, qint64 maxlen)
{
Q_D(BufferedDataStream);
int len = qMin<int>(maxlen, d->len);
- qMemCopy(data, d->buffer.data() + d->offset, len);
+ memcpy(data, d->buffer.data() + d->offset, len);
// foreach (XmlStreamHandler *handler, *d->handlers)
// handler->handleIncomingData(d->buffer.data() + d->offset, len);
if (maxlen < d->len) {
diff --git a/src/buffereddatastream.h b/src/buffereddatastream.h
index ee20550..11a4c4f 100644
--- a/src/buffereddatastream.h
+++ b/src/buffereddatastream.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef BUFFEREDDATASTREAM_H
-#define BUFFEREDDATASTREAM_H
+#ifndef JREEN_BUFFEREDDATASTREAM_H
+#define JREEN_BUFFEREDDATASTREAM_H
#include "datastream.h"
@@ -54,4 +54,4 @@ namespace Jreen
};
}
-#endif // BUFFEREDDATASTREAM_H
+#endif // JREEN_BUFFEREDDATASTREAM_H
diff --git a/src/capabilities.h b/src/capabilities.h
index 05b5214..68125f7 100644
--- a/src/capabilities.h
+++ b/src/capabilities.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef CAPABILITIES_H
-#define CAPABILITIES_H
+#ifndef JREEN_CAPABILITIES_H
+#define JREEN_CAPABILITIES_H
#include "stanzaextension.h"
@@ -50,4 +50,4 @@ private:
}
-#endif // CAPABILITIES_H
+#endif // JREEN_CAPABILITIES_H
diff --git a/src/capabilitiesfactory_p.h b/src/capabilitiesfactory_p.h
index b529fe2..e877e88 100644
--- a/src/capabilitiesfactory_p.h
+++ b/src/capabilitiesfactory_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef CAPABILITIESFACTORY_P_H
-#define CAPABILITIESFACTORY_P_H
+#ifndef JREEN_CAPABILITIESFACTORY_P_H
+#define JREEN_CAPABILITIESFACTORY_P_H
#include "stanzaextension.h"
#include "capabilities.h"
@@ -54,4 +54,4 @@ private:
} // namespace Jreen
-#endif // CAPABILITIESFACTORY_P_H
+#endif // JREEN_CAPABILITIESFACTORY_P_H
diff --git a/src/chatstate.h b/src/chatstate.h
index 06df883..3f62ea5 100644
--- a/src/chatstate.h
+++ b/src/chatstate.h
@@ -22,8 +22,8 @@
** $JREEN_END_LICENSE$
**
****************************************************************************/
-#ifndef CHATSTATE_H
-#define CHATSTATE_H
+#ifndef JREEN_CHATSTATE_H
+#define JREEN_CHATSTATE_H
#include "stanzaextension.h"
namespace Jreen {
@@ -55,4 +55,4 @@ private:
} // namespace Jreen
Q_ENUMS(Jreen::ChatState::State)
-#endif // CHATSTATE_H
+#endif // JREEN_CHATSTATE_H
diff --git a/src/chatstatefactory_p.h b/src/chatstatefactory_p.h
index ad6558e..e21d0a4 100644
--- a/src/chatstatefactory_p.h
+++ b/src/chatstatefactory_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef CHATSTATEFACTORY_P_H
-#define CHATSTATEFACTORY_P_H
+#ifndef JREEN_CHATSTATEFACTORY_P_H
+#define JREEN_CHATSTATEFACTORY_P_H
#include "stanzaextension.h"
#include "chatstate.h"
@@ -48,4 +48,4 @@ private:
} // namespace Jreen
-#endif // CHATSTATEFACTORY_P_H
+#endif // JREEN_CHATSTATEFACTORY_P_H
diff --git a/src/client.cpp b/src/client.cpp
index 96630db..87af92b 100644
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -362,8 +362,8 @@ void Client::send(const Stanza &stanza)
void Client::send(const Presence &pres)
{
Q_D(Client);
- Logger::debug() << Q_FUNC_INFO << d->jid << d->conn << pres.priority();
- Logger::debug() << d->conn->isOpen();
+ jreenDebug() << Q_FUNC_INFO << d->jid << d->conn << pres.priority();
+ jreenDebug() << d->conn->isOpen();
if(!d->conn || !d->conn->isOpen() || !d->isConnected)
return;
if (StanzaPrivate::get(pres) == StanzaPrivate::get(d->presence)) {
@@ -388,7 +388,7 @@ IQReply *Client::send(const IQ &iq)
const_cast<StanzaPrivate*>(p)->id = getID();
}
- Logger::debug() << "send iq to" << iq.to() << "from" << iq.from();
+ jreenDebug() << "send iq to" << iq.to() << "from" << iq.from();
d->send(iq);
if (iq.subtype() == IQ::Set || iq.subtype() == IQ::Get) {
IQReply *reply = d->createIQReply();
@@ -410,7 +410,7 @@ void Client::send(const IQ &iq, QObject *handler, const char *member, int contex
const_cast<StanzaPrivate*>(p)->id = getID();
}
- Logger::debug() << "send iq to" << iq.to() << "from" << iq.from();
+ jreenDebug() << "send iq to" << iq.to() << "from" << iq.from();
d->send(iq);
if (iq.subtype() == IQ::Set || iq.subtype() == IQ::Get) {
IQReply *reply = new IQTrack(handler, member, context, this);
@@ -487,8 +487,10 @@ void Client::setPresence()
void Client::setPresence(Presence::Type type, const QString &text, int priority)
{
Q_D(Client);
- if(d->presence.subtype() == type || type == Presence::Error || type == Presence::Invalid || type == Presence::Probe)
+ if((d->presence.subtype() == type && d->presence.status() == text && d->presence.priority() == priority)
+ || type == Presence::Error || type == Presence::Invalid || type == Presence::Probe) {
return;
+ }
d->presence.setSubtype(type);
d->presence.addStatus(text);
d->presence.setPriority(priority);
@@ -498,6 +500,7 @@ void Client::setPresence(Presence::Type type, const QString &text, int priority)
void Client::connectToServer()
{
Q_D(Client);
+
if(!d->conn)
setConnection(new TcpConnection(d->server, d->server_port));
@@ -549,7 +552,7 @@ void ClientPrivate::_q_iq_received(const IQ &iq, int context)
serverIdentities = info->identities();
emit q_ptr->serverFeaturesReceived(serverFeatures);
emit q_ptr->serverIdentitiesReceived(serverIdentities);
- Logger::debug() << serverFeatures;
+ jreenDebug() << serverFeatures;
}
}
@@ -616,7 +619,7 @@ void Client::handleIQ(const IQ &iq)
void Client::handleMessage(const Message &message)
{
- Logger::debug() << "Handle message" << message.from();
+ jreenDebug() << "Handle message" << message.from();
emit messageReceived(message);
}
diff --git a/src/client.h b/src/client.h
index a8ee8ee..2c567fb 100644
--- a/src/client.h
+++ b/src/client.h
@@ -24,8 +24,8 @@
**
****************************************************************************/
-#ifndef CLIENT_H
-#define CLIENT_H
+#ifndef JREEN_CLIENT_H
+#define JREEN_CLIENT_H
#include <QObject>
#include <QSet>
@@ -176,4 +176,4 @@ private:
}
-#endif // CLIENT_H
+#endif // JREEN_CLIENT_H
diff --git a/src/client_p.h b/src/client_p.h
index 5d632a5..2e252e2 100644
--- a/src/client_p.h
+++ b/src/client_p.h
@@ -24,8 +24,8 @@
**
****************************************************************************/
-#ifndef CLIENT_P_H
-#define CLIENT_P_H
+#ifndef JREEN_CLIENT_P_H
+#define JREEN_CLIENT_P_H
#include "logger.h"
#include <QXmlStreamWriter>
@@ -216,7 +216,7 @@ public:
void _q_new_data()
{
QByteArray data = bufferedDevice->read(qMax(Q_INT64_C(0xffff), bufferedDevice->bytesAvailable())); // device->readAll();
- // Logger::debug() << "-" << data.size() << data;
+ // jreenDebug() << "-" << data.size() << data;
parser->appendData(data);
// parser->appendData(data);
_q_read_more();
@@ -385,4 +385,4 @@ private:
}
-#endif // CLIENT_P_H
+#endif // JREEN_CLIENT_P_H
diff --git a/src/connection.cpp b/src/connection.cpp
new file mode 100644
index 0000000..49620d3
--- /dev/null
+++ b/src/connection.cpp
@@ -0,0 +1,29 @@
+/****************************************************************************
+**
+** Jreen
+**
+** Copyright © 2013 Ruslan Nigmatullin <euroelessar@yandex.ru>
+**
+*****************************************************************************
+**
+** $JREEN_BEGIN_LICENSE$
+** This program is free software: you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation, either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+** See the GNU General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program. If not, see http://www.gnu.org/licenses/.
+** $JREEN_END_LICENSE$
+**
+****************************************************************************/
+
+// Force exporting of Jreen::Connection
+
+#include "connection.h"
+
diff --git a/src/connection.h b/src/connection.h
index 84648ce..9001eb1 100644
--- a/src/connection.h
+++ b/src/connection.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef CONNECTION_H
-#define CONNECTION_H
+#ifndef JREEN_CONNECTION_H
+#define JREEN_CONNECTION_H
#include <QIODevice>
#include "jreen.h"
@@ -106,4 +106,4 @@ signals:
}
-#endif // CONNECTION_H
+#endif // JREEN_CONNECTION_H
diff --git a/src/connectionbosh.cpp b/src/connectionbosh.cpp
index 9a78b4b..c1044df 100644
--- a/src/connectionbosh.cpp
+++ b/src/connectionbosh.cpp
@@ -64,7 +64,7 @@ public:
{
QByteArray seed = Util::randomHash();
keys.clear();
- Logger::debug() << Q_FUNC_INFO << keyNum;
+ jreenDebug() << Q_FUNC_INFO << keyNum;
for (int i = 0; i < keyNum; i++) {
seed = QCryptographicHash::hash(seed, QCryptographicHash::Sha1).toHex();
keys.append(seed);
@@ -84,7 +84,7 @@ void ConnectionBOSHPrivate::send(bool empty, bool header)
QByteArray data = resultXml;
resultBuffer.seek(0);
resultXml.clear();
- Logger::debug() << Q_FUNC_INFO << data;
+ jreenDebug() << Q_FUNC_INFO << data;
QNetworkRequest request(host);
request.setAttribute(QNetworkRequest::HttpPipeliningAllowedAttribute, true);
request.setHeader(QNetworkRequest::ContentTypeHeader, QByteArray("text/xml; charset=utf-8"));
@@ -222,9 +222,9 @@ qint64 ConnectionBOSH::readData(char *data, qint64 maxlen)
qint64 ConnectionBOSH::writeData(const char *payloaddata, qint64 payloadlen)
{
- Logger::debug() << Q_FUNC_INFO;
+ jreenDebug() << Q_FUNC_INFO;
Q_D(ConnectionBOSH);
- Logger::debug() << d->dataRequest << d->emptyRequest;
+ jreenDebug() << d->dataRequest << d->emptyRequest;
if (d->dataRequest && payloadlen > 0) {
d->payloads.append(payloaddata, payloadlen);
return payloadlen;
@@ -252,14 +252,14 @@ void ConnectionBOSH::onRequestFinished(QNetworkReply *reply)
{
Q_D(ConnectionBOSH);
reply->deleteLater();
- Logger::debug() << Q_FUNC_INFO << reply->error() << reply->errorString();
+ jreenDebug() << Q_FUNC_INFO << reply->error() << reply->errorString();
if (reply->error() != QNetworkReply::NoError) {
// TODO: Implement
return;
}
bool header = reply->property("header").toBool();
QByteArray data = reply->readAll();
- Logger::debug() << Q_FUNC_INFO << header << data;
+ jreenDebug() << Q_FUNC_INFO << header << data;
d->reader.addData(data);
// Hook for parsers invoked in eventloops, which are run inside parser
if (d->depth != 0)
diff --git a/src/connectionbosh.h b/src/connectionbosh.h
index dd1fe9e..d78f41f 100644
--- a/src/connectionbosh.h
+++ b/src/connectionbosh.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef CONNECTIONBOSH_H
-#define CONNECTIONBOSH_H
+#ifndef JREEN_CONNECTIONBOSH_H
+#define JREEN_CONNECTIONBOSH_H
#include "connection.h"
#include "streamprocessor.h"
@@ -63,4 +63,4 @@ private:
};
}
-#endif // CONNECTIONBOSH_H
+#endif // JREEN_CONNECTIONBOSH_H
diff --git a/src/dataform.h b/src/dataform.h
index 6595c43..2bdc924 100644
--- a/src/dataform.h
+++ b/src/dataform.h
@@ -24,8 +24,8 @@
**
****************************************************************************/
-#ifndef DATAFORM_H
-#define DATAFORM_H
+#ifndef JREEN_DATAFORM_H
+#define JREEN_DATAFORM_H
#include "jid.h"
#include "stanzaextension.h"
@@ -403,4 +403,4 @@ Q_INLINE_TEMPLATE DataFormOptionContainer DataFormField::cast() const
}
-#endif // DATAFORM_H
+#endif // JREEN_DATAFORM_H
diff --git a/src/dataform_p.h b/src/dataform_p.h
index 60531f4..9b2536e 100644
--- a/src/dataform_p.h
+++ b/src/dataform_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef DATAFORM_P_H
-#define DATAFORM_P_H
+#ifndef JREEN_DATAFORM_P_H
+#define JREEN_DATAFORM_P_H
#include "dataform.h"
#include <QVariant>
@@ -79,4 +79,4 @@ namespace Jreen
};
}
-#endif // DATAFORM_P_H
+#endif // JREEN_DATAFORM_P_H
diff --git a/src/dataformfactory.cpp b/src/dataformfactory.cpp
index 460a7e4..95a369c 100644
--- a/src/dataformfactory.cpp
+++ b/src/dataformfactory.cpp
@@ -257,7 +257,7 @@ public:
if(m_state == AtOption) {
m_optionParser.handleEndElement(name,uri);
if(m_depth == 2) {
- Logger::debug() << m_optionParser.create();
+ jreenDebug() << m_optionParser.create();
m_options.append(m_optionParser.create());
}
} else if(m_state == AtMedia) {
diff --git a/src/dataformfactory_p.h b/src/dataformfactory_p.h
index bf1a493..72dfc2f 100644
--- a/src/dataformfactory_p.h
+++ b/src/dataformfactory_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef DATAFORMFACTORY_P_H
-#define DATAFORMFACTORY_P_H
+#ifndef JREEN_DATAFORMFACTORY_P_H
+#define JREEN_DATAFORMFACTORY_P_H
#include "dataform_p.h"
namespace Jreen {
@@ -49,4 +49,4 @@ private:
} // namespace Jreen
-#endif // DATAFORMFACTORY_P_H
+#endif // JREEN_DATAFORMFACTORY_P_H
diff --git a/src/datastream.h b/src/datastream.h
index 7bcff8b..97f1175 100644
--- a/src/datastream.h
+++ b/src/datastream.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef DATASTREAM_H
-#define DATASTREAM_H
+#ifndef JREEN_DATASTREAM_H
+#define JREEN_DATASTREAM_H
#include <QIODevice>
#include "jreen.h"
@@ -49,4 +49,4 @@ private:
}
-#endif // DATASTREAM_H
+#endif // JREEN_DATASTREAM_H
diff --git a/src/delayeddelivery.h b/src/delayeddelivery.h
index 4d2937a..7f7688a 100644
--- a/src/delayeddelivery.h
+++ b/src/delayeddelivery.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef DELAYEDDELIVERY_H
-#define DELAYEDDELIVERY_H
+#ifndef JREEN_DELAYEDDELIVERY_H
+#define JREEN_DELAYEDDELIVERY_H
#include "stanzaextension.h"
#include "jid.h"
@@ -55,4 +55,4 @@ private:
}
-#endif // DELAYEDDELIVERY_H
+#endif // JREEN_DELAYEDDELIVERY_H
diff --git a/src/delayeddeliveryfactory_p.h b/src/delayeddeliveryfactory_p.h
index ecf223b..383e37b 100644
--- a/src/delayeddeliveryfactory_p.h
+++ b/src/delayeddeliveryfactory_p.h
@@ -22,8 +22,8 @@
** $JREEN_END_LICENSE$
**
****************************************************************************/
-#ifndef DELAYEDDELIVERYFACTORY_H
-#define DELAYEDDELIVERYFACTORY_H
+#ifndef JREEN_DELAYEDDELIVERYFACTORY_P_H
+#define JREEN_DELAYEDDELIVERYFACTORY_P_H
#include "delayeddelivery.h"
namespace Jreen
@@ -48,4 +48,4 @@ private:
};
}
-#endif // DELAYEDDELIVERYFACTORY_H
+#endif // JREEN_DELAYEDDELIVERYFACTORY_P_H
diff --git a/src/directconnection.cpp b/src/directconnection.cpp
index d09b5b2..77e6451 100644
--- a/src/directconnection.cpp
+++ b/src/directconnection.cpp
@@ -25,9 +25,12 @@
****************************************************************************/
#include "directconnection_p.h"
-#include <QSslSocket>
-#include <QSslConfiguration>
-#include <QSsl>
+
+#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
+# include "sjdns_p.h"
+#else
+# include <QDnsLookup>
+#endif
#ifdef Q_OS_LINUX
# include <sys/types.h>
@@ -49,11 +52,7 @@ DirectConnectionPrivate::DirectConnectionPrivate(const QString &hn, int p, Direc
void DirectConnectionPrivate::connectSocket()
{
- if (qobject_cast<QSslSocket*>(socket)) {
- connect(socket, SIGNAL(encrypted()), parent, SIGNAL(connected()));
- } else {
- connect(socket, SIGNAL(connected()), parent, SIGNAL(connected()));
- }
+ connect(socket, SIGNAL(connected()), parent, SIGNAL(connected()));
connect(socket, SIGNAL(disconnected()), parent, SIGNAL(disconnected()));
connect(socket, SIGNAL(readyRead()), parent, SIGNAL(readyRead()));
connect(socket, SIGNAL(stateChanged(QAbstractSocket::SocketState)),
@@ -66,44 +65,52 @@ void DirectConnectionPrivate::connectSocket()
void DirectConnectionPrivate::doLookup()
{
- Logger::debug() << "doLookup";
+ jreenDebug() << "doLookup";
emit stateChanged(QAbstractSocket::HostLookupState);
- if (SJDns::instance().isValid())
- SJDns::instance().doLookup(host_name, this, SLOT(lookupResultsReady()));
- else
- emit stateChanged(QAbstractSocket::UnconnectedState);
+ QDnsLookup *dns = new QDnsLookup(this);
+ connect(dns, SIGNAL(finished()), this, SLOT(lookupResultsReady()));
+
+ dns->setType(QDnsLookup::SRV);
+ dns->setName(QString::fromLatin1("_xmpp-client._tcp." + QUrl::toAce(host_name)));
+ dns->lookup();
}
void DirectConnectionPrivate::lookupResultsReady()
{
- const QJDns::Response *response = SJDns::instance().servers(host_name);
+ QDnsLookup *dns = qobject_cast<QDnsLookup*>(sender());
+ dns->deleteLater();
+ Q_ASSERT(dns);
+
+ QList<QDnsServiceRecord> results = dns->serviceRecords();
dns_records.clear();
- if (!response || !response->answerRecords.size()) {
+
+ if (results.isEmpty()) {
Record record;
record.host = host_name;
dns_records << record;
} else {
- foreach(const QJDns::Record &qrecord, response->answerRecords) {
+ foreach (const QDnsServiceRecord &result, results) {
Record record;
- record.host = QUrl::fromAce(qrecord.name);
+ record.host = result.target();
// may be it's a reason of connection problems of some users
if (record.host.endsWith(QLatin1Char('.')))
record.host.chop(1);
- record.port = qrecord.port;
- record.weight = qrecord.weight;
- record.priority = qrecord.priority;
+ record.port = result.port();
+ record.weight = result.weight();
+ record.priority = result.priority();
dns_records << record;
}
}
+
Record &record = dns_records[0];
- Logger::debug() << "use:" << record.host << record.port;
+ jreenDebug() << "use:" << record.host << record.port;
socket->connectToHost(record.host, record.port);
}
void DirectConnectionPrivate::stateChanged(QAbstractSocket::SocketState ss)
{
- Logger::debug() << ss;
+ jreenDebug() << Q_FUNC_INFO << socket_state << ss;
if(socket_state == ss)
return;
@@ -113,21 +120,22 @@ void DirectConnectionPrivate::stateChanged(QAbstractSocket::SocketState ss)
#if defined(Q_OS_LINUX) && !defined(Q_WS_MAEMO_5) && !defined(MEEGO_EDITION_HARMATTAN)
if (qobject_cast<QTcpSocket*>(socket)) {
int fd = socket->socketDescriptor();
- Q_ASSERT(fd != -1);
- Logger::debug() << "Trying to set KeepAlive attributes to socket descriptor" << fd;
if (fd != -1) {
- socket->setSocketOption(QAbstractSocket::KeepAliveOption, 1);
- int enableKeepAlive = 1;
- Logger::debug() << setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &enableKeepAlive, sizeof(enableKeepAlive));
-
- int maxIdle = 15; // seconds
- Logger::debug() << setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, &maxIdle, sizeof(maxIdle));
-
- int count = 3; // send up to 3 keepalive packets out, then disconnect if no response
- Logger::debug() << setsockopt(fd, SOL_TCP, TCP_KEEPCNT, &count, sizeof(count));
-
- int interval = 2; // send a keepalive packet out every 2 seconds (after the idle period)
- Logger::debug() << setsockopt(fd, SOL_TCP, TCP_KEEPINTVL, &interval, sizeof(interval));
+ jreenDebug() << "Trying to set KeepAlive attributes to socket descriptor" << fd;
+ if (fd != -1) {
+ socket->setSocketOption(QAbstractSocket::KeepAliveOption, 1);
+ int enableKeepAlive = 1;
+ jreenDebug() << setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &enableKeepAlive, sizeof(enableKeepAlive));
+
+ int maxIdle = 15; // seconds
+ jreenDebug() << setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, &maxIdle, sizeof(maxIdle));
+
+ int count = 3; // send up to 3 keepalive packets out, then disconnect if no response
+ jreenDebug() << setsockopt(fd, SOL_TCP, TCP_KEEPCNT, &count, sizeof(count));
+
+ int interval = 2; // send a keepalive packet out every 2 seconds (after the idle period)
+ jreenDebug() << setsockopt(fd, SOL_TCP, TCP_KEEPINTVL, &interval, sizeof(interval));
+ }
}
}
#endif
@@ -142,8 +150,10 @@ void DirectConnectionPrivate::stateChanged(QAbstractSocket::SocketState ss)
break;
}
- socket_state = ss;
- emit parent->stateChanged(static_cast<Connection::SocketState>(ss));
+ if (socket_state != socket->state()) {
+ socket_state = socket->state();
+ emit parent->stateChanged(static_cast<Connection::SocketState>(socket_state));
+ }
}
void DirectConnectionPrivate::error(QAbstractSocket::SocketError se)
@@ -176,6 +186,7 @@ DirectConnection::~DirectConnection()
bool DirectConnection::open()
{
Q_D(DirectConnection);
+ jreenDebug() << Q_FUNC_INFO << d->socket_state << d->socket->state();
if(d->socket_state != QAbstractSocket::UnconnectedState) {
if(d->socket_state == QAbstractSocket::ListeningState) {
d->socket_state = QAbstractSocket::ConnectedState;
@@ -187,17 +198,9 @@ bool DirectConnection::open()
if(d->do_lookup) {
d->doLookup();
} else {
- Logger::debug() << "connectToHost" << d->host_name << d->port;
- Logger::debug() << "proxy" << d->socket->proxy().type() << d->socket->proxy().hostName() << d->socket->proxy().port();
- if (QSslSocket *socket = qobject_cast<QSslSocket*>(d->socket)) {
- socket->setPeerVerifyMode(QSslSocket::VerifyNone);
- QSslConfiguration conf = socket->sslConfiguration();
- conf.setProtocol(QSsl::TlsV1);
- socket->setSslConfiguration(conf);
- socket->connectToHostEncrypted(d->host_name, d->port);
- } else {
- d->socket->connectToHost(d->host_name, d->port);
- }
+ jreenDebug() << "connectToHost" << d->host_name << d->port;
+ jreenDebug() << "proxy" << d->socket->proxy().type() << d->socket->proxy().hostName() << d->socket->proxy().port();
+ d->socket->connectToHost(d->host_name, d->port);
}
return true;
}
@@ -247,6 +250,11 @@ Connection::SocketError DirectConnection::socketError() const
return static_cast<SocketError>(d->socket_error);
}
+QAbstractSocket *DirectConnection::socket() const
+{
+ return d_func()->socket;
+}
+
qint64 DirectConnection::readData(char *data, qint64 maxlen)
{
Q_D(DirectConnection);
diff --git a/src/directconnection.h b/src/directconnection.h
index 0c5ccf0..c3c0b0a 100644
--- a/src/directconnection.h
+++ b/src/directconnection.h
@@ -24,8 +24,8 @@
**
****************************************************************************/
-#ifndef DIRECTCONNECTION_H
-#define DIRECTCONNECTION_H
+#ifndef JREEN_DIRECTCONNECTION_H
+#define JREEN_DIRECTCONNECTION_H
#include "connection.h"
@@ -55,6 +55,8 @@ public:
SocketState socketState() const;
SocketError socketError() const;
+ QAbstractSocket *socket() const;
+
signals:
void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator);
@@ -71,4 +73,4 @@ protected:
}
-#endif // DIRECTCONNECTION_H
+#endif // JREEN_DIRECTCONNECTION_H
diff --git a/src/directconnection_p.h b/src/directconnection_p.h
index 33c1e48..a82b6a7 100644
--- a/src/directconnection_p.h
+++ b/src/directconnection_p.h
@@ -23,15 +23,14 @@
**
****************************************************************************/
-#ifndef DIRECTCONNECTION_P_H
-#define DIRECTCONNECTION_P_H
+#ifndef JREEN_DIRECTCONNECTION_P_H
+#define JREEN_DIRECTCONNECTION_P_H
#include <QSslSocket>
#include <QHostAddress>
#include <QNetworkProxy>
#include "jreen.h"
#include "directconnection.h"
-#include "sjdns_p.h"
#include "logger.h"
#include <QUrl>
@@ -73,4 +72,4 @@ public slots:
}
-#endif // DIRECTCONNECTION_P_H
+#endif // JREEN_DIRECTCONNECTION_P_H
diff --git a/src/disco.h b/src/disco.h
index 382c380..02412ff 100644
--- a/src/disco.h
+++ b/src/disco.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef DISCO_H
-#define DISCO_H
+#ifndef JREEN_DISCO_H
+#define JREEN_DISCO_H
#include <QObject>
#include <QString>
@@ -206,4 +206,4 @@ Q_DECLARE_METATYPE(Jreen::Disco::Item)
Q_DECLARE_METATYPE(Jreen::Disco::ItemList)
Q_DECLARE_OPERATORS_FOR_FLAGS(Jreen::Disco::Item::Actions)
-#endif // DISCO_H
+#endif // JREEN_DISCO_H
diff --git a/src/disco_p.h b/src/disco_p.h
index 52692e5..ff10b01 100644
--- a/src/disco_p.h
+++ b/src/disco_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef DISCO_P_H
-#define DISCO_P_H
+#ifndef JREEN_DISCO_P_H
+#define JREEN_DISCO_P_H
#include "disco.h"
#include "dataformfactory_p.h"
@@ -88,4 +88,4 @@ private:
}
-#endif // DISCO_P_H
+#endif // JREEN_DISCO_P_H
diff --git a/src/entitytime.h b/src/entitytime.h
index 7851e44..b1bd46f 100644
--- a/src/entitytime.h
+++ b/src/entitytime.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef ENTITYTIME_H
-#define ENTITYTIME_H
+#ifndef JREEN_ENTITYTIME_H
+#define JREEN_ENTITYTIME_H
#include "stanzaextension.h"
#include <QDateTime>
@@ -50,4 +50,4 @@ namespace Jreen
};
}
-#endif // ENTITYTIME_H
+#endif // JREEN_ENTITYTIME_H
diff --git a/src/entitytimefactory_p.h b/src/entitytimefactory_p.h
index f57bbd9..f459962 100644
--- a/src/entitytimefactory_p.h
+++ b/src/entitytimefactory_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef ENTITYTIMEFACTORY_P_H
-#define ENTITYTIMEFACTORY_P_H
+#ifndef JREEN_ENTITYTIMEFACTORY_P_H
+#define JREEN_ENTITYTIMEFACTORY_P_H
#include "entitytime.h"
@@ -50,4 +50,4 @@ namespace Jreen
};
}
-#endif // ENTITYTIMEFACTORY_P_H
+#endif // JREEN_ENTITYTIMEFACTORY_P_H
diff --git a/src/error.h b/src/error.h
index 8f8c766..7491740 100644
--- a/src/error.h
+++ b/src/error.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef ERROR_H
-#define ERROR_H
+#ifndef JREEN_ERROR_H
+#define JREEN_ERROR_H
#include "stanzaextension.h"
#include "langmap.h"
@@ -170,4 +170,4 @@ private:
}
-#endif // ERROR_H
+#endif // JREEN_ERROR_H
diff --git a/src/errorfactory_p.h b/src/errorfactory_p.h
index 8a03a82..119dee2 100644
--- a/src/errorfactory_p.h
+++ b/src/errorfactory_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef ERRORFACTORY_P_H
-#define ERRORFACTORY_P_H
+#ifndef JREEN_ERRORFACTORY_P_H
+#define JREEN_ERRORFACTORY_P_H
#include "error.h"
#include "stanzaextension.h"
@@ -53,4 +53,4 @@ private:
} // namespace Jreen
-#endif // ERRORFACTORY_P_H
+#endif // JREEN_ERRORFACTORY_P_H
diff --git a/src/experimental/iristransport.h b/src/experimental/iristransport.h
index 61fc0f8..a9fd018 100644
--- a/src/experimental/iristransport.h
+++ b/src/experimental/iristransport.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef JREEN_JINGLEICE_IRISTRANSPORT_H
-#define JREEN_JINGLEICE_IRISTRANSPORT_H
+#ifndef JREEN_IRISTRANSPORT_H
+#define JREEN_IRISTRANSPORT_H
#include "jingletransport.h"
#include "3rdparty/icesupport/ice176.h"
@@ -38,4 +38,4 @@ namespace JingleIce
} // namespace JingleIce
} // namespace Jreen
-#endif // JREEN_JINGLEICE_IRISTRANSPORT_H
+#endif // JREEN_IRISTRANSPORT_H
diff --git a/src/experimental/jingle_p.h b/src/experimental/jingle_p.h
index 9a4897a..cab4d1e 100644
--- a/src/experimental/jingle_p.h
+++ b/src/experimental/jingle_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef JINGLE_H
-#define JINGLE_H
+#ifndef JREEN_JINGLE_P_H
+#define JREEN_JINGLE_P_H
#include "../stanzaextension.h"
#include "../jid.h"
@@ -105,4 +105,4 @@ public:
Q_DECLARE_OPERATORS_FOR_FLAGS(Jreen::Jingle::SendersType)
-#endif // JINGLE_H
+#endif // JREEN_JINGLE_P_H
diff --git a/src/experimental/jingleaudiocontent.cpp b/src/experimental/jingleaudiocontent.cpp
index 2555cfe..b5a4c75 100644
--- a/src/experimental/jingleaudiocontent.cpp
+++ b/src/experimental/jingleaudiocontent.cpp
@@ -135,9 +135,9 @@ void JingleAudioDevice::appendData(const QByteArray &data)
qint64 JingleAudioDevice::readData(char *data, qint64 maxSize)
{
- qMemSet(data, 0, maxSize);
+ memset(data, 0, maxSize);
qint64 size = qMin<qint64>(m_outputBuffer.size(), maxSize);
- qMemCopy(data, m_outputBuffer.data(), size);
+ memcpy(data, m_outputBuffer.data(), size);
m_outputBuffer.remove(0, size);
return size;
}
@@ -158,15 +158,16 @@ qint64 JingleAudioDevice::writeData(const char *data, qint64 len)
return len;
}
-static inline void init_factories(QList<JingleAudioCodecFactory*> &factories)
+static QList<JingleAudioCodecFactory*> init_factories()
{
- Q_UNUSED(factories);
+ QList<JingleAudioCodecFactory*> factories;
#ifdef JREEN_HAVE_SPEEX
factories << new JingleSpeexCodecFactory;
#endif
+ return factories;
}
-Q_GLOBAL_STATIC_WITH_INITIALIZER(QList<JingleAudioCodecFactory*>, factories, init_factories(*x))
+Q_GLOBAL_STATIC_WITH_ARGS(QList<JingleAudioCodecFactory*>, factories, (init_factories()))
JingleAudioContent::JingleAudioContent(JingleSession *session)
: JingleContent(session, *new JingleAudioContentPrivate(this))
@@ -260,7 +261,7 @@ void JingleAudioContentPrivate::send(int payload, const QByteArray &data)
void JingleAudioContent::receive(int component, const QByteArray &receivedData)
{
if (component == JingleRTCP) {
- Logger::debug() << Q_FUNC_INFO << receivedData.toHex();
+ jreenDebug() << Q_FUNC_INFO << receivedData.toHex();
}
if (component != JingleRTP)
return;
diff --git a/src/experimental/jingleaudiocontent.h b/src/experimental/jingleaudiocontent.h
index 0ecdeec..cead45a 100644
--- a/src/experimental/jingleaudiocontent.h
+++ b/src/experimental/jingleaudiocontent.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef JINGLEAUDIOCONTENT_H
-#define JINGLEAUDIOCONTENT_H
+#ifndef JREEN_JINGLEAUDIOCONTENT_H
+#define JREEN_JINGLEAUDIOCONTENT_H
#include "jinglecontent.h"
#include "jingleaudiopayload.h"
@@ -82,4 +82,4 @@ public:
Q_DECLARE_INTERFACE(Jreen::JingleAudioCodecFactory, "org.qutim.Jreen.Jingle.AudioCodecFactory")
-#endif // JINGLEAUDIOCONTENT_H
+#endif // JREEN_JINGLEAUDIOCONTENT_H
diff --git a/src/experimental/jingleaudiocontent_p.h b/src/experimental/jingleaudiocontent_p.h
index 65a3e05..d85a6cc 100644
--- a/src/experimental/jingleaudiocontent_p.h
+++ b/src/experimental/jingleaudiocontent_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef JINGLEAUDIOCONTENT_P_H
-#define JINGLEAUDIOCONTENT_P_H
+#ifndef JREEN_JINGLEAUDIOCONTENT_P_H
+#define JREEN_JINGLEAUDIOCONTENT_P_H
#include "jingleaudiocontent.h"
#include "jingleaudiopayload_p.h"
@@ -82,4 +82,4 @@ public:
}
-#endif // JINGLEAUDIOCONTENT_P_H
+#endif // JREEN_JINGLEAUDIOCONTENT_P_H
diff --git a/src/experimental/jingleaudiocontentfactory_p.h b/src/experimental/jingleaudiocontentfactory_p.h
index 2a6332c..42515c9 100644
--- a/src/experimental/jingleaudiocontentfactory_p.h
+++ b/src/experimental/jingleaudiocontentfactory_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef JINGLEAUDIOCONTENTFACTORY_P_H
-#define JINGLEAUDIOCONTENTFACTORY_P_H
+#ifndef JREEN_JINGLEAUDIOCONTENTFACTORY_P_H
+#define JREEN_JINGLEAUDIOCONTENTFACTORY_P_H
#include "jingleaudiocontent_p.h"
#include "jingleaudiopayload.h"
@@ -53,4 +53,4 @@ private:
}
-#endif // JINGLEAUDIOCONTENTFACTORY_P_H
+#endif // JREEN_JINGLEAUDIOCONTENTFACTORY_P_H
diff --git a/src/experimental/jingleaudiopayload.h b/src/experimental/jingleaudiopayload.h
index 2c63ad7..0b25b0e 100644
--- a/src/experimental/jingleaudiopayload.h
+++ b/src/experimental/jingleaudiopayload.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef JINGLEAUDIOPAYLOAD_H
-#define JINGLEAUDIOPAYLOAD_H
+#ifndef JREEN_JINGLEAUDIOPAYLOAD_H
+#define JREEN_JINGLEAUDIOPAYLOAD_H
#include "../jreen.h"
#include <QSharedDataPointer>
@@ -67,4 +67,4 @@ private:
}
-#endif // JINGLEAUDIOPAYLOAD_H
+#endif // JREEN_JINGLEAUDIOPAYLOAD_H
diff --git a/src/experimental/jingleaudiopayload_p.h b/src/experimental/jingleaudiopayload_p.h
index 9f44ef6..7d9b473 100644
--- a/src/experimental/jingleaudiopayload_p.h
+++ b/src/experimental/jingleaudiopayload_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef JINGLEAUDIOPAYLOAD_P_H
-#define JINGLEAUDIOPAYLOAD_P_H
+#ifndef JREEN_JINGLEAUDIOPAYLOAD_P_H
+#define JREEN_JINGLEAUDIOPAYLOAD_P_H
#include "jingleaudiopayload.h"
#include <QMap>
@@ -54,4 +54,4 @@ public:
}
-#endif // JINGLEAUDIOPAYLOAD_P_H
+#endif // JREEN_JINGLEAUDIOPAYLOAD_P_H
diff --git a/src/experimental/jinglecontent.cpp b/src/experimental/jinglecontent.cpp
index a170377..a9c7fec 100644
--- a/src/experimental/jinglecontent.cpp
+++ b/src/experimental/jinglecontent.cpp
@@ -73,7 +73,7 @@ void JingleContentPrivate::_q_tryStateChanged(Jreen::JingleTransport::State stat
void JingleContentPrivate::setTransport(JingleTransport *trueTransport)
{
transport = trueTransport;
- Logger::debug() << Q_FUNC_INFO << transport;
+ jreenDebug() << Q_FUNC_INFO << transport;
QObject::connect(transport, SIGNAL(received(int,QByteArray)),
q_func(), SLOT(_q_received(int,QByteArray)));
QObject::connect(transport, SIGNAL(stateChanged(Jreen::JingleTransport::State)),
diff --git a/src/experimental/jinglecontent.h b/src/experimental/jinglecontent.h
index 74fd70a..fd74312 100644
--- a/src/experimental/jinglecontent.h
+++ b/src/experimental/jinglecontent.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef JINGLECONTENT_H
-#define JINGLECONTENT_H
+#ifndef JREEN_JINGLECONTENT_H
+#define JREEN_JINGLECONTENT_H
#include "../stanzaextension.h"
#include "jingletransport.h"
@@ -144,4 +144,4 @@ Q_INLINE_TEMPLATE bool JingleContentFactory<Extension>::canParse(const QStringRe
}
-#endif // JINGLECONTENT_H
+#endif // JREEN_JINGLECONTENT_H
diff --git a/src/experimental/jinglecontent_p.h b/src/experimental/jinglecontent_p.h
index 78411af..d999d7e 100644
--- a/src/experimental/jinglecontent_p.h
+++ b/src/experimental/jinglecontent_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef JINGLECONTENT_P_H
-#define JINGLECONTENT_P_H
+#ifndef JREEN_JINGLECONTENT_P_H
+#define JREEN_JINGLECONTENT_P_H
#include "jinglecontent.h"
@@ -65,4 +65,4 @@ public:
}
-#endif // JINGLECONTENT_P_H
+#endif // JREEN_JINGLECONTENT_P_H
diff --git a/src/experimental/jinglefactory.cpp b/src/experimental/jinglefactory.cpp
index 7d2c69d..43b2dbd 100644
--- a/src/experimental/jinglefactory.cpp
+++ b/src/experimental/jinglefactory.cpp
@@ -102,7 +102,7 @@ void JingleFactory::handleStartElement(const QStringRef &name, const QStringRef
m_content->senders = Jingle::Both;
} else if (m_depth == 3 && m_state == AtContent) {
foreach (m_factory, m_client->factoriesByUri.values(uri.toString())) {
- Logger::debug() << uri << Payload::payloadName(m_factory->payloadType())
+ jreenDebug() << uri << Payload::payloadName(m_factory->payloadType())
<< m_factory->canParse(name, uri, attributes);
if (m_factory->canParse(name, uri, attributes))
break;
@@ -115,7 +115,7 @@ void JingleFactory::handleStartElement(const QStringRef &name, const QStringRef
m_state = AtDescription;
else
m_factory = 0;
- Logger::debug() << name << uri << m_factory;
+ jreenDebug() << name << uri << m_factory;
}
if (m_factory)
m_factory->handleStartElement(name, uri, attributes);
@@ -174,7 +174,7 @@ void JingleFactory::serialize(Payload *obj, QXmlStreamWriter *writer)
if (factory)
factory->serialize(content.description.data(), writer);
} else {
- Logger::debug() << "No description";
+ jreenDebug() << "No description";
}
for (int j = 0; j < content.transports.size(); ++j) {
Payload *payload = content.transports.at(j).data();
diff --git a/src/experimental/jinglefactory_p.h b/src/experimental/jinglefactory_p.h
index df18735..82c8561 100644
--- a/src/experimental/jinglefactory_p.h
+++ b/src/experimental/jinglefactory_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef JINGLEFACTORY_P_H
-#define JINGLEFACTORY_P_H
+#ifndef JREEN_JINGLEFACTORY_P_H
+#define JREEN_JINGLEFACTORY_P_H
#include "jingle_p.h"
#include "../client_p.h"
@@ -59,4 +59,4 @@ private:
}
-#endif // JINGLEFACTORY_P_H
+#endif // JREEN_JINGLEFACTORY_P_H
diff --git a/src/experimental/jinglemanager.cpp b/src/experimental/jinglemanager.cpp
index 7e9c915..d8d6ef7 100644
--- a/src/experimental/jinglemanager.cpp
+++ b/src/experimental/jinglemanager.cpp
@@ -65,7 +65,7 @@ void JingleManagerPrivate::_q_iqReceived(const Jreen::IQ &iq)
Jingle::Ptr jingle = iq.payload<Jingle>();
if (!jingle)
return;
- Logger::debug() << Q_FUNC_INFO;
+ jreenDebug() << Q_FUNC_INFO;
iq.accept();
JingleSession *session = sessions.value(jingle->sid);
if (session) {
diff --git a/src/experimental/jinglemanager.h b/src/experimental/jinglemanager.h
index 550ec06..fede95a 100644
--- a/src/experimental/jinglemanager.h
+++ b/src/experimental/jinglemanager.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef JINGLEMANAGER_H
-#define JINGLEMANAGER_H
+#ifndef JREEN_JINGLEMANAGER_H
+#define JREEN_JINGLEMANAGER_H
#include "../iq.h"
@@ -60,4 +60,4 @@ protected:
}
-#endif // JINGLEMANAGER_H
+#endif // JREEN_JINGLEMANAGER_H
diff --git a/src/experimental/jinglemanager_p.h b/src/experimental/jinglemanager_p.h
index 6206148..9f51f18 100644
--- a/src/experimental/jinglemanager_p.h
+++ b/src/experimental/jinglemanager_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef JINGLEMANAGER_P_H
-#define JINGLEMANAGER_P_H
+#ifndef JREEN_JINGLEMANAGER_P_H
+#define JREEN_JINGLEMANAGER_P_H
#include "jinglemanager.h"
#include "jinglefactory_p.h"
@@ -50,4 +50,4 @@ public:
}
-#endif // JINGLEMANAGER_P_H
+#endif // JREEN_JINGLEMANAGER_P_H
diff --git a/src/experimental/jinglesession.cpp b/src/experimental/jinglesession.cpp
index 85e2476..44802a7 100644
--- a/src/experimental/jinglesession.cpp
+++ b/src/experimental/jinglesession.cpp
@@ -51,7 +51,7 @@ JingleSessionContent *JingleSessionPrivate::findContent(JingleContent *content)
void JingleSessionPrivate::handle(const Jingle::Ptr &jingle)
{
- Logger::debug() << Q_FUNC_INFO;
+ jreenDebug() << Q_FUNC_INFO;
if (jingle->action == Jingle::SessionAccept) {
foreach (const Jingle::Content &remoteContent, jingle->contents) {
JingleSessionContent *content = findContent(remoteContent.name);
diff --git a/src/experimental/jinglesession.h b/src/experimental/jinglesession.h
index 50a9ec3..e92f20e 100644
--- a/src/experimental/jinglesession.h
+++ b/src/experimental/jinglesession.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef JINGLESESSION_H
-#define JINGLESESSION_H
+#ifndef JREEN_JINGLESESSION_H
+#define JREEN_JINGLESESSION_H
#include "jinglecontent.h"
#include "../stanzaextension.h"
@@ -72,4 +72,4 @@ protected:
}
-#endif // JINGLESESSION_H
+#endif // JREEN_JINGLESESSION_H
diff --git a/src/experimental/jinglesession_p.h b/src/experimental/jinglesession_p.h
index 93a3cf0..9197c3d 100644
--- a/src/experimental/jinglesession_p.h
+++ b/src/experimental/jinglesession_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef JINGLESESSION_P_H
-#define JINGLESESSION_P_H
+#ifndef JREEN_JINGLESESSION_P_H
+#define JREEN_JINGLESESSION_P_H
#include "jinglesession.h"
#include "jinglemanager_p.h"
@@ -71,4 +71,4 @@ public:
}
-#endif // JINGLESESSION_P_H
+#endif // JREEN_JINGLESESSION_P_H
diff --git a/src/experimental/jinglespeexcodec_p.h b/src/experimental/jinglespeexcodec_p.h
index 1b008ce..82693e4 100644
--- a/src/experimental/jinglespeexcodec_p.h
+++ b/src/experimental/jinglespeexcodec_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#if !defined(JINGLESPEEXCODEC_P_H) && defined(JREEN_HAVE_SPEEX)
-#define JINGLESPEEXCODEC_P_H
+#if !defined(JREEN_JINGLESPEEXCODEC_P_H) && defined(JREEN_HAVE_SPEEX)
+#define JREEN_JINGLESPEEXCODEC_P_H
#include "jingleaudiocontent.h"
#include <speex/speex.h>
@@ -59,4 +59,4 @@ public:
}
-#endif // JINGLESPEEXCODEC_P_H
+#endif // JREEN_JINGLESPEEXCODEC_P_H
diff --git a/src/experimental/jingletransport.h b/src/experimental/jingletransport.h
index 4269ab3..c3fd342 100644
--- a/src/experimental/jingletransport.h
+++ b/src/experimental/jingletransport.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef JINGLETRANSPORT_H
-#define JINGLETRANSPORT_H
+#ifndef JREEN_JINGLETRANSPORT_H
+#define JREEN_JINGLETRANSPORT_H
#include "jinglemanager.h"
#include "../stanzaextension.h"
@@ -127,4 +127,4 @@ Q_INLINE_TEMPLATE bool JingleTransportFactory<Extension>::canParse(const QString
}
-#endif // JINGLETRANSPORT_H
+#endif // JREEN_JINGLETRANSPORT_H
diff --git a/src/experimental/jingletransportice.cpp b/src/experimental/jingletransportice.cpp
index 3c78ed2..13e1b6c 100644
--- a/src/experimental/jingletransportice.cpp
+++ b/src/experimental/jingletransportice.cpp
@@ -130,7 +130,7 @@ void Transport::send(int component, const QByteArray &data)
void Transport::setRemoteInfo(const JingleTransportInfo::Ptr &genericInfo, bool final)
{
Q_UNUSED(final);
- Logger::debug() << Q_FUNC_INFO;
+ jreenDebug() << Q_FUNC_INFO;
TransportInfo::Ptr info = genericInfo.staticCast<TransportInfo>();
if (!info->ufrag.isEmpty())
m_ice->setPeerUfrag(info->ufrag);
@@ -142,18 +142,18 @@ void Transport::setRemoteInfo(const JingleTransportInfo::Ptr &genericInfo, bool
void Transport::onIceStarted()
{
- Logger::debug() << Q_FUNC_INFO;
+ jreenDebug() << Q_FUNC_INFO;
}
void Transport::onIceError(XMPP::Ice176::Error error)
{
- Logger::debug() << Q_FUNC_INFO << error;
+ jreenDebug() << Q_FUNC_INFO << error;
setState(Failed);
}
void Transport::onIceLocalCandidatesReady(const QList<XMPP::Ice176::Candidate> &candidates)
{
- Logger::debug() << Q_FUNC_INFO;
+ jreenDebug() << Q_FUNC_INFO;
TransportInfo::Ptr info = TransportInfo::Ptr::create();
info->candidates = candidates;
info->ufrag = m_ice->localUfrag();
@@ -164,7 +164,7 @@ void Transport::onIceLocalCandidatesReady(const QList<XMPP::Ice176::Candidate> &
void Transport::onIceComponentReady(int component)
{
m_ready.remove(component);
- Logger::debug() << Q_FUNC_INFO << component;
+ jreenDebug() << Q_FUNC_INFO << component;
if (m_ready.isEmpty())
setState(Connected);
}
@@ -261,8 +261,8 @@ void TransportFactory::serialize(Payload *obj, QXmlStreamWriter *writer)
Payload::Ptr TransportFactory::createPayload()
{
- Logger::debug() << Q_FUNC_INFO << m_info->pwd << m_info->ufrag;
- Logger::debug() << Q_FUNC_INFO << m_info->candidates.size();
+ jreenDebug() << Q_FUNC_INFO << m_info->pwd << m_info->ufrag;
+ jreenDebug() << Q_FUNC_INFO << m_info->candidates.size();
Payload::Ptr result = m_info;
m_info.clear();
return result;
diff --git a/src/experimental/jingletransportice_p.h b/src/experimental/jingletransportice_p.h
index e34b4fe..b1acfa6 100644
--- a/src/experimental/jingletransportice_p.h
+++ b/src/experimental/jingletransportice_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef JINGLEICE_H
-#define JINGLEICE_H
+#ifndef JREEN_JINGLETRANSPORTICE_P_H
+#define JREEN_JINGLETRANSPORTICE_P_H
#include "jingletransport.h"
@@ -96,4 +96,4 @@ private:
#endif // HAVE_IRISICE
-#endif // JINGLEICE_H
+#endif // JREEN_JINGLETRANSPORTICE_P_H
diff --git a/src/iq.h b/src/iq.h
index 589bb9b..0c148c9 100644
--- a/src/iq.h
+++ b/src/iq.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef IQ_H
-#define IQ_H
+#ifndef JREEN_IQ_H
+#define JREEN_IQ_H
#include "stanza.h"
@@ -62,4 +62,4 @@ public:
}
-#endif // IQ_H
+#endif // JREEN_IQ_H
diff --git a/src/iq_p.h b/src/iq_p.h
index 6d921f6..53e71ae 100644
--- a/src/iq_p.h
+++ b/src/iq_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef IQ_P_H
-#define IQ_P_H
+#ifndef JREEN_IQ_P_H
+#define JREEN_IQ_P_H
#include "iq.h"
#include "stanza_p.h"
@@ -56,4 +56,4 @@ public:
};
}
-#endif // IQ_P_H
+#endif // JREEN_IQ_P_H
diff --git a/src/iqfactory_p.h b/src/iqfactory_p.h
index e5ea2a1..04e4d80 100644
--- a/src/iqfactory_p.h
+++ b/src/iqfactory_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef IQFACTORY_P_H
-#define IQFACTORY_P_H
+#ifndef JREEN_IQFACTORY_P_H
+#define JREEN_IQFACTORY_P_H
#include "stanzafactory_p.h"
#include "iq.h"
@@ -45,4 +45,4 @@ public:
};
}
-#endif // IQFACTORY_P_H
+#endif // JREEN_IQFACTORY_P_H
diff --git a/src/iqreply.h b/src/iqreply.h
index 086cf11..ad8829c 100644
--- a/src/iqreply.h
+++ b/src/iqreply.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef IQREPLY_H
-#define IQREPLY_H
+#ifndef JREEN_IQREPLY_H
+#define JREEN_IQREPLY_H
#include "jreen.h"
@@ -56,4 +56,4 @@ protected:
};
}
-#endif // IQREPLY_H
+#endif // JREEN_IQREPLY_H
diff --git a/src/jid.h b/src/jid.h
index b54c8aa..674960f 100644
--- a/src/jid.h
+++ b/src/jid.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef JID_H
-#define JID_H
+#ifndef JREEN_JID_H
+#define JREEN_JID_H
#include "jreen.h"
#include <QSharedData>
@@ -90,4 +90,4 @@ inline uint qHash(const Jreen::JID &jid) { return qHash(jid.full()); }
Q_DECLARE_METATYPE(Jreen::JID)
-#endif // JID_H
+#endif // JREEN_JID_H
diff --git a/src/jreen.h b/src/jreen.h
index 3e1d670..35eaa8e 100644
--- a/src/jreen.h
+++ b/src/jreen.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef JREEN_H
-#define JREEN_H
+#ifndef JREEN_JREEN_H
+#define JREEN_JREEN_H
# ifndef __cplusplus
# error "C++ is needed"
@@ -55,6 +55,12 @@
# define JREEN_EXPORT
# endif
+#ifdef QT_DEPRECATED_SINCE
+# define JREEN_QT_DEPRECATED_SINCE(a, b) QT_DEPRECATED_SINCE(a, b)
+#else
+# define QT_DEPRECATED_SINCE(a, b) false
+#endif
+
# define J_PURE_SINGLETON(Class) \
public: \
@@ -116,4 +122,4 @@ namespace Jreen
}
-#endif // JREEN_H
+#endif // JREEN_JREEN_H
diff --git a/src/jstrings.h b/src/jstrings.h
index c098396..8452adc 100644
--- a/src/jstrings.h
+++ b/src/jstrings.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef JSTRINGS_H
-#define JSTRINGS_H
+#ifndef JREEN_JSTRINGS_H
+#define JREEN_JSTRINGS_H
#include "jreen.h"
@@ -85,4 +85,4 @@ Q_INLINE_TEMPLATE QString flagToStr(uint i, const char *(&strings)[N])
}
-#endif // JSTRINGS_H
+#endif // JREEN_JSTRINGS_H
diff --git a/src/langmap.cpp b/src/langmap.cpp
index cd6c2eb..d9fec60 100644
--- a/src/langmap.cpp
+++ b/src/langmap.cpp
@@ -30,7 +30,7 @@
namespace Jreen
{
-LangMapData LangMapData::shared_null = { Q_BASIC_ATOMIC_INITIALIZER(1), QString(), LangMapData::Base() };
+LangMapData LangMapData::shared_null = { 1, QString(), LangMapData::Base() };
void LangMapData::fillNode(QXmlStreamWriter *writer, const QString &name, const QString &uri) const
{
diff --git a/src/langmap.h b/src/langmap.h
index 4fad840..87d3e2c 100644
--- a/src/langmap.h
+++ b/src/langmap.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef LANGMAP_H
-#define LANGMAP_H
+#ifndef JREEN_LANGMAP_H
+#define JREEN_LANGMAP_H
#include <QStringList>
#ifdef LANGMAP_USE_MAP
@@ -45,7 +45,7 @@ struct JREEN_EXPORT LangMapData
#else
typedef QHash<QString,QString> Base;
#endif
- QBasicAtomicInt ref;
+ QAtomicInt ref;
QString base;
Base other;
@@ -103,7 +103,11 @@ public:
inline int size() const { return count(); }
inline bool isEmpty() const { return count() == 0; }
protected:
- inline void detach() { if(d->ref != 1) detach_helper(); }
+#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
+ inline void detach() { if (d->ref != 1) detach_helper(); }
+#else
+ inline void detach() { if (d->ref.load() != 1) detach_helper(); }
+#endif
void detach_helper()
{
d->ref.deref();
@@ -197,4 +201,4 @@ inline int LangMap::count() const
}
-#endif // LANGMAP_H
+#endif // JREEN_LANGMAP_H
diff --git a/src/logger.cpp b/src/logger.cpp
index c0f9706..c3b549d 100644
--- a/src/logger.cpp
+++ b/src/logger.cpp
@@ -28,6 +28,7 @@
namespace Jreen
{
+#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) || QT_DEPRECATED_SINCE(5, 0)
Q_GLOBAL_STATIC(QList<QtMsgHandler>, handlers)
Logger::Logger()
@@ -59,5 +60,6 @@ void Logger::flushDebug(Debug::Stream *stream)
foreach (QtMsgHandler handler, *handlers())
handler(stream->type, data);
}
+#endif
}
diff --git a/src/logger.h b/src/logger.h
index 33b6847..466f6e5 100644
--- a/src/logger.h
+++ b/src/logger.h
@@ -23,16 +23,29 @@
**
****************************************************************************/
-#ifndef LOGGER_H
-#define LOGGER_H
+#ifndef JREEN_LOGGER_H
+#define JREEN_LOGGER_H
-#include <QtCore/QDebug>
+#include <QtDebug>
#include "jreen.h"
namespace Jreen
{
class Logger;
+#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
+# define jreenDebug QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO, "jreen").debug
+# define jreenWarning QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO, "jreen").warning
+# define jreenCritical QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO, "jreen").critical
+# define jreenFatal QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO, "jreen").critical
+#else
+# define jreenDebug Logger::debug
+# define jreenWarning Logger::warning
+# define jreenCritical Logger::critical
+# define jreenFatal Logger::fatal
+#endif
+
+#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0) || QT_DEPRECATED_SINCE(5, 0)
class JREEN_EXPORT Debug
{
struct Stream {
@@ -66,6 +79,7 @@ public:
static void addHandler(QtMsgHandler handler);
static void removeHandler(QtMsgHandler handler);
+
static bool isNull();
private:
@@ -100,7 +114,8 @@ Q_INLINE_TEMPLATE Debug &Debug::operator<<(T t)
stream->debug << t;
return *this;
}
+#endif
}
-#endif // LOGGER_H
+#endif // JREEN_LOGGER_H
diff --git a/src/message.h b/src/message.h
index 78e8b16..e716a88 100644
--- a/src/message.h
+++ b/src/message.h
@@ -24,8 +24,8 @@
**
****************************************************************************/
-#ifndef MESSAGE_H
-#define MESSAGE_H
+#ifndef JREEN_MESSAGE_H
+#define JREEN_MESSAGE_H
#include "stanza.h"
#include "delayeddelivery.h"
@@ -70,4 +70,4 @@ public:
}
-#endif // MESSAGE_H
+#endif // JREEN_MESSAGE_H
diff --git a/src/message_p.h b/src/message_p.h
index 904d143..97a48de 100644
--- a/src/message_p.h
+++ b/src/message_p.h
@@ -22,8 +22,8 @@
** $JREEN_END_LICENSE$
**
****************************************************************************/
-#ifndef MESSAGE_P_H
-#define MESSAGE_P_H
+#ifndef JREEN_MESSAGE_P_H
+#define JREEN_MESSAGE_P_H
#include "stanza_p.h"
#include "langmap.h"
@@ -44,4 +44,4 @@ public:
} //namespace Jreen
-#endif // MESSAGE_P_H
+#endif // JREEN_MESSAGE_P_H
diff --git a/src/messagefactory_p.h b/src/messagefactory_p.h
index 62e72c3..86f4d86 100644
--- a/src/messagefactory_p.h
+++ b/src/messagefactory_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef MESSAGEFACTORY_P_H
-#define MESSAGEFACTORY_P_H
+#ifndef JREEN_MESSAGEFACTORY_P_H
+#define JREEN_MESSAGEFACTORY_P_H
#include "stanzafactory_p.h"
#include "message.h"
@@ -49,4 +49,4 @@ private:
} // namespace Jreen
-#endif // MESSAGEFACTORY_P_H
+#endif // JREEN_MESSAGEFACTORY_P_H
diff --git a/src/messagesession.cpp b/src/messagesession.cpp
index 1aa6b5b..059ec2f 100644
--- a/src/messagesession.cpp
+++ b/src/messagesession.cpp
@@ -202,9 +202,9 @@ MessageSession *MessageSessionManager::session(const JID &jid, Message::Type typ
{
Q_D(MessageSessionManager);
QList<QPointer<MessageSession> > sessions = d->fullSessions.values(jid.full());
- Logger::debug() << "d->full_sessions" << d->fullSessions;
+ jreenDebug() << "d->full_sessions" << d->fullSessions;
foreach(MessageSession *session, sessions)
- Logger::debug() << "MessageSession" << (session ? session->jid() : JID());
+ jreenDebug() << "MessageSession" << (session ? session->jid() : JID());
for(int i = 0; i < sessions.size(); i++)
{
if(sessions[i].isNull())
diff --git a/src/messagesession.h b/src/messagesession.h
index a8b137f..f51ebcf 100644
--- a/src/messagesession.h
+++ b/src/messagesession.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef MESSAGESESSION_H
-#define MESSAGESESSION_H
+#ifndef JREEN_MESSAGESESSION_H
+#define JREEN_MESSAGESESSION_H
#include "message.h"
#include <QPointer>
@@ -44,7 +44,7 @@ class Client;
typedef QSharedPointer<Class> Ptr; \
static int staticFilterType() \
{ \
- static QBasicAtomicInt filterType = Q_BASIC_ATOMIC_INITIALIZER(0); \
+ static int filterType = 0; \
if (!filterType) { \
filterType = Jreen::Payload::registerPayloadType( #Class ); \
Class *useFullNameWithNamespaces = reinterpret_cast< ::Class* >(0); \
@@ -149,4 +149,4 @@ private:
}
-#endif // MESSAGESESSION_H
+#endif // JREEN_MESSAGESESSION_H
diff --git a/src/metacontactstorage.cpp b/src/metacontactstorage.cpp
index 460c57f..04d083e 100644
--- a/src/metacontactstorage.cpp
+++ b/src/metacontactstorage.cpp
@@ -27,6 +27,7 @@
#include "metacontacts_p.h"
#include "logger.h"
#include "client.h"
+#include <QPointer>
namespace Jreen {
@@ -117,7 +118,7 @@ class MetaContactStoragePrivate
{
public:
Client *client;
- QWeakPointer<PrivateXml> privateXml;
+ QPointer<PrivateXml> privateXml;
};
MetaContactStorage::MetaContactStorage(Client *client) :
@@ -157,10 +158,10 @@ void MetaContactStorage::storeMetaContacts(const MetaContactStorage::ItemList &i
void MetaContactStorage::onResultReady(const Payload::Ptr &payload, PrivateXml::Result result, const Error::Ptr &error)
{
Q_UNUSED(error);
- Logger::debug() << "onResultReady";
+ jreenDebug() << "onResultReady";
if(result == PrivateXml::RequestOk) {
MetaContacts *metacontacts = payload_cast<MetaContacts*>(payload.data());
- Logger::debug() << "received metacontacts" << metacontacts << payload.data();
+ jreenDebug() << "received metacontacts" << metacontacts << payload.data();
if (metacontacts)
emit metaContactsReceived(metacontacts->items);
else
diff --git a/src/mood.h b/src/mood.h
index e28c02e..1af23ab 100644
--- a/src/mood.h
+++ b/src/mood.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef MOOD_H
-#define MOOD_H
+#ifndef JREEN_MOOD_H
+#define JREEN_MOOD_H
#include "stanzaextension.h"
namespace Jreen
@@ -140,4 +140,4 @@ private:
};
} // namespace Jreen
-#endif // MOOD_H
+#endif // JREEN_MOOD_H
diff --git a/src/moodfactory_p.h b/src/moodfactory_p.h
index 362421e..4ed2a88 100644
--- a/src/moodfactory_p.h
+++ b/src/moodfactory_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef MOODFACTORY_P_H
-#define MOODFACTORY_P_H
+#ifndef JREEN_MOODFACTORY_P_H
+#define JREEN_MOODFACTORY_P_H
#include "stanzaextension.h"
#include "mood.h"
#include "langmap.h"
@@ -54,4 +54,4 @@ private:
} // namespace Jreen
-#endif // MOODFACTORY_P_H
+#endif // JREEN_MOODFACTORY_P_H
diff --git a/src/mucmessagesession_p.h b/src/mucmessagesession_p.h
index e5a7bcb..31c09d9 100644
--- a/src/mucmessagesession_p.h
+++ b/src/mucmessagesession_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef MUCMESSAGESESSION_P_H
-#define MUCMESSAGESESSION_P_H
+#ifndef JREEN_MUCMESSAGESESSION_P_H
+#define JREEN_MUCMESSAGESESSION_P_H
#include "messagesession.h"
@@ -48,4 +48,4 @@ namespace Jreen
};
}
-#endif // MUCMESSAGESESSION_P_H
+#endif // JREEN_MUCMESSAGESESSION_P_H
diff --git a/src/mucroom.cpp b/src/mucroom.cpp
index b2c136a..3247953 100644
--- a/src/mucroom.cpp
+++ b/src/mucroom.cpp
@@ -197,7 +197,7 @@ void MUCRoom::Item::setReason(const QString &reason)
void MUCRoomPrivate::handlePresence(const Presence &pres)
{
Q_Q(MUCRoom);
- Logger::debug() << "handle presence" << pres.from();
+ jreenDebug() << "handle presence" << pres.from();
if (Error::Ptr e = pres.payload<Error>()) {
startedJoining = false;
emit q->error(e);
@@ -390,7 +390,6 @@ void MUCRoom::leave(const QString &message)
Q_D(MUCRoom);
if (d->currentPresence.subtype() == Presence::Unavailable)
return;
- d->isJoined = false;
Presence pres(Presence::Unavailable, d->jid, message);
d->currentPresence = pres;
d->client->send(pres);
@@ -589,7 +588,7 @@ void MUCRoom::onDisconnected()
{
Q_D(MUCRoom);
d->startedJoining = false;
- if (d->currentPresence.subtype() != Presence::Unavailable) {
+ if (d->isJoined) {
d->participantsHash.clear();
d->isJoined = false;
emit leaved();
diff --git a/src/mucroom.h b/src/mucroom.h
index 215816e..4789fbc 100644
--- a/src/mucroom.h
+++ b/src/mucroom.h
@@ -23,8 +23,8 @@
** $JREEN_END_LICENSE$
**
****************************************************************************/
-#ifndef MUCROOM_H
-#define MUCROOM_H
+#ifndef JREEN_MUCROOM_H
+#define JREEN_MUCROOM_H
#include <QObject>
#include <QDateTime>
@@ -174,4 +174,4 @@ protected:
};
}
-#endif // MUCROOM_H
+#endif // JREEN_MUCROOM_H
diff --git a/src/mucroom_p.h b/src/mucroom_p.h
index 313992d..102a9c5 100644
--- a/src/mucroom_p.h
+++ b/src/mucroom_p.h
@@ -24,8 +24,8 @@
**
****************************************************************************/
-#ifndef MUCROOM_P_H
-#define MUCROOM_P_H
+#ifndef JREEN_MUCROOM_P_H
+#define JREEN_MUCROOM_P_H
#include "mucroom.h"
#include "mucmessagesession_p.h"
@@ -198,4 +198,4 @@ class MUCRoomOwnerQuery : public Payload
};
}
-#endif // MUCROOM_P_H
+#endif // JREEN_MUCROOM_P_H
diff --git a/src/mucroomfactory_p.h b/src/mucroomfactory_p.h
index fa5a28b..0db47fc 100644
--- a/src/mucroomfactory_p.h
+++ b/src/mucroomfactory_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef MUCROOMFACTORY_P_H
-#define MUCROOMFACTORY_P_H
+#ifndef JREEN_MUCROOMFACTORY_P_H
+#define JREEN_MUCROOMFACTORY_P_H
#include "mucroom_p.h"
#include "dataformfactory_p.h"
@@ -120,4 +120,4 @@ private:
QScopedPointer<MUCRoomOwnerQuery> m_query;
};
}
-#endif // MUCROOMFACTORY_P_H
+#endif // JREEN_MUCROOMFACTORY_P_H
diff --git a/src/nickname.h b/src/nickname.h
index dc0a200..ec0530f 100644
--- a/src/nickname.h
+++ b/src/nickname.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef NICKNAME_H
-#define NICKNAME_H
+#ifndef JREEN_NICKNAME_H
+#define JREEN_NICKNAME_H
#include "stanzaextension.h"
@@ -47,4 +47,4 @@ private:
}
-#endif // NICKNAME_H
+#endif // JREEN_NICKNAME_H
diff --git a/src/nicknamefactory_p.h b/src/nicknamefactory_p.h
index ba11e85..be5b544 100644
--- a/src/nicknamefactory_p.h
+++ b/src/nicknamefactory_p.h
@@ -22,8 +22,8 @@
** $JREEN_END_LICENSE$
**
****************************************************************************/
-#ifndef NICKNAMEFACTORY_H
-#define NICKNAMEFACTORY_H
+#ifndef JREEN_NICKNAMEFACTORY_P_H
+#define JREEN_NICKNAMEFACTORY_P_H
#include "stanzafactory_p.h"
#include "nickname.h"
@@ -49,4 +49,4 @@ private:
} // namespace Jreen
-#endif // NICKNAMEFACTORY_H
+#endif // JREEN_NICKNAMEFACTORY_P_H
diff --git a/src/nonsaslauth_p.h b/src/nonsaslauth_p.h
index e371d49..85df774 100644
--- a/src/nonsaslauth_p.h
+++ b/src/nonsaslauth_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef NONSASLAUTH_H
-#define NONSASLAUTH_H
+#ifndef JREEN_NONSASLAUTH_P_H
+#define JREEN_NONSASLAUTH_P_H
#include "streamfeature_p.h"
#include "stanzaextension.h"
@@ -76,4 +76,4 @@ private:
}
-#endif // NONSASLAUTH_H
+#endif // JREEN_NONSASLAUTH_P_H
diff --git a/src/parser.cpp b/src/parser.cpp
index a59b891..a75cad4 100644
--- a/src/parser.cpp
+++ b/src/parser.cpp
@@ -248,7 +248,7 @@ void Parser::handleStartElement(const QStringRef &name, const QStringRef &uri,
}
foreach (XmlStreamParser *parser, d->parsers)
parser->handleStartElement(name, uri, attributes);
- // Logger::debug() << d->reader->tokenString() << d->depth << name;
+ // jreenDebug() << d->reader->tokenString() << d->depth << name;
#ifdef PARSER_DEBUG_SPEED
d->parsingTime += counter.elapsed();
#endif
@@ -293,19 +293,19 @@ void Parser::handleEndElement(const QStringRef &name, const QStringRef &uri)
d->totalParsingTime += d->parsingTime;
int logicTime = counter.elapsed();
d->totalLogicTime += logicTime;
- Logger::debug() << "Total parsing time:" << d->totalParsingTime << "ms";
- Logger::debug() << "Parsing time:" << d->parsingTime << "ms";
- Logger::debug() << "Total logic time:" << d->totalLogicTime << "ms";
- Logger::debug() << "Total IQ logic time:" << d->stanzaLogicTime[0] << "ms";
- Logger::debug() << "Total Presence logic time:" << d->stanzaLogicTime[1] << "ms";
- Logger::debug() << "Total Message logic time:" << d->stanzaLogicTime[2] << "ms";
- Logger::debug() << "Logic time:" << logicTime << "ms";
+ jreenDebug() << "Total parsing time:" << d->totalParsingTime << "ms";
+ jreenDebug() << "Parsing time:" << d->parsingTime << "ms";
+ jreenDebug() << "Total logic time:" << d->totalLogicTime << "ms";
+ jreenDebug() << "Total IQ logic time:" << d->stanzaLogicTime[0] << "ms";
+ jreenDebug() << "Total Presence logic time:" << d->stanzaLogicTime[1] << "ms";
+ jreenDebug() << "Total Message logic time:" << d->stanzaLogicTime[2] << "ms";
+ jreenDebug() << "Logic time:" << logicTime << "ms";
#endif
d->state = WaitingForStanza;
} else if (d->depth == 0) {
}
d->parsers.resize(d->parsersCount.pop());
- // Logger::debug() << d->reader->tokenString() << d->depth << name;
+ // jreenDebug() << d->reader->tokenString() << d->depth << name;
}
void Parser::handleCharacterData(const QStringRef &text)
@@ -355,10 +355,10 @@ void Parser::parseData()
}
}
if (d->nullReader.error() == QXmlStreamReader::NotWellFormedError) {
- Logger::warning() << "---------------------------------";
- Logger::warning() << "Broken stanza (" << d->nullReader.errorString() << ")";
- Logger::warning() << result;
- Logger::warning() << "---------------------------------";
+ jreenWarning() << "---------------------------------";
+ jreenWarning() << "Broken stanza (" << d->nullReader.errorString() << ")";
+ jreenWarning() << result;
+ jreenWarning() << "---------------------------------";
result.prepend("<!--");
result.append("-->");
foreach (XmlStreamHandler *handler, d->client->streamHandlers)
diff --git a/src/parser.h b/src/parser.h
index 5061efc..03a0584 100644
--- a/src/parser.h
+++ b/src/parser.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef PARSER_H
-#define PARSER_H
+#ifndef JREEN_PARSER_H
+#define JREEN_PARSER_H
#include "stanza.h"
#include <QXmlStreamReader>
diff --git a/src/parser_p.h b/src/parser_p.h
index 0024a53..fa4b54b 100644
--- a/src/parser_p.h
+++ b/src/parser_p.h
@@ -24,8 +24,8 @@
**
****************************************************************************/
-#ifndef PARSER_P_H
-#define PARSER_P_H
+#ifndef JREEN_PARSER_P_H
+#define JREEN_PARSER_P_H
#include "jreen.h"
#include "parser.h"
@@ -70,4 +70,4 @@ public:
};
}
-#endif // PARSER_P_H
+#endif // JREEN_PARSER_P_H
diff --git a/src/pgpfactory_p.h b/src/pgpfactory_p.h
index b184bfa..9a149f0 100644
--- a/src/pgpfactory_p.h
+++ b/src/pgpfactory_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef JREEN_PGPFACTORY_H
-#define JREEN_PGPFACTORY_H
+#ifndef JREEN_PGPFACTORY_P_H
+#define JREEN_PGPFACTORY_P_H
#include "pgpsigned.h"
#include "pgpencrypted.h"
@@ -65,4 +65,4 @@ private:
} // namespace Jreen
-#endif // JREEN_PGPFACTORY_H
+#endif // JREEN_PGPFACTORY_P_H
diff --git a/src/ping.h b/src/ping.h
index 4bf25f6..8442984 100644
--- a/src/ping.h
+++ b/src/ping.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef PING_H
-#define PING_H
+#ifndef JREEN_PING_H
+#define JREEN_PING_H
#include "stanzaextension.h"
#include "jid.h"
@@ -47,4 +47,4 @@ private:
} // namespace Jreen
-#endif // PING_H
+#endif // JREEN_PING_H
diff --git a/src/pingfactory_p.h b/src/pingfactory_p.h
index b4bcf9c..50a4f99 100644
--- a/src/pingfactory_p.h
+++ b/src/pingfactory_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef PINGFACTORY_P_H
-#define PINGFACTORY_P_H
+#ifndef JREEN_PINGFACTORY_P_H
+#define JREEN_PINGFACTORY_P_H
#include "ping.h"
namespace Jreen {
@@ -46,4 +46,4 @@ public:
} // namespace Jreen
-#endif // PINGFACTORY_P_H
+#endif // JREEN_PINGFACTORY_P_H
diff --git a/src/prep.cpp b/src/prep.cpp
index e5f04c1..8b7527e 100644
--- a/src/prep.cpp
+++ b/src/prep.cpp
@@ -45,9 +45,9 @@ namespace Jreen
{
typedef void Stringprep_profile;
typedef int Stringprep_profile_flags;
- static void *Jreen_idn_stringprep_nameprep = 0;
- static void *Jreen_idn_stringprep_xmpp_nodeprep = 0;
- static void *Jreen_idn_stringprep_xmpp_resourceprep = 0;
+ static Stringprep_profile *Jreen_idn_stringprep_nameprep = 0;
+ static Stringprep_profile *Jreen_idn_stringprep_xmpp_nodeprep = 0;
+ static Stringprep_profile *Jreen_idn_stringprep_xmpp_resourceprep = 0;
typedef int (*Jreen_idn_stringprep_) (char *in, size_t maxlen, Stringprep_profile_flags flags,
const Stringprep_profile *profile);
static Jreen_idn_stringprep_ Jreen_idn_stringprep = 0;
@@ -76,9 +76,12 @@ namespace Jreen
#endif // Q_OS_WIN32
return false;
}
- Jreen_idn_stringprep_nameprep = lib.resolve("stringprep_nameprep");
- Jreen_idn_stringprep_xmpp_nodeprep = lib.resolve("stringprep_xmpp_nodeprep");
- Jreen_idn_stringprep_xmpp_resourceprep = lib.resolve("stringprep_xmpp_resourceprep");
+ Jreen_idn_stringprep_nameprep
+ = reinterpret_cast<Stringprep_profile*>(lib.resolve("stringprep_nameprep"));
+ Jreen_idn_stringprep_xmpp_nodeprep
+ = reinterpret_cast<Stringprep_profile*>(lib.resolve("stringprep_xmpp_nodeprep"));
+ Jreen_idn_stringprep_xmpp_resourceprep
+ = reinterpret_cast<Stringprep_profile*>(lib.resolve("stringprep_xmpp_resourceprep"));
Jreen_idn_stringprep = reinterpret_cast<Jreen_idn_stringprep_>(lib.resolve("stringprep"));
return true;
}
diff --git a/src/prep_p.h b/src/prep_p.h
index 632ea8b..b73091b 100644
--- a/src/prep_p.h
+++ b/src/prep_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef PREP_H
-#define PREP_H
+#ifndef JREEN_PREP_P_H
+#define JREEN_PREP_P_H
#include "jreen.h"
@@ -42,4 +42,4 @@ public:
}
-#endif // PREP_H
+#endif // JREEN_PREP_P_H
diff --git a/src/presence.h b/src/presence.h
index 335f4ca..7b65ab0 100644
--- a/src/presence.h
+++ b/src/presence.h
@@ -24,8 +24,8 @@
**
****************************************************************************/
-#ifndef PRESENCE_H
-#define PRESENCE_H
+#ifndef JREEN_PRESENCE_H
+#define JREEN_PRESENCE_H
#include "stanza.h"
@@ -83,4 +83,4 @@ public:
}
-#endif // PRESENCE_H
+#endif // JREEN_PRESENCE_H
diff --git a/src/presence_p.h b/src/presence_p.h
index 37f574d..69cfab2 100644
--- a/src/presence_p.h
+++ b/src/presence_p.h
@@ -24,8 +24,8 @@
**
****************************************************************************/
-#ifndef PRESENCE_P_H
-#define PRESENCE_P_H
+#ifndef JREEN_PRESENCE_P_H
+#define JREEN_PRESENCE_P_H
#include "stanza_p.h"
#include "presence.h"
@@ -46,4 +46,4 @@ public:
};
}
-#endif // PRESENCE_P_H
+#endif // JREEN_PRESENCE_P_H
diff --git a/src/presencefactory_p.h b/src/presencefactory_p.h
index 973e250..54dc583 100644
--- a/src/presencefactory_p.h
+++ b/src/presencefactory_p.h
@@ -24,8 +24,8 @@
**
****************************************************************************/
-#ifndef PRESENCEFACTORY_P_H
-#define PRESENCEFACTORY_P_H
+#ifndef JREEN_PRESENCEFACTORY_P_H
+#define JREEN_PRESENCEFACTORY_P_H
#include "stanzafactory_p.h"
#include "presence.h"
@@ -51,4 +51,4 @@ private:
};
}
-#endif // PRESENCEFACTORY_P_H
+#endif // JREEN_PRESENCEFACTORY_P_H
diff --git a/src/privacymanager.cpp b/src/privacymanager.cpp
index 3665b11..c3ce2d1 100644
--- a/src/privacymanager.cpp
+++ b/src/privacymanager.cpp
@@ -352,7 +352,7 @@ void PrivacyManager::handleIQ(const Jreen::IQ &iq, int context)
d->lists = lists;
d->defaultList = query->defaultList;
d->activeList = query->activeList;
- Logger::debug() << Q_FUNC_INFO << d->lists << d->defaultList << d->activeList;
+ jreenDebug() << Q_FUNC_INFO << d->lists << d->defaultList << d->activeList;
if (d->activeList.isEmpty())
d->activeList = d->defaultList;
emit listsReceived();
diff --git a/src/privacymanager.h b/src/privacymanager.h
index f0a8b8a..1f74aa9 100644
--- a/src/privacymanager.h
+++ b/src/privacymanager.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef PRIVACYMANAGER_H
-#define PRIVACYMANAGER_H
+#ifndef JREEN_PRIVACYMANAGER_H
+#define JREEN_PRIVACYMANAGER_H
#include "jid.h"
@@ -128,4 +128,4 @@ private:
};
}
-#endif // PRIVACYMANAGER_H
+#endif // JREEN_PRIVACYMANAGER_H
diff --git a/src/privacymanager_p.h b/src/privacymanager_p.h
index 8c35745..8d9d35a 100644
--- a/src/privacymanager_p.h
+++ b/src/privacymanager_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef PRIVACYMANAGER_P_H
-#define PRIVACYMANAGER_P_H
+#ifndef JREEN_PRIVACYMANAGER_P_H
+#define JREEN_PRIVACYMANAGER_P_H
#include "privacymanager.h"
#include "stanzaextension.h"
@@ -83,4 +83,4 @@ public:
};
}
-#endif // PRIVACYMANAGER_P_H
+#endif // JREEN_PRIVACYMANAGER_P_H
diff --git a/src/privacyqueryfactory_p.h b/src/privacyqueryfactory_p.h
index 4b9d18d..fb6063d 100644
--- a/src/privacyqueryfactory_p.h
+++ b/src/privacyqueryfactory_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef PRIVACYQUERYFACTORY_P_H
-#define PRIVACYQUERYFACTORY_P_H
+#ifndef JREEN_PRIVACYQUERYFACTORY_P_H
+#define JREEN_PRIVACYQUERYFACTORY_P_H
#include "privacymanager_p.h"
@@ -52,4 +52,4 @@ private:
} // namespace Jreen
-#endif // PRIVACYQUERYFACTORY_P_H
+#endif // JREEN_PRIVACYQUERYFACTORY_P_H
diff --git a/src/privatexml.h b/src/privatexml.h
index 2f5a098..52d53ae 100644
--- a/src/privatexml.h
+++ b/src/privatexml.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef PRIVATEXML_H
-#define PRIVATEXML_H
+#ifndef JREEN_PRIVATEXML_H
+#define JREEN_PRIVATEXML_H
#include <QObject>
#include "stanzaextension.h"
@@ -64,4 +64,4 @@ private:
}
-#endif // PRIVATEXML_H
+#endif // JREEN_PRIVATEXML_H
diff --git a/src/privatexml_p.h b/src/privatexml_p.h
index 70a8449..0a3f78c 100644
--- a/src/privatexml_p.h
+++ b/src/privatexml_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef PRIVATEXML_P_H
-#define PRIVATEXML_P_H
+#ifndef JREEN_PRIVATEXML_P_H
+#define JREEN_PRIVATEXML_P_H
#include "privatexml.h"
#include "jstrings.h"
@@ -113,4 +113,4 @@ enum PrivateXmlContext
}
-#endif // PRIVATEXML_P_H
+#endif // JREEN_PRIVATEXML_P_H
diff --git a/src/pubsubevent.h b/src/pubsubevent.h
index 52b13ba..6bf7565 100644
--- a/src/pubsubevent.h
+++ b/src/pubsubevent.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef PUBSUBEVENT_H
-#define PUBSUBEVENT_H
+#ifndef JREEN_PUBSUBEVENT_H
+#define JREEN_PUBSUBEVENT_H
#include "stanzaextension.h"
@@ -54,4 +54,4 @@ private:
}
}
-#endif // PUBSUBEVENT_H
+#endif // JREEN_PUBSUBEVENT_H
diff --git a/src/pubsubeventfactory.cpp b/src/pubsubeventfactory.cpp
index dc85269..855922e 100644
--- a/src/pubsubeventfactory.cpp
+++ b/src/pubsubeventfactory.cpp
@@ -111,7 +111,7 @@ void EventFactory::serialize(Payload *extension, QXmlStreamWriter *writer)
node = factory ? factory->features().value(0) : QString();
}
if (!factory || node.isEmpty()) {
- Logger::warning() << "Invalid stanza extension at PubSub::Event";
+ jreenWarning() << "Invalid stanza extension at PubSub::Event";
return;
}
writer->writeStartElement(QLatin1String("event"));
diff --git a/src/pubsubeventfactory_p.h b/src/pubsubeventfactory_p.h
index 1d8b631..a7775f7 100644
--- a/src/pubsubeventfactory_p.h
+++ b/src/pubsubeventfactory_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef PUBSUBEVENTFACTORY_H
-#define PUBSUBEVENTFACTORY_H
+#ifndef JREEN_PUBSUBEVENTFACTORY_P_H
+#define JREEN_PUBSUBEVENTFACTORY_P_H
#include "pubsubevent.h"
#include <QMap>
@@ -58,4 +58,4 @@ private:
}
}
-#endif // PUBSUBEVENTFACTORY_H
+#endif // JREEN_PUBSUBEVENTFACTORY_P_H
diff --git a/src/pubsubmanager.cpp b/src/pubsubmanager.cpp
index c5e8564..80c2cff 100644
--- a/src/pubsubmanager.cpp
+++ b/src/pubsubmanager.cpp
@@ -136,7 +136,7 @@ void Manager::addEntityType(int type)
Q_ASSERT(!node.isEmpty());
d->client->disco()->addFeature(node);
d->client->disco()->addFeature(node + QLatin1String("+notify"));
- Logger::debug() << Q_FUNC_INFO << d->factories.size() << node;
+ jreenDebug() << Q_FUNC_INFO << d->factories.size() << node;
}
void Manager::handleMessage(const Jreen::Message &message)
diff --git a/src/pubsubmanager.h b/src/pubsubmanager.h
index 1e1587b..1b445cf 100644
--- a/src/pubsubmanager.h
+++ b/src/pubsubmanager.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef PUBSUBMANAGER_H
-#define PUBSUBMANAGER_H
+#ifndef JREEN_PUBSUBMANAGER_H
+#define JREEN_PUBSUBMANAGER_H
#include "pubsubevent.h"
@@ -87,4 +87,4 @@ private:
}
}
-#endif // PUBSUBMANAGER_H
+#endif // JREEN_PUBSUBMANAGER_H
diff --git a/src/pubsubmanager_p.h b/src/pubsubmanager_p.h
index 644093b..7b78c42 100644
--- a/src/pubsubmanager_p.h
+++ b/src/pubsubmanager_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef PUBSUBMANAGER_P_H
-#define PUBSUBMANAGER_P_H
+#ifndef JREEN_PUBSUBMANAGER_P_H
+#define JREEN_PUBSUBMANAGER_P_H
#include "pubsubmanager.h"
#include "dataform.h"
@@ -52,4 +52,4 @@ namespace Jreen
};
}
}
-#endif // PUBSUBMANAGER_P_H
+#endif // JREEN_PUBSUBMANAGER_P_H
diff --git a/src/pubsubpublishfactory.cpp b/src/pubsubpublishfactory.cpp
index ce20ff5..9900052 100644
--- a/src/pubsubpublishfactory.cpp
+++ b/src/pubsubpublishfactory.cpp
@@ -114,7 +114,7 @@ void PublishFactory::serialize(Payload *extension, QXmlStreamWriter *writer)
node = factory ? factory->features().value(0) : QString();
}
if (!factory || node.isEmpty()) {
- Logger::warning() << "Invalid stanza extension at PubSub::Publish";
+ jreenWarning() << "Invalid stanza extension at PubSub::Publish";
return;
}
writer->writeStartElement(QLatin1String("pubsub"));
diff --git a/src/pubsubpublishfactory_p.h b/src/pubsubpublishfactory_p.h
index 9684b97..56b4ed6 100644
--- a/src/pubsubpublishfactory_p.h
+++ b/src/pubsubpublishfactory_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef PUBSUBPUBLISHFACTORY_P_H
-#define PUBSUBPUBLISHFACTORY_P_H
+#ifndef JREEN_PUBSUBPUBLISHFACTORY_P_H
+#define JREEN_PUBSUBPUBLISHFACTORY_P_H
#include "pubsubmanager_p.h"
#include "dataformfactory_p.h"
@@ -59,4 +59,4 @@ private:
}
}
-#endif // PUBSUBPUBLISHFACTORY_P_H
+#endif // JREEN_PUBSUBPUBLISHFACTORY_P_H
diff --git a/src/receipt.h b/src/receipt.h
index 463f92e..33962a3 100644
--- a/src/receipt.h
+++ b/src/receipt.h
@@ -24,8 +24,8 @@
**
****************************************************************************/
-#ifndef RECEIPT_H
-#define RECEIPT_H
+#ifndef JREEN_RECEIPT_H
+#define JREEN_RECEIPT_H
#include "stanzaextension.h"
@@ -56,4 +56,4 @@ private:
}
-#endif // RECEIPT_H
+#endif // JREEN_RECEIPT_H
diff --git a/src/receiptfactory_p.h b/src/receiptfactory_p.h
index b6fab19..ca777f3 100644
--- a/src/receiptfactory_p.h
+++ b/src/receiptfactory_p.h
@@ -22,8 +22,8 @@
** $JREEN_END_LICENSE$
**
****************************************************************************/
-#ifndef RECEIPTFACTORY_H
-#define RECEIPTFACTORY_H
+#ifndef JREEN_RECEIPTFACTORY_P_H
+#define JREEN_RECEIPTFACTORY_P_H
#include "receipt.h"
namespace Jreen {
@@ -48,4 +48,4 @@ private:
} // namespace Jreen
-#endif // RECEIPTFACTORY_H
+#endif // JREEN_RECEIPTFACTORY_P_H
diff --git a/src/registrationmanager.cpp b/src/registrationmanager.cpp
index 0c1bcad..615f79d 100644
--- a/src/registrationmanager.cpp
+++ b/src/registrationmanager.cpp
@@ -122,7 +122,7 @@ bool RegistrationData::hasFields() const
void RegistrationData::setFieldValue(RegistrationData::FieldType type, const QString &value)
{
if (d->values.size() <= type) {
- Logger::warning() << "Unkown RegistrationData::ValueType:" << type;
+ jreenWarning() << "Unkown RegistrationData::ValueType:" << type;
return;
}
d->valuesFlags |= (1 << type);
diff --git a/src/registrationmanager.h b/src/registrationmanager.h
index d7c8af4..5e34b73 100644
--- a/src/registrationmanager.h
+++ b/src/registrationmanager.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef REGISTRATIONMANAGER_H
-#define REGISTRATIONMANAGER_H
+#ifndef JREEN_REGISTRATIONMANAGER_H
+#define JREEN_REGISTRATIONMANAGER_H
#include "dataform.h"
#include "error.h"
@@ -115,4 +115,4 @@ private:
}
-#endif // REGISTRATIONMANAGER_H
+#endif // JREEN_REGISTRATIONMANAGER_H
diff --git a/src/registrationmanager_p.h b/src/registrationmanager_p.h
index bd8400d..dcdc218 100644
--- a/src/registrationmanager_p.h
+++ b/src/registrationmanager_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef REGISTRATIONMANAGER_P_H
-#define REGISTRATIONMANAGER_P_H
+#ifndef JREEN_REGISTRATIONMANAGER_P_H
+#define JREEN_REGISTRATIONMANAGER_P_H
#include "registrationmanager.h"
#include "client.h"
@@ -87,4 +87,4 @@ public:
}
-#endif // REGISTRATIONMANAGER_P_H
+#endif // JREEN_REGISTRATIONMANAGER_P_H
diff --git a/src/saslfeature.cpp b/src/saslfeature.cpp
index 1e361a4..a0e4ebf 100644
--- a/src/saslfeature.cpp
+++ b/src/saslfeature.cpp
@@ -29,60 +29,156 @@
#include <QCoreApplication>
#include "logger.h"
-#ifdef HAVE_SIMPLESASL
-# include "../3rdparty/simplesasl/simplesasl.h"
-#endif
-
#define NS_SASL QLatin1String("urn:ietf:params:xml:ns:xmpp-sasl")
namespace Jreen
{
-SASLFeature::SASLFeature() : StreamFeature(SASL)
+#ifdef USE_GSASL
+static Gsasl *sasl_context = NULL;
+
+static int callback_function(Gsasl *context, Gsasl_session *session, Gsasl_property prop)
{
- QCA::init();
- QCA::setAppName(QCoreApplication::applicationName());
- m_depth = 0;
- m_isSupported = QCA::isSupported("sasl");
-#ifdef HAVE_SIMPLESASL
- if (!m_isSupported) {
- QCA::insertProvider(XMPP::createProviderSimpleSASL());
- m_isSupported = true;
+ StreamInfo *info = reinterpret_cast<StreamInfo*>(gsasl_session_hook_get(session));
+ if (!info) {
+ jreenDebug() << Q_FUNC_INFO << context << session << prop;
+ return GSASL_NO_CALLBACK;
+ }
+ Q_ASSERT(info);
+ switch (prop) {
+ case GSASL_SERVICE:
+ gsasl_property_set(session, GSASL_SERVICE, "xmpp");
+ return GSASL_OK;
+ case GSASL_HOSTNAME:
+ gsasl_property_set(session, GSASL_HOSTNAME, QUrl::toAce(info->jid().domain()));
+ return GSASL_OK;
+ case GSASL_REALM:
+ gsasl_property_set(session, GSASL_REALM, info->jid().domain().toUtf8());
+ return GSASL_OK;
+ case GSASL_AUTHID:
+ gsasl_property_set(session, GSASL_AUTHID, info->jid().node().toUtf8());
+ return GSASL_OK;
+// case GSASL_AUTHZID:
+// gsasl_property_set(session, GSASL_AUTHZID, info->jid().bare().toUtf8());
+// return GSASL_OK;
+ case GSASL_PASSWORD:
+ gsasl_property_set(session, GSASL_PASSWORD, info->password().toUtf8());
+ return GSASL_OK;
+ default:
+ jreenWarning() << "SASL property request unhandled:" << prop;
+ return GSASL_NO_CALLBACK;
}
+}
+
+static void destroy_sasl_context()
+{
+ gsasl_done(sasl_context);
+}
+
+#else
+
+static sasl_callback_t sasl_callbacks[] = {
+ { SASL_CB_GETREALM, NULL, NULL },
+ { SASL_CB_USER, NULL, NULL },
+ { SASL_CB_AUTHNAME, NULL, NULL },
+ { SASL_CB_PASS, NULL, NULL },
+ { SASL_CB_LIST_END, NULL, NULL }
+};
#endif
+
+static bool sasl_inited_successfully = false;
+static bool sasl_tried_to_init = false;
+
+SASLFeature::SASLFeature() : StreamFeature(SASL), m_session(NULL)
+{
+ m_depth = 0;
+ if (!sasl_tried_to_init) {
+ sasl_tried_to_init = true;
+#ifdef USE_GSASL
+ int error = gsasl_init(&sasl_context);
+ if (error != GSASL_OK) {
+ sasl_context = NULL;
+ jreenWarning() << "Cannot initialize libgsasl:" << error << ": " << gsasl_strerror (error);
+ return;
+ } else {
+ sasl_inited_successfully = true;
+ gsasl_callback_set(sasl_context, callback_function);
+ qAddPostRoutine(destroy_sasl_context);
+ }
+#else
+ int error = sasl_client_init(sasl_callbacks);
+ if (error == SASL_OK) {
+ sasl_inited_successfully = true;
+ qAddPostRoutine(sasl_done);
+ } else {
+ jreenWarning() << "Cannot initialize sasl2:" << error << ": " << sasl_errstring(error, NULL, NULL);
+ }
+#endif
+ }
}
-void SASLFeature::init()
+#ifndef USE_GSASL
+void SASLFeature::getParameters()
{
- if (!m_isSupported)
- return;
- Q_ASSERT(!m_sasl);
- m_sasl.reset(new QCA::SASL(this));
- m_sasl->setConstraints(QCA::SASL::AllowPlain);
- connect(m_sasl.data(), SIGNAL(clientStarted(bool,QByteArray)),
- this, SLOT(onClientStarted(bool,QByteArray)));
- connect(m_sasl.data(), SIGNAL(nextStep(QByteArray)),
- this, SLOT(onNextStep(QByteArray)));
- connect(m_sasl.data(), SIGNAL(needParams(QCA::SASL::Params)),
- this, SLOT(onNeedParams(QCA::SASL::Params)));
- connect(m_sasl.data(), SIGNAL(authCheck(QString,QString)),
- this, SLOT(onAuthCheck(QString,QString)));
- // Don't listen it for sure
-// connect(m_sasl.data(), SIGNAL(error()), this, SLOT(onError()));
+ const int *maybe_sff;
+ int result_ssf = 0;
+ if (SASL_OK == sasl_getprop(m_session, SASL_SSF, reinterpret_cast<const void **>(&maybe_sff)))
+ result_ssf = *maybe_sff;
+
+ const int *maybe_maxoutbuf;
+ int maxoutbuf = 0;
+ if (SASL_OK == sasl_getprop(m_session, SASL_MAXOUTBUF, reinterpret_cast<const void **>(&maybe_maxoutbuf)))
+ maxoutbuf = *maybe_maxoutbuf;
+
+ jreenWarning() << "getParameters" << result_ssf << maybe_sff << maxoutbuf << maybe_maxoutbuf;
+}
+
+void SASLFeature::interactWithInfo(sasl_interact_t *interacts)
+{
+ for (size_t i = 0; interacts[i].id != SASL_CB_LIST_END; ++i) {
+ sasl_interact *interact = &interacts[i];
+ switch (interact->id) {
+ case SASL_CB_AUTHNAME:
+ setInteractionResult(interact, m_info->jid().node().toUtf8());
+ break;
+ case SASL_CB_GETREALM:
+ setInteractionResult(interact, m_info->jid().domain().toUtf8());
+ break;
+ case SASL_CB_USER:
+// setInteractionResult(interact, m_info->jid().bare().toUtf8());
+ break;
+ case SASL_CB_PASS:
+ setInteractionResult(interact, m_info->password().toUtf8());
+ break;
+ }
+ }
}
+void SASLFeature::setInteractionResult(sasl_interact_t *interact, const QByteArray &value)
+{
+ m_interact << value;
+ interact->result = value.constData();
+}
+
+#endif
+
void SASLFeature::reset()
{
- if (!m_isSupported)
+ if (!sasl_inited_successfully)
return;
m_depth = 0;
m_mechs.clear();
- m_sasl.reset(0);
+#ifdef USE_GSASL
+ m_session.reset();
+#else
+ sasl_dispose(&m_session);
+ m_interact.clear();
+#endif
}
bool SASLFeature::canParse(const QStringRef &name, const QStringRef &uri, const QXmlStreamAttributes &attributes)
{
- if (!m_isSupported)
+ if (!sasl_inited_successfully)
return false;
Q_UNUSED(name);
Q_UNUSED(attributes);
@@ -91,7 +187,7 @@ bool SASLFeature::canParse(const QStringRef &name, const QStringRef &uri, const
void SASLFeature::handleStartElement(const QStringRef &name, const QStringRef &uri, const QXmlStreamAttributes &attributes)
{
- Q_ASSERT(m_isSupported);
+ Q_ASSERT(sasl_inited_successfully);
Q_UNUSED(uri);
Q_UNUSED(attributes);
m_depth++;
@@ -109,7 +205,7 @@ void SASLFeature::handleStartElement(const QStringRef &name, const QStringRef &u
void SASLFeature::handleEndElement(const QStringRef &name, const QStringRef &uri)
{
- Q_ASSERT(m_isSupported);
+ Q_ASSERT(sasl_inited_successfully);
Q_UNUSED(uri);
if (m_depth == 2 && m_state == AtMechanism)
m_state = AtMechanisms;
@@ -118,81 +214,166 @@ void SASLFeature::handleEndElement(const QStringRef &name, const QStringRef &uri
if (name == QLatin1String("success"))
m_info->completed(StreamInfo::Authorized | StreamInfo::ResendHeader);
if (name == QLatin1String("failure"))
- onError();
+ m_info->completed(StreamInfo::AuthorizationFailed);
}
m_depth--;
}
void SASLFeature::handleCharacterData(const QStringRef &text)
{
- Q_ASSERT(m_isSupported);
+ Q_ASSERT(sasl_inited_successfully);
if (m_state == AtMechanism) {
m_mechs.append(text.toString());
} else if (m_state == AtChallenge) {
- m_sasl->putStep(QByteArray::fromBase64(text.toString().toLatin1()));
+#ifdef USE_GSASL
+ char *result;
+ int error = gsasl_step64(m_session.data(), text.toString().toLatin1(), &result);
+ if (error == GSASL_NEEDS_MORE || error == GSASL_OK) {
+ QXmlStreamWriter *writer = m_info->writer();
+ writer->writeStartElement(QLatin1String("response"));
+ writer->writeDefaultNamespace(NS_SASL);
+ writer->writeCharacters(QString::fromLatin1(result));
+ writer->writeEndElement();
+ gsasl_free(result);
+ } else {
+ jreenWarning() << "SASL next step:" << error << ":" << gsasl_strerror(error);
+ m_info->completed(StreamInfo::AuthorizationFailed);
+ m_session.reset();
+ }
+#else
+ QByteArray input = QByteArray::fromBase64(text.toLatin1());
+ sasl_interact_t *interacts = NULL;
+ const char *result;
+ unsigned result_length;
+ int error;
+
+ do {
+
+ error = sasl_client_step(m_session,
+ input,
+ input.size(),
+ &interacts,
+ &result,
+ &result_length);
+
+ if (error == SASL_INTERACT) {
+ interactWithInfo(interacts);
+ }
+
+
+ } while (error == SASL_INTERACT);
+
+ if (error != SASL_CONTINUE && error != SASL_OK) {
+ jreenWarning() << "Cannot do step:" << error << ":" << sasl_errstring(error, NULL, NULL);
+ sasl_dispose(&m_session);
+ m_info->completed(StreamInfo::AuthorizationFailed);
+ return;
+ }
+
+ getParameters();
+
+ QXmlStreamWriter *writer = m_info->writer();
+ writer->writeStartElement(QLatin1String("response"));
+ writer->writeDefaultNamespace(NS_SASL);
+ writer->writeCharacters(QString::fromLatin1(
+ QByteArray::fromRawData(result, result_length)
+ .toBase64()));
+ writer->writeEndElement();
+#endif
}
}
bool SASLFeature::isActivatable()
{
- return m_isSupported && !m_mechs.isEmpty();
+ return sasl_inited_successfully && !m_mechs.isEmpty();
}
bool SASLFeature::activate()
{
- if (!m_isSupported)
+ if (!sasl_inited_successfully)
return false;
- init();
- m_sasl->setConstraints(QCA::SASL::AllowPlain);
- m_sasl->startClient("xmpp", QUrl::toAce(m_info->jid().domain()), m_mechs, QCA::SASL::AllowClientSendFirst);
- return true;
-}
-void SASLFeature::onClientStarted(bool init, const QByteArray &data)
-{
- QXmlStreamWriter *writer = m_info->writer();
- writer->writeStartElement(QLatin1String("auth"));
- writer->writeDefaultNamespace(NS_SASL);
- writer->writeAttribute(QLatin1String("mechanism"), m_sasl->mechanism());
- if (init)
- writer->writeCharacters(QString::fromLatin1(data.toBase64()));
- writer->writeEndElement();
-}
+#ifdef USE_GSASL
+ Gsasl_session *session;
+ QByteArray mechs = m_mechs.join(QLatin1String(":")).toLatin1();
+ const char *mech = gsasl_client_suggest_mechanism(sasl_context, mechs.data());
+ int error = gsasl_client_start(sasl_context, mech, &session);
+ if (error != GSASL_OK) {
+ jreenWarning() << "SASL Cannot initialize client:" << error << ":" << gsasl_strerror(error);
+ return false;
+ }
+ m_session.reset(session);
+ gsasl_session_hook_set(session, m_info);
-void SASLFeature::onNextStep(const QByteArray &data)
-{
- QXmlStreamWriter *writer = m_info->writer();
- writer->writeStartElement(QLatin1String("response"));
- writer->writeDefaultNamespace(NS_SASL);
- writer->writeCharacters(QString::fromLatin1(data.toBase64()));
- writer->writeEndElement();
-}
+ char *result;
+ error = gsasl_step64(session, "", &result);
+ if (error == GSASL_NEEDS_MORE || error == GSASL_OK) {
+ QXmlStreamWriter *writer = m_info->writer();
+ writer->writeStartElement(QLatin1String("auth"));
+ writer->writeDefaultNamespace(NS_SASL);
+ writer->writeAttribute(QLatin1String("mechanism"), QString::fromUtf8(mech));
+ if (result && *result)
+ writer->writeCharacters(QString::fromLatin1(result));
+ writer->writeEndElement();
+ gsasl_free(result);
+ } else {
+ jreenWarning() << "SASL activate:" << error << ":" << gsasl_strerror(error);
+ m_info->completed(StreamInfo::AuthorizationFailed);
+ m_session.reset();
+ return false;
+ }
+#else
+ int error = sasl_client_new("xmpp",
+ QUrl::toAce(m_info->jid().domain()),
+ NULL, NULL, // local and remote ip
+ NULL, // session-specific callbacks
+ 0, // security flags
+ &m_session);
-void SASLFeature::onNeedParams(const QCA::SASL::Params ¶ms)
-{
- if (params.needPassword())
- m_sasl->setPassword(QCA::SecureArray(m_info->password().toUtf8()));
- if (params.needUsername())
- m_sasl->setUsername(m_info->jid().node());
- if (params.canSendRealm())
- m_sasl->setRealm(m_info->jid().domain());
- // ???
- // Why SASL tells me that I can send Authzid?
- /*if (params.canSendAuthzid() && m_info->jid().domain() != QLatin1String("chat.facebook.com"))
- m_sasl->setAuthzid(m_info->jid().bare());*/
- m_sasl->continueAfterParams();
-}
+ if (error != SASL_OK) {
+ jreenWarning() << "Cannot initialize client:" << error
+ << ":" << sasl_errstring(error, NULL, NULL);
+ return false;
+ }
-void SASLFeature::onAuthCheck(const QString &user, const QString &authzid)
-{
- Q_UNUSED(user);
- Q_UNUSED(authzid);
- m_sasl->continueAfterAuthCheck();
-}
+ QByteArray mechlist = m_mechs.join(QLatin1String(" ")).toLatin1();
+ sasl_interact_t *interacts = NULL;
+ const char *result, *mechusing;
+ unsigned result_length;
-void SASLFeature::onError()
-{
- m_info->completed(StreamInfo::AuthorizationFailed);
- Logger::debug() << Q_FUNC_INFO << (m_sasl ? m_sasl->errorCode() : -1);
+ do {
+
+ error = sasl_client_start(m_session,
+ mechlist,
+ &interacts,
+ &result,
+ &result_length,
+ &mechusing);
+
+ if (error == SASL_INTERACT) {
+ interactWithInfo(interacts);
+ }
+
+
+ } while (error == SASL_INTERACT);
+
+ if (error != SASL_CONTINUE) {
+ jreenWarning() << "Cannot start client:" << error << ":" << sasl_errstring(error, NULL, NULL);
+ sasl_dispose(&m_session);
+ m_info->completed(StreamInfo::AuthorizationFailed);
+ return false;
+ }
+ getParameters();
+
+ QXmlStreamWriter *writer = m_info->writer();
+ writer->writeStartElement(QLatin1String("auth"));
+ writer->writeDefaultNamespace(NS_SASL);
+ writer->writeAttribute(QLatin1String("mechanism"), QString::fromUtf8(mechusing));
+ writer->writeCharacters(QString::fromLatin1(
+ QByteArray::fromRawData(result, result_length)
+ .toBase64()));
+ writer->writeEndElement();
+#endif
+ return true;
}
}
diff --git a/src/saslfeature_p.h b/src/saslfeature_p.h
index f1f05b7..d18082b 100644
--- a/src/saslfeature_p.h
+++ b/src/saslfeature_p.h
@@ -23,12 +23,22 @@
**
****************************************************************************/
-#ifndef SASLFEATURE_H
-#define SASLFEATURE_H
+#ifndef JREEN_SASLFEATURE_P_H
+#define JREEN_SASLFEATURE_P_H
#include "streamfeature_p.h"
#include <QStringList>
-#include <QtCrypto>
+
+#define USE_GSASL
+
+#ifdef USE_GSASL
+# include <gsasl.h>
+#else
+extern "C"
+{
+# include <sasl/sasl.h>
+}
+#endif
namespace Jreen
{
@@ -54,24 +64,26 @@ namespace Jreen
void handleCharacterData(const QStringRef &text);
bool isActivatable();
bool activate();
- public slots:
- void onClientStarted(bool init, const QByteArray &data);
- void onNextStep(const QByteArray &data);
- void onNeedParams(const QCA::SASL::Params ¶ms);
- void onAuthCheck(const QString &user, const QString &authzid);
- void onError();
private:
- void init();
-
- bool m_isSupported;
+#ifndef USE_GSASL
+ void getParameters();
+ void interactWithInfo(sasl_interact_t *interacts);
+ void setInteractionResult(sasl_interact_t *interact, const QByteArray &value);
+#endif
+
int m_depth;
State m_state;
QStringList m_mechs;
- struct ScopedPointerEventDeleter
+#ifdef USE_GSASL
+ struct SessionCleanup
{
- static inline void cleanup(QObject *pointer) { if (pointer) pointer->deleteLater(); }
+ static inline void cleanup(Gsasl_session *pointer) { if (pointer) gsasl_finish(pointer); }
};
- QScopedPointer<QCA::SASL, ScopedPointerEventDeleter> m_sasl;
+ QScopedPointer<Gsasl_session, SessionCleanup> m_session;
+#else
+ sasl_conn_t *m_session;
+ QList<QByteArray> m_interact;
+#endif
};
}
-#endif // SASLFEATURE_H
+#endif // JREEN_SASLFEATURE_P_H
diff --git a/src/sessionfeature.cpp b/src/sessionfeature.cpp
index b1af149..205d0d6 100644
--- a/src/sessionfeature.cpp
+++ b/src/sessionfeature.cpp
@@ -110,7 +110,7 @@ void SessionFeature::reset()
bool SessionFeature::canParse(const QStringRef &name, const QStringRef &uri, const QXmlStreamAttributes &attributes)
{
Q_UNUSED(attributes);
- Logger::debug() << Q_FUNC_INFO;
+ jreenDebug() << Q_FUNC_INFO;
return name == QLatin1String("session") && uri == NS_SESSION;
}
@@ -119,7 +119,7 @@ void SessionFeature::handleStartElement(const QStringRef &name, const QStringRef
Q_UNUSED(name);
Q_UNUSED(uri);
Q_UNUSED(attributes);
- Logger::debug() << Q_FUNC_INFO;
+ jreenDebug() << Q_FUNC_INFO;
m_hasFeature = true;
}
diff --git a/src/sessionfeature_p.h b/src/sessionfeature_p.h
index 1146054..f99d2fb 100644
--- a/src/sessionfeature_p.h
+++ b/src/sessionfeature_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef SESSIONFEATURE_P_H
-#define SESSIONFEATURE_P_H
+#ifndef JREEN_SESSIONFEATURE_P_H
+#define JREEN_SESSIONFEATURE_P_H
#include "streamfeature_p.h"
@@ -54,4 +54,4 @@ namespace Jreen
};
}
-#endif // SESSIONFEATURE_P_H
+#endif // JREEN_SESSIONFEATURE_P_H
diff --git a/src/sjdns.cpp b/src/sjdns.cpp
index f0779de..1c18e9d 100644
--- a/src/sjdns.cpp
+++ b/src/sjdns.cpp
@@ -71,7 +71,7 @@ bool SJDns::isValid()
void SJDns::doLookup(const QString &host, QObject *receiver, const char *member)
{
Q_ASSERT(m_valid);
- int id = m_qjdns->queryStart("_xmpp-client._tcp." + QUrl::toAce(host), QJDns::Srv);
+ int id = m_qjdns->queryStart(host.toLatin1(), QJDns::Srv);
Action *action = new Action(this);
action->setData(host);
connect(action, SIGNAL(triggered()), receiver, member);
@@ -92,7 +92,7 @@ void SJDns::resultsReady(int id, const QJDns::Response &results)
Action *action = m_actions.value(id, 0);
Q_ASSERT(action);
foreach(const QJDns::Record &record, results.answerRecords)
- Logger::debug() << record.name << record.port << record.priority << record.weight;
+ jreenDebug() << action->data() << record.name << record.port << record.priority << record.weight;
m_results.insert(action->data().toString(), results);
action->trigger();
}
@@ -115,18 +115,73 @@ void SJDns::error(int id, QJDns::Error e)
action->trigger();
switch (e) {
case QJDns::ErrorGeneric:
- Logger::critical() << "error Generic" << id;
+ jreenCritical() << "error Generic" << id;
break;
case QJDns::ErrorNXDomain:
- Logger::critical() << "error NXDomain" << id;
+ jreenCritical() << "error NXDomain" << id;
break;
case QJDns::ErrorTimeout:
- Logger::critical() << "error Timeout" << id;
+ jreenCritical() << "error Timeout" << id;
break;
case QJDns::ErrorConflict:
- Logger::critical() << "error Conflict" << id;
+ jreenCritical() << "error Conflict" << id;
break;
}
}
+DnsLookup::DnsLookup(QObject *parent)
+ : QObject(parent), m_type(QJDns::Any), m_response(NULL)
+{
+}
+
+DnsLookup::~DnsLookup()
+{
+}
+
+void DnsLookup::setType(DnsLookup::Type type)
+{
+ m_type = static_cast<QJDns::Type>(type);
+}
+
+void DnsLookup::setName(const QString &name)
+{
+ m_name = name;
+}
+
+void DnsLookup::lookup()
+{
+ if (SJDns::instance().isValid())
+ SJDns::instance().doLookup(m_name, this, SLOT(onResultReady()));
+ else
+ emit finished();
+}
+
+QList<DnsServiceRecord> DnsLookup::serviceRecords() const
+{
+ QList<DnsServiceRecord> result;
+ if (!m_response)
+ return result;
+
+ foreach(const QJDns::Record &qrecord, m_response->answerRecords) {
+ DnsServiceRecord record;
+ record.m_target = QUrl::fromAce(qrecord.name);
+ record.m_port = qrecord.port;
+ record.m_weight = qrecord.weight;
+ record.m_priority = qrecord.priority;
+ result << record;
+ }
+ return result;
+}
+
+DnsLookup::Error DnsLookup::error() const
+{
+ return m_response ? NoError : SomeError;
+}
+
+void DnsLookup::onResultReady()
+{
+ m_response = SJDns::instance().servers(m_name);
+ emit finished();
+}
+
}
diff --git a/src/sjdns_p.h b/src/sjdns_p.h
index 227d974..f04e8b3 100644
--- a/src/sjdns_p.h
+++ b/src/sjdns_p.h
@@ -23,10 +23,15 @@
**
****************************************************************************/
-#ifndef QJDNS_P_H
-#define QJDNS_P_H
+#ifndef JREEN_SJDNS_P_H
+#define JREEN_SJDNS_P_H
+
+#include <qglobal.h>
+
+#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
+# error Check build scripts
+#endif
-//#include <QAction>
#include <jdns/qjdns.h>
#include <QUrl>
#include "action_p.h"
@@ -34,15 +39,9 @@
namespace Jreen
{
-//class JAction;
-
-// TODO: Make DNS API shared
-
-class SJDns : QObject
+class SJDns : public QObject
{
Q_OBJECT
- QJDns *m_qjdns;
- bool m_valid;
SJDns() {}
~SJDns() {}
public:
@@ -56,10 +55,66 @@ private slots:
void published(int id);
void error(int id, QJDns::Error e);
private:
+ QJDns *m_qjdns;
+ bool m_valid;
QMap<int, Action *> m_actions;
QHash<QString, QJDns::Response> m_results;
};
+class DnsServiceRecord
+{
+public:
+ inline QString target() const { return m_target; }
+ inline quint16 port() const { return m_port; }
+ inline quint16 priority() const { return m_priority; }
+ inline quint16 weight() const { return m_weight; }
+
+ QString m_target;
+ quint16 m_port;
+ quint16 m_priority;
+ quint16 m_weight;
+};
+
+class DnsLookup : public QObject
+{
+ Q_OBJECT
+public:
+ enum Error {
+ NoError,
+ SomeError
+ };
+
+ enum Type {
+ Invalid = -1,
+ SRV = QJDns::Srv
+ };
+
+ DnsLookup(QObject *parent);
+ ~DnsLookup();
+
+ void setType(Type type);
+ void setName(const QString &name);
+ void lookup();
+
+ QList<DnsServiceRecord> serviceRecords() const;
+ Error error() const;
+
+signals:
+ void finished();
+
+private slots:
+ void onResultReady();
+
+private:
+ QJDns::Type m_type;
+ QString m_name;
+ const QJDns::Response *m_response;
+};
+
+typedef DnsLookup QDnsLookup;
+typedef DnsServiceRecord QDnsServiceRecord;
+//#endif
+
}
-#endif // QJDNS_P_H
+#endif // JREEN_SJDNS_P_H
diff --git a/src/softwareversion.h b/src/softwareversion.h
index 8147e16..42cb4e9 100644
--- a/src/softwareversion.h
+++ b/src/softwareversion.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef SOFTWAREVERSION_H
-#define SOFTWAREVERSION_H
+#ifndef JREEN_SOFTWAREVERSION_H
+#define JREEN_SOFTWAREVERSION_H
#include "stanzaextension.h"
@@ -58,4 +58,4 @@ private:
}
-#endif // SOFTWAREVERSION_H
+#endif // JREEN_SOFTWAREVERSION_H
diff --git a/src/softwareversionfactory_p.h b/src/softwareversionfactory_p.h
index 40ab864..2a573d6 100644
--- a/src/softwareversionfactory_p.h
+++ b/src/softwareversionfactory_p.h
@@ -22,8 +22,8 @@
** $JREEN_END_LICENSE$
**
****************************************************************************/
-#ifndef SOFTWAREVERSIONFACTORY_H
-#define SOFTWAREVERSIONFACTORY_H
+#ifndef JREEN_SOFTWAREVERSIONFACTORY_P_H
+#define JREEN_SOFTWAREVERSIONFACTORY_P_H
#include "softwareversion.h"
namespace Jreen {
@@ -48,4 +48,4 @@ private:
} // namespace Jreen
-#endif // SOFTWAREVERSIONFACTORY_H
+#endif // JREEN_SOFTWAREVERSIONFACTORY_P_H
diff --git a/src/src.qbs b/src/src.qbs
index 33f315c..78f0980 100644
--- a/src/src.qbs
+++ b/src/src.qbs
@@ -1,3 +1,7 @@
+import qbs
+import qbs.FileInfo
+import qbs.TextFile
+
Product {
name: "jreen"
@@ -6,8 +10,9 @@ Product {
property string versionMinor: '1'
property string versionRelease: '1'
property string version: versionMajor+'.'+versionMinor+'.'+versionRelease
+ property bool useIrisIce: false
- destination: {
+ destinationDirectory: {
if (qbs.targetOS === 'windows')
return "bin";
else
@@ -19,11 +24,7 @@ Product {
//Depends { name: "headers" }
Depends { name: "Qt.core" }
Depends { name: "Qt.network" }
- Depends { name: "qca" }
- Depends { name: "zlib" }
- Depends { name: "speex"; required: false }
- Depends { name: "windows.ws2_32"; condition: qbs.targetOS === 'windows' }
- Depends { name: "windows.advapi32"; condition: qbs.targetOS === 'windows' }
+// Depends { name: "zlib" }
//cpp.warningLevel: "all"
cpp.includePaths: [
@@ -35,25 +36,35 @@ Product {
".",
"experimental"
]
- cpp.defines: ["J_BUILD_LIBRARY"]
+ cpp.defines: [
+ "J_BUILD_LIBRARY",
+ "QT_DISABLE_DEPRECATED_BEFORE=0"
+ ]
cpp.positionIndependentCode: true
cpp.visibility: ["hidden"]
+ cpp.dynamicLibraries: ["gsasl", "z"]
Properties {
condition: useSimpleSasl
cpp.defines: outer.concat("HAVE_SIMPLESASL")
}
Properties {
+ condition: useIrisIce
+ cpp.defines: outer.concat("HAVE_IRISICE")
+ }
+ Properties {
condition: false //speex.found
cpp.defines: outer.concat("JREEN_HAVE_SPEEX=1")
}
files: [
- "*.cpp"
+ "*.cpp",
+ "*_p.h"
]
+ excludeFiles: Qt.core.versionMajor < 5 ? undefined : "sjdns*"
Group {
- //jdns files
+ condition: Qt.core.versionMajor < 5
prefix: "../3rdparty/jdns/"
files: [
"*.h",
@@ -62,7 +73,7 @@ Product {
]
}
Group {
- //ice files
+ condition: useIrisIce
prefix: "../3rdparty/icesupport/"
files: [
"*.h",
@@ -71,15 +82,6 @@ Product {
]
}
Group {
- //simple sasl files
- condition: useSimpleSasl
- prefix: "../3rdparty/simplesasl/"
- files: [
- "*.h",
- "*.cpp",
- ]
- }
- Group {
//experimental jingle support
prefix: "experimental/"
files: [
@@ -89,22 +91,39 @@ Product {
}
Group {
- //public headers
- qbs.installDir: "include/jreen"
+ files: "*.h"
+ excludeFiles: "*_p.h"
+ fileTags: ["hpp", "devheader"]
overrideTags: false
- fileTags: ["install"]
- files: [
- "*[^_][a-z].h",
- ]
}
- Group {
- //private headers
- files: "*_p.h"
+ Export {
+ Depends { name: "cpp" }
+ cpp.includePaths: [
+ product.buildDirectory + "/GeneratedFiles/jreen/include",
+ product.buildDirectory + "/GeneratedFiles/jreen/include/jreen"
+ ]
}
- ProductModule {
- Depends { name: "cpp" }
- cpp.includePaths: product.buildDirectory + "/include/vreen"
+ Rule {
+ inputs: [ "devheader" ]
+ Artifact {
+ fileTags: [ "hpp" ]
+ fileName: "GeneratedFiles/jreen/include/jreen/" + input.fileName
+ }
+
+ prepare: {
+ var cmd = new JavaScriptCommand();
+ cmd.sourceCode = function() {
+ var inputFile = new TextFile(input.fileName, TextFile.ReadOnly);
+ var file = new TextFile(output.fileName, TextFile.WriteOnly);
+ file.truncate();
+ file.write("#include \"" + input.fileName + "\"\n");
+ file.close();
+ }
+ cmd.description = "generating " + FileInfo.fileName(output.fileName);
+ cmd.highlight = "filegen";
+ return cmd;
+ }
}
}
diff --git a/src/stanza.h b/src/stanza.h
index fc7948a..f809d01 100644
--- a/src/stanza.h
+++ b/src/stanza.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef STANZA_H
-#define STANZA_H
+#ifndef JREEN_STANZA_H
+#define JREEN_STANZA_H
#include "stanzaextension.h"
#include "error.h"
@@ -84,4 +84,4 @@ protected:
}
-#endif // STANZA_H
+#endif // JREEN_STANZA_H
diff --git a/src/stanza_p.h b/src/stanza_p.h
index 0e3fda5..eb0aa04 100644
--- a/src/stanza_p.h
+++ b/src/stanza_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef STANZA_P_H
-#define STANZA_P_H
+#ifndef JREEN_STANZA_P_H
+#define JREEN_STANZA_P_H
#include <QHash>
#include <QMap>
@@ -87,7 +87,7 @@ public:
{
ref = 1;
}
- ~StanzaPrivate()
+ virtual ~StanzaPrivate()
{
qDeleteAll(tokens);
}
@@ -122,4 +122,4 @@ public:
}
-#endif // STANZA_P_H
+#endif // JREEN_STANZA_P_H
diff --git a/src/stanzaextension.h b/src/stanzaextension.h
index 842221b..525ce24 100644
--- a/src/stanzaextension.h
+++ b/src/stanzaextension.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef STANZAEXTENSION_H
-#define STANZAEXTENSION_H
+#ifndef JREEN_STANZAEXTENSION_H
+#define JREEN_STANZAEXTENSION_H
#include <QObject>
#include <QSharedPointer>
@@ -129,7 +129,7 @@ Q_INLINE_TEMPLATE T se_cast(Payload *se)
typedef QSharedPointer<Class> Ptr; \
static int staticPayloadType() \
{ \
- static QBasicAtomicInt payloadType = Q_BASIC_ATOMIC_INITIALIZER(0); \
+ static int payloadType = 0; \
if (!payloadType) { \
payloadType = Payload::registerPayloadType( #Class ); \
Class *useFullNameWithNamespaces = reinterpret_cast< ::Class* >(0); \
@@ -144,4 +144,4 @@ Q_INLINE_TEMPLATE T se_cast(Payload *se)
} \
private:
-#endif // STANZAEXTENSION_H
+#endif // JREEN_STANZAEXTENSION_H
diff --git a/src/stanzafactory.cpp b/src/stanzafactory.cpp
index 28c5ac0..2dadbba 100644
--- a/src/stanzafactory.cpp
+++ b/src/stanzafactory.cpp
@@ -139,7 +139,7 @@ void StanzaFactory::writePayloads(Stanza *stanza, QXmlStreamWriter *writer)
if(factory)
factory->serialize(extension.data(),writer);
else
- Logger::debug() << "Invalid stanza extesion" << extension->payloadType();
+ jreenDebug() << "Invalid stanza extesion" << extension->payloadType();
}
}
diff --git a/src/stanzafactory_p.h b/src/stanzafactory_p.h
index 9e15b12..53b811a 100644
--- a/src/stanzafactory_p.h
+++ b/src/stanzafactory_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef STANZAFACTORY_H
-#define STANZAFACTORY_H
+#ifndef JREEN_STANZAFACTORY_P_H
+#define JREEN_STANZAFACTORY_P_H
#include "stanza_p.h"
#include "langmap.h"
@@ -59,4 +59,4 @@ protected:
};
}
-#endif // STANZAFACTORY_H
+#endif // JREEN_STANZAFACTORY_P_H
diff --git a/src/streamfeature_p.h b/src/streamfeature_p.h
index ed3bede..1766c5a 100644
--- a/src/streamfeature_p.h
+++ b/src/streamfeature_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef STREAMFEATURE_H
-#define STREAMFEATURE_H
+#ifndef JREEN_STREAMFEATURE_P_H
+#define JREEN_STREAMFEATURE_P_H
#include <QObject>
#include "jid.h"
@@ -99,4 +99,4 @@ private:
Q_DECLARE_OPERATORS_FOR_FLAGS(Jreen::StreamInfo::CompletedFlags)
Q_DECLARE_INTERFACE(Jreen::StreamFeature, "org.qutim.Jreen.StreamFeature")
-#endif // STREAMFEATURE_H
+#endif // JREEN_STREAMFEATURE_P_H
diff --git a/src/streamprocessor.h b/src/streamprocessor.h
index 69bfe9b..6ba2126 100644
--- a/src/streamprocessor.h
+++ b/src/streamprocessor.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef STREAMPROCESSOR_H
-#define STREAMPROCESSOR_H
+#ifndef JREEN_STREAMPROCESSOR_H
+#define JREEN_STREAMPROCESSOR_H
#include "jreen.h"
#include <QObject>
@@ -49,4 +49,4 @@ public:
Q_DECLARE_INTERFACE(Jreen::StreamProcessor, "org.qutim.Jreen.StreamProcessor")
-#endif // STREAMPROCESSOR_H
+#endif // JREEN_STREAMPROCESSOR_H
diff --git a/src/subscription.h b/src/subscription.h
index 3193763..9aafbad 100644
--- a/src/subscription.h
+++ b/src/subscription.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef SUBSCRIPTION_H
-#define SUBSCRIPTION_H
+#ifndef JREEN_SUBSCRIPTION_H
+#define JREEN_SUBSCRIPTION_H
#include "stanza.h"
@@ -56,4 +56,4 @@ namespace Jreen
}
-#endif // SUBSCRIPTION_H
+#endif // JREEN_SUBSCRIPTION_H
diff --git a/src/tcpconnection.cpp b/src/tcpconnection.cpp
index adaad12..d8c72a4 100644
--- a/src/tcpconnection.cpp
+++ b/src/tcpconnection.cpp
@@ -24,18 +24,18 @@
****************************************************************************/
#include "tcpconnection.h"
-#include <QTcpSocket>
+#include <QSslSocket>
namespace Jreen
{
TcpConnection::TcpConnection(const QString &host_name, qint16 port)
- : DirectConnection(new QTcpSocket, host_name, port)
+ : DirectConnection(new QSslSocket, host_name, port)
{
}
TcpConnection::TcpConnection(const QHostAddress &address, qint16 port)
- : DirectConnection(new QTcpSocket, address, port)
+ : DirectConnection(new QSslSocket, address, port)
{
}
diff --git a/src/tcpconnection.h b/src/tcpconnection.h
index 9d5cc5d..6cc0ef7 100644
--- a/src/tcpconnection.h
+++ b/src/tcpconnection.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef TCPCONNECTION_H
-#define TCPCONNECTION_H
+#ifndef JREEN_TCPCONNECTION_H
+#define JREEN_TCPCONNECTION_H
#include "directconnection.h"
@@ -41,4 +41,4 @@ public:
}
-#endif // TCPCONNECTION_H
+#endif // JREEN_TCPCONNECTION_H
diff --git a/src/tlsdatastream.cpp b/src/tlsdatastream.cpp
deleted file mode 100644
index 7d15c18..0000000
--- a/src/tlsdatastream.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-/****************************************************************************
-**
-** Jreen
-**
-** Copyright © 2011 Ruslan Nigmatullin <euroelessar@yandex.ru>
-**
-*****************************************************************************
-**
-** $JREEN_BEGIN_LICENSE$
-** This program is free software: you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation, either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-** See the GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program. If not, see http://www.gnu.org/licenses/.
-** $JREEN_END_LICENSE$
-**
-****************************************************************************/
-
-#include "tlsdatastream_p.h"
-#include "logger.h"
-
-namespace Jreen
-{
-TLSDataStream::TLSDataStream(QCA::TLS *tls) : m_tls(tls)
-{
- connect(m_tls.data(), SIGNAL(readyRead()), SLOT(onReadyRead()));
- connect(m_tls.data(), SIGNAL(readyReadOutgoing()), SLOT(onReadyReadOutgoing()));
- m_offset = 0;
-}
-
-TLSDataStream::~TLSDataStream()
-{
-}
-
-qint64 TLSDataStream::bytesAvailable() const
-{
- return m_buffer.size() - m_offset;
-}
-
-bool TLSDataStream::open(OpenMode mode)
-{
- return QIODevice::open(mode);
-}
-
-void TLSDataStream::close()
-{
- QIODevice::close();
-}
-
-void TLSDataStream::incomingDataReady()
-{
- if (m_tls)
- m_tls.data()->writeIncoming(device()->readAll());
-}
-
-qint64 TLSDataStream::writeData(const char *data, qint64 len)
-{
- if (m_tls)
- m_tls.data()->write(QByteArray(data, len));
- return len;
-}
-
-qint64 TLSDataStream::readData(char *data, qint64 maxlen)
-{
- if (maxlen >= m_buffer.size() - m_offset) {
- int len = m_buffer.size() - m_offset;
- qMemCopy(data, m_buffer.constData() + m_offset, len);
- m_buffer.clear();
- m_offset = 0;
- return len;
- }
- qMemCopy(data, m_buffer.constData() + m_offset, maxlen);
- m_offset += maxlen;
- return maxlen;
-}
-
-void TLSDataStream::onReadyRead()
-{
- if (!m_tls)
- return;
- m_buffer.append(m_tls.data()->read());
- emit readyRead();
-}
-
-void TLSDataStream::onReadyReadOutgoing()
-{
- if (!m_tls)
- return;
- device()->write(m_tls.data()->readOutgoing());
-}
-}
diff --git a/src/tlsdatastream_p.h b/src/tlsdatastream_p.h
deleted file mode 100644
index bfc522c..0000000
--- a/src/tlsdatastream_p.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/****************************************************************************
-**
-** Jreen
-**
-** Copyright © 2011 Ruslan Nigmatullin <euroelessar@yandex.ru>
-**
-*****************************************************************************
-**
-** $JREEN_BEGIN_LICENSE$
-** This program is free software: you can redistribute it and/or modify
-** it under the terms of the GNU General Public License as published by
-** the Free Software Foundation, either version 2 of the License, or
-** (at your option) any later version.
-**
-** This program is distributed in the hope that it will be useful,
-** but WITHOUT ANY WARRANTY; without even the implied warranty of
-** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-** See the GNU General Public License for more details.
-**
-** You should have received a copy of the GNU General Public License
-** along with this program. If not, see http://www.gnu.org/licenses/.
-** $JREEN_END_LICENSE$
-**
-****************************************************************************/
-
-#ifndef TLSDATASTREAM_H
-#define TLSDATASTREAM_H
-
-#include "datastream.h"
-#include <QtCrypto>
-
-namespace Jreen
-{
- class TLSDataStream : public DataStream
- {
- Q_OBJECT
- public:
- TLSDataStream(QCA::TLS *tls);
- ~TLSDataStream();
-
- qint64 bytesAvailable() const;
- bool open(OpenMode mode);
- void close();
- protected:
- void incomingDataReady();
- qint64 writeData(const char *data, qint64 len);
- qint64 readData(char *data, qint64 maxlen);
- private slots:
- void onReadyRead();
- void onReadyReadOutgoing();
- private:
- QWeakPointer<QCA::TLS> m_tls;
- QByteArray m_buffer;
- int m_offset;
- };
-}
-
-#endif // TLSDATASTREAM_H
diff --git a/src/tlsfeature.cpp b/src/tlsfeature.cpp
index a73d76e..6470cce 100644
--- a/src/tlsfeature.cpp
+++ b/src/tlsfeature.cpp
@@ -2,7 +2,7 @@
**
** Jreen
**
-** Copyright © 2011 Ruslan Nigmatullin <euroelessar@yandex.ru>
+** Copyright © 2013 Ruslan Nigmatullin <euroelessar@yandex.ru>
** Copyright © 2011 Aleksey Sidorov <gorthauer87@yandex.ru>
**
*****************************************************************************
@@ -25,11 +25,12 @@
****************************************************************************/
#include "tlsfeature_p.h"
-#include "tlsdatastream_p.h"
#include "client.h"
-#include <QXmlStreamWriter>
#include "logger.h"
+#include "directconnection.h"
+#include <QXmlStreamWriter>
#include <QCoreApplication>
+#include <QSslSocket>
#define NS_TLS QLatin1String("urn:ietf:params:xml:ns:xmpp-tls")
@@ -38,24 +39,14 @@ namespace Jreen
TLSFeature::TLSFeature() : StreamFeature(SecurityLayer)
{
- QCA::init();
- QCA::setAppName(QCoreApplication::applicationName());
m_required = false;
m_available = false;
- m_hasTls = QCA::isSupported("tls");
- if (!m_hasTls)
- Logger::warning() << "Jreen: TLS is not provided by QCA";
+ if (!QSslSocket::supportsSsl())
+ jreenWarning() << "Jreen: TLS is not provided by QtNetwork";
}
void TLSFeature::init()
{
- Q_ASSERT(m_hasTls);
- Q_ASSERT(!m_tls);
- m_tls.reset(new QCA::TLS(this));
- m_tls->setTrustedCertificates(QCA::systemStore());
- connect(m_tls.data(), SIGNAL(handshaken()), SLOT(onHandshaken()));
- connect(m_tls.data(), SIGNAL(closed()), SLOT(onClosed()));
- connect(m_tls.data(), SIGNAL(error()), SLOT(onError()));
}
void TLSFeature::setStreamInfo(StreamInfo *info)
@@ -75,14 +66,18 @@ void TLSFeature::reset()
bool TLSFeature::canParse(const QStringRef &name, const QStringRef &uri, const QXmlStreamAttributes &attributes)
{
- // All other methods shouldn't be called is canParse returnes false
- if (!m_hasTls)
- return false;
Q_UNUSED(uri);
Q_UNUSED(name);
Q_UNUSED(attributes);
- Logger::debug() << Q_FUNC_INFO << name << uri;
- return uri == NS_TLS;
+ // All other methods shouldn't be called is canParse returnes false
+ if (!QSslSocket::supportsSsl())
+ return false;
+
+ if (DirectConnection *connection = qobject_cast<DirectConnection*>(m_client->connection())) {
+ if (qobject_cast<QSslSocket*>(connection->socket()))
+ return uri == NS_TLS;
+ }
+ return false;
}
void TLSFeature::handleStartElement(const QStringRef &name, const QStringRef &uri, const QXmlStreamAttributes &attributes)
@@ -93,58 +88,37 @@ void TLSFeature::handleStartElement(const QStringRef &name, const QStringRef &ur
m_available = true;
else if (name == QLatin1String("required"))
m_required = true;
- // Q_UNUSED(uri);
- // m_depth++;
- // Logger::debug() << Q_FUNC_INFO << m_depth << name;
- // if (m_depth == 1) {
- // if (name == QLatin1String("mechanisms")) {
- // m_state = AtMechanisms;
- // m_mechs.clear();
- // } else if (name == QLatin1String("challenge")) {
- // m_state = AtChallenge;
- // }
- // } else if (m_depth == 2 && name == QLatin1String("mechanism")) {
- // m_state = AtMechanism;
- // }
}
void TLSFeature::handleEndElement(const QStringRef &name, const QStringRef &uri)
{
Q_UNUSED(uri);
if (name == QLatin1String("proceed")) {
- Logger::debug() << Q_FUNC_INFO;
- m_info->addDataStream(new TLSDataStream(m_tls.data()));
- m_tls->startClient(m_info->jid().domain());
+ DirectConnection *connection = qobject_cast<DirectConnection*>(m_client->connection());
+ Q_ASSERT(connection);
+ QSslSocket *socket = qobject_cast<QSslSocket*>(connection->socket());
+ Q_ASSERT(socket);
+ m_socket = socket;
+
+ socket->setProtocol(QSsl::TlsV1);
+ socket->setPeerVerifyMode(QSslSocket::VerifyNone);
+
+ connect(socket, SIGNAL(encrypted()), this, SLOT(onHandshaken()));
+ connect(socket, SIGNAL(disconnected()), this, SLOT(onDisconnected()));
+ connect(socket, SIGNAL(peerVerifyError(QSslError)), SLOT(onPeerVerifyError(QSslError)));
+
+ socket->startClientEncryption();
}
- // if (m_depth == 2 && m_state == AtMechanism)
- // m_state = AtMechanisms;
- // else if (m_depth == 1) {
- // Logger::debug() << Q_FUNC_INFO << m_mechs;
- // m_state = AtStart;
- // if (name == QLatin1String("success"))
- // m_info->completed(StreamInfo::Authorized);
- // }
- // m_depth--;
}
void TLSFeature::handleCharacterData(const QStringRef &text)
{
Q_UNUSED(text);
- // if (m_state == AtMechanism) {
- // Logger::debug() << Q_FUNC_INFO << "mechanism" << text;
- // m_mechs.append(text.toString());
- // } else if (m_state == AtChallenge) {
- // Logger::debug() << Q_FUNC_INFO << "challenge" << text;
- // // if (m_firstStep)
- // // m_tls->putServerFirstStep("DIGEST-MD5");
- // m_tls->putStep(QByteArray::fromBase64(text.toString().toLatin1()));
- // m_firstStep = false;
- // }
}
bool TLSFeature::isActivatable()
{
- return m_hasTls && m_available;
+ return QSslSocket::supportsSsl() && m_available;
}
bool TLSFeature::activate()
@@ -154,39 +128,26 @@ bool TLSFeature::activate()
writer->writeEmptyElement(QLatin1String("starttls"));
writer->writeDefaultNamespace(NS_TLS);
writer->writeCharacters(QString());
- // Logger::debug() << Q_FUNC_INFO << m_info->password();
- // m_tls->setPassword(QCA::SecureArray(m_info->password().toUtf8()));
- // m_tls->setUsername(m_info->jid().node());
- // m_tls->setRealm(m_info->jid().domain());
- // m_tls->setAuthzid(m_info->jid().bare());
- // m_tls->startClient("xmpp", QUrl::toAce(m_info->jid().domain()), m_mechs, QCA::TLS::AllowClientSendFirst);
return true;
}
void TLSFeature::onHandshaken()
{
- Logger::debug() << Q_FUNC_INFO;
- m_tls->continueAfterStep();
m_info->completed();
}
-void TLSFeature::onClosed()
-{
- Logger::debug() << Q_FUNC_INFO;
- reset();
-}
-
-void TLSFeature::onError()
+void TLSFeature::onPeerVerifyError(const QSslError &error)
{
- Logger::debug() << Q_FUNC_INFO;
- reset();
- m_client->disconnectFromServer(true);
+ QSslSocket *socket = qobject_cast<QSslSocket*>(sender());
+ Q_ASSERT(socket);
+ socket->ignoreSslErrors(QList<QSslError>() << error);
}
void TLSFeature::onDisconnected()
{
- m_tls.reset(0);
- Logger::debug() << Q_FUNC_INFO;
+ if (m_socket)
+ disconnect(m_socket, 0, this, 0);
+ m_socket = NULL;
}
} //namespace Jreen
diff --git a/src/tlsfeature_p.h b/src/tlsfeature_p.h
index cbacf43..89e22d5 100644
--- a/src/tlsfeature_p.h
+++ b/src/tlsfeature_p.h
@@ -2,7 +2,7 @@
**
** Jreen
**
-** Copyright © 2011 Ruslan Nigmatullin <euroelessar@yandex.ru>
+** Copyright © 2013 Ruslan Nigmatullin <euroelessar@yandex.ru>
**
*****************************************************************************
**
@@ -23,11 +23,14 @@
**
****************************************************************************/
-#ifndef TLSFEATURE_H
-#define TLSFEATURE_H
+#ifndef JREEN_TLSFEATURE_P_H
+#define JREEN_TLSFEATURE_P_H
#include "streamfeature_p.h"
-#include <QtCrypto>
+#include <QPointer>
+
+class QSslError;
+class QSslSocket;
namespace Jreen
{
@@ -43,7 +46,6 @@ public:
};
TLSFeature();
int priority() { return 10; }
-// void setStreamInfo(StreamInfo *info);
void reset();
bool canParse(const QStringRef &name, const QStringRef &uri, const QXmlStreamAttributes &attributes);
void handleStartElement(const QStringRef &name, const QStringRef &uri, const QXmlStreamAttributes &attributes);
@@ -54,21 +56,15 @@ public:
bool activate();
private slots:
void onHandshaken();
- void onClosed();
- void onError();
+ void onPeerVerifyError(const QSslError &error);
void onDisconnected();
private:
void init();
-
- struct ScopedPointerEventDeleter
- {
- static inline void cleanup(QObject *pointer) { if (pointer) pointer->deleteLater(); }
- };
- QScopedPointer<QCA::TLS, ScopedPointerEventDeleter> m_tls;
- bool m_hasTls;
+
+ QPointer<QSslSocket> m_socket;
bool m_required;
bool m_available;
};
}
-#endif // TLSFEATURE_H
+#endif // JREEN_TLSFEATURE_P_H
diff --git a/src/tune.h b/src/tune.h
index 6d720fa..7207e62 100644
--- a/src/tune.h
+++ b/src/tune.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef TUNE_H
-#define TUNE_H
+#ifndef JREEN_TUNE_H
+#define JREEN_TUNE_H
#include "stanzaextension.h"
@@ -58,4 +58,4 @@ namespace Jreen
};
}
-#endif // TUNE_H
+#endif // JREEN_TUNE_H
diff --git a/src/tunefactory_p.h b/src/tunefactory_p.h
index e2e0bba..80dd17f 100644
--- a/src/tunefactory_p.h
+++ b/src/tunefactory_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef TUNEFACTORY_P_H
-#define TUNEFACTORY_P_H
+#ifndef JREEN_TUNEFACTORY_P_H
+#define JREEN_TUNEFACTORY_P_H
#include "tune.h"
#include <QVector>
@@ -49,4 +49,4 @@ namespace Jreen
};
}
-#endif // TUNEFACTORY_P_H
+#endif // JREEN_TUNEFACTORY_P_H
diff --git a/src/udpconnection.h b/src/udpconnection.h
index d61e2a0..d6acaf7 100644
--- a/src/udpconnection.h
+++ b/src/udpconnection.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef UDPCONNECTION_H
-#define UDPCONNECTION_H
+#ifndef JREEN_UDPCONNECTION_H
+#define JREEN_UDPCONNECTION_H
#include "directconnection.h"
@@ -41,4 +41,4 @@ public:
}
-#endif // UDPCONNECTION_H
+#endif // JREEN_UDPCONNECTION_H
diff --git a/src/util.h b/src/util.h
index 05a782a..bfd117b 100644
--- a/src/util.h
+++ b/src/util.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef UTIL_H
-#define UTIL_H
+#ifndef JREEN_UTIL_H
+#define JREEN_UTIL_H
#include "jreen.h"
#include <QDateTime>
@@ -67,4 +67,4 @@ inline void writeTextElement(QXmlStreamWriter *writer,
}
-#endif // UTIL_H
+#endif // JREEN_UTIL_H
diff --git a/src/vcard.h b/src/vcard.h
index 9732a9f..0b1d616 100644
--- a/src/vcard.h
+++ b/src/vcard.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef VCARD_H
-#define VCARD_H
+#ifndef JREEN_VCARD_H
+#define JREEN_VCARD_H
#include "stanzaextension.h"
#include "nickname.h"
#include <QDateTime>
@@ -407,4 +407,4 @@ private:
Q_DECLARE_OPERATORS_FOR_FLAGS(Jreen::VCard::Telephone::Types)
-#endif // VCARD_H
+#endif // JREEN_VCARD_H
diff --git a/src/vcard_p.h b/src/vcard_p.h
index 8bbaf97..12856ce 100644
--- a/src/vcard_p.h
+++ b/src/vcard_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef VCARD_P_H
-#define VCARD_P_H
+#ifndef JREEN_VCARD_P_H
+#define JREEN_VCARD_P_H
#include "vcard.h"
#include "jid.h"
@@ -147,4 +147,4 @@ public:
};
}
-#endif // VCARD_P_H
+#endif // JREEN_VCARD_P_H
diff --git a/src/vcardfactory_p.h b/src/vcardfactory_p.h
index 0501e35..8e9100f 100644
--- a/src/vcardfactory_p.h
+++ b/src/vcardfactory_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef VCARDFACTORY_P_H
-#define VCARDFACTORY_P_H
+#ifndef JREEN_VCARDFACTORY_P_H
+#define JREEN_VCARDFACTORY_P_H
#include "vcard_p.h"
#include "stanzaextension.h"
#include <QPair>
@@ -127,4 +127,4 @@ private:
} // namespace Jreen
-#endif // VCARDFACTORY_P_H
+#endif // JREEN_VCARDFACTORY_P_H
diff --git a/src/vcardmanager.cpp b/src/vcardmanager.cpp
index 29a59e5..ac03c0d 100644
--- a/src/vcardmanager.cpp
+++ b/src/vcardmanager.cpp
@@ -28,6 +28,7 @@
#include "iq.h"
#include "client.h"
#include "vcardupdate.h"
+#include <QPointer>
namespace Jreen
{
@@ -102,7 +103,7 @@ public:
void _q_received(const Jreen::IQ &iq);
VCardReply *q_ptr;
- QWeakPointer<VCardManager> manager;
+ QPointer<VCardManager> manager;
JID jid;
VCard::Ptr vcard;
Error::Ptr error;
diff --git a/src/vcardmanager.h b/src/vcardmanager.h
index a2577e1..f9e22cd 100644
--- a/src/vcardmanager.h
+++ b/src/vcardmanager.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef VCARDMANAGER_H
-#define VCARDMANAGER_H
+#ifndef JREEN_VCARDMANAGER_H
+#define JREEN_VCARDMANAGER_H
#include "vcard.h"
#include "vcardupdate.h"
@@ -86,4 +86,4 @@ private:
};
}
-#endif // VCARDMANAGER_H
+#endif // JREEN_VCARDMANAGER_H
diff --git a/src/vcardupdate.h b/src/vcardupdate.h
index 5272d74..c69fccd 100644
--- a/src/vcardupdate.h
+++ b/src/vcardupdate.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef VCARDUPDATE_H
-#define VCARDUPDATE_H
+#ifndef JREEN_VCARDUPDATE_H
+#define JREEN_VCARDUPDATE_H
#include "stanzaextension.h"
namespace Jreen
@@ -54,4 +54,4 @@ private:
} // namespace Jreen
-#endif // VCARDUPDATE_H
+#endif // JREEN_VCARDUPDATE_H
diff --git a/src/vcardupdatefactory_p.h b/src/vcardupdatefactory_p.h
index 093fff2..bf7d7c9 100644
--- a/src/vcardupdatefactory_p.h
+++ b/src/vcardupdatefactory_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef VCARDUPDATEFACTORY_P_H
-#define VCARDUPDATEFACTORY_P_H
+#ifndef JREEN_VCARDUPDATEFACTORY_P_H
+#define JREEN_VCARDUPDATEFACTORY_P_H
#include "vcardupdate.h"
namespace Jreen {
@@ -50,4 +50,4 @@ private:
} // namespace Jreen
-#endif // VCARDUPDATEFACTORY_P_H
+#endif // JREEN_VCARDUPDATEFACTORY_P_H
diff --git a/src/xmlentity_p.h b/src/xmlentity_p.h
index a955fa1..6385e27 100644
--- a/src/xmlentity_p.h
+++ b/src/xmlentity_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef XMLENTITY_H
-#define XMLENTITY_H
+#ifndef JREEN_XMLENTITY_P_H
+#define JREEN_XMLENTITY_P_H
#include "jreen.h"
#include <QSharedPointer>
@@ -59,7 +59,7 @@ namespace Jreen
typedef QSharedPointer<Class> Ptr; \
static int staticXmlEntityType() \
{ \
- static QBasicAtomicInt entityType = Q_BASIC_ATOMIC_INITIALIZER(0); \
+ static int entityType = 0; \
if (!entityType) { \
entityType = XmlEntity::registerXmlEntityType( #Class ); \
Class *useFullNameWithNamespaces = reinterpret_cast< ::Class* >(0); \
@@ -74,4 +74,4 @@ namespace Jreen
} \
private:
-#endif // XMLENTITY_H
+#endif // JREEN_XMLENTITY_P_H
diff --git a/src/zlibcompressionfeature_p.h b/src/zlibcompressionfeature_p.h
index c0f2df8..2bafeb0 100644
--- a/src/zlibcompressionfeature_p.h
+++ b/src/zlibcompressionfeature_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef ZLIBCOMPRESSIONFEATURE_H
-#define ZLIBCOMPRESSIONFEATURE_H
+#ifndef JREEN_ZLIBCOMPRESSIONFEATURE_P_H
+#define JREEN_ZLIBCOMPRESSIONFEATURE_P_H
#include "streamfeature_p.h"
#include <QStringList>
@@ -56,4 +56,4 @@ namespace Jreen
};
}
-#endif // ZLIBCOMPRESSIONFEATURE_H
+#endif // JREEN_ZLIBCOMPRESSIONFEATURE_P_H
diff --git a/src/zlibdatastream.cpp b/src/zlibdatastream.cpp
index fc26870..8e2245a 100644
--- a/src/zlibdatastream.cpp
+++ b/src/zlibdatastream.cpp
@@ -129,7 +129,7 @@ qint64 ZLibDataStream::readData(char *data, qint64 maxlen)
{
Q_D(ZLibDataStream);
int len = qMin<int>(maxlen, d->len);
- qMemCopy(data, d->buffer.data() + d->offset, len);
+ memcpy(data, d->buffer.data() + d->offset, len);
if (maxlen < d->len) {
d->len -= maxlen;
d->offset += maxlen;
diff --git a/src/zlibdatastream_p.h b/src/zlibdatastream_p.h
index 9728768..cc2c80a 100644
--- a/src/zlibdatastream_p.h
+++ b/src/zlibdatastream_p.h
@@ -23,8 +23,8 @@
**
****************************************************************************/
-#ifndef ZLIBDATASTREAM_H
-#define ZLIBDATASTREAM_H
+#ifndef JREEN_ZLIBDATASTREAM_P_H
+#define JREEN_ZLIBDATASTREAM_P_H
#include "datastream.h"
@@ -51,4 +51,4 @@ namespace Jreen
};
}
-#endif // ZLIBDATASTREAM_H
+#endif // JREEN_ZLIBDATASTREAM_P_H