Files
@ 0729d364ca25
Branch filter:
Location: libtransport.git/include/transport/WebSocketClient.h - annotation
0729d364ca25
2.8 KiB
text/plain
Fix double free in DummyConnectionServer
Do not create shared ptr from this as this lead to double free in
UserRegistryTest::login test. Shared ptr was needed to set event
owner in acceptConnection, actually it is never needed as events
are never filtered by owner. Thus it was removed and there is no
need to create shared ptr from this.
Do not create shared ptr from this as this lead to double free in
UserRegistryTest::login test. Shared ptr was needed to set event
owner in acceptConnection, actually it is never needed as events
are never filtered by owner. Thus it was removed and there is no
need to create shared ptr from this.
3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e fedd9216b2c9 6d2f8c192761 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 4353dbef025d 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 00c5273fbb13 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 6cfc7e743431 737aa148dada 6cfc7e743431 3fb55b243e0e 3fb55b243e0e 6d2f8c192761 3fb55b243e0e f592dc0ef3a6 3fb55b243e0e fedd9216b2c9 fedd9216b2c9 3fb55b243e0e 3fb55b243e0e 6d2f8c192761 6d2f8c192761 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e fedd9216b2c9 4353dbef025d 3fb55b243e0e 3fb55b243e0e 3fb55b243e0e | /**
* Spectrum 2 Slack Frontend
*
* Copyright (C) 2015, Jan Kaluza <hanzz.k@gmail.com>
*
* 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, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
*/
#pragma once
#include <Swiften/Network/TLSConnectionFactory.h>
#include <Swiften/Network/HostAddressPort.h>
#include <Swiften/TLS/PlatformTLSFactories.h>
#include <Swiften/Network/DomainNameResolveError.h>
#include <Swiften/Network/DomainNameAddressQuery.h>
#include <Swiften/Network/DomainNameResolver.h>
#include <Swiften/Network/HostAddress.h>
#include <Swiften/Network/Connection.h>
#include <Swiften/Base/SafeByteArray.h>
#include "Swiften/Version.h"
#include "Swiften/Network/Timer.h"
#include "Swiften/SwiftenCompat.h"
#define HAVE_SWIFTEN_3 (SWIFTEN_VERSION >= 0x030000)
#if HAVE_SWIFTEN_3
#include <Swiften/TLS/TLSOptions.h>
#endif
#include <string>
#include <algorithm>
#include <map>
#include <boost/signal.hpp>
namespace Transport {
class Component;
class WebSocketClient {
public:
WebSocketClient(Component *component, const std::string &user);
virtual ~WebSocketClient();
void connectServer(const std::string &u);
void disconnectServer();
void write(const std::string &data);
boost::signal<void (const std::string &payload)> onPayloadReceived;
boost::signal<void ()> onWebSocketConnected;
boost::signal<void (const boost::optional<Swift::Connection::Error> &error)> onWebSocketDisconnected;
private:
void handleDNSResult(const std::vector<Swift::HostAddress>&, boost::optional<Swift::DomainNameResolveError>);
void handleDataRead(SWIFTEN_SHRPTR_NAMESPACE::shared_ptr<Swift::SafeByteArray> data);
void handleConnected(bool error);
void handleDisconnected(const boost::optional<Swift::Connection::Error> &error);
void connectServer();
private:
Component *m_component;
SWIFTEN_SHRPTR_NAMESPACE::shared_ptr<Swift::DomainNameAddressQuery> m_dnsQuery;
SWIFTEN_SHRPTR_NAMESPACE::shared_ptr<Swift::Connection> m_conn;
Swift::TLSConnectionFactory *m_tlsConnectionFactory;
Swift::PlatformTLSFactories *m_tlsFactory;
std::string m_host;
std::string m_path;
std::string m_buffer;
bool m_upgraded;
Swift::Timer::ref m_reconnectTimer;
std::string m_user;
};
}
|