webrtc_m130/p2p/base/stun_server.h
Tommi 278b19da38 Rename variables of type StunMessage* from request to message.
This is just to reduce confusion since StunMessage and StunRequest
instances are frequently used together and message objects are often
configured from within request objects (which makes the name confusing).

Bug: none
Change-Id: I8bf5e774a5149239dd3023817614d411633bf583
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/258484
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Auto-Submit: Tomas Gunnarsson <tommi@webrtc.org>
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36533}
2022-04-12 12:52:08 +00:00

72 lines
2.4 KiB
C++

/*
* Copyright 2004 The WebRTC Project Authors. All rights reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#ifndef P2P_BASE_STUN_SERVER_H_
#define P2P_BASE_STUN_SERVER_H_
#include <stddef.h>
#include <stdint.h>
#include <memory>
#include "api/transport/stun.h"
#include "rtc_base/async_packet_socket.h"
#include "rtc_base/async_udp_socket.h"
#include "rtc_base/socket_address.h"
#include "rtc_base/third_party/sigslot/sigslot.h"
namespace cricket {
const int STUN_SERVER_PORT = 3478;
class StunServer : public sigslot::has_slots<> {
public:
// Creates a STUN server, which will listen on the given socket.
explicit StunServer(rtc::AsyncUDPSocket* socket);
// Removes the STUN server from the socket and deletes the socket.
~StunServer() override;
protected:
// Slot for Socket.PacketRead:
void OnPacket(rtc::AsyncPacketSocket* socket,
const char* buf,
size_t size,
const rtc::SocketAddress& remote_addr,
const int64_t& packet_time_us);
// Handlers for the different types of STUN/TURN requests:
virtual void OnBindingRequest(StunMessage* msg,
const rtc::SocketAddress& addr);
void OnAllocateRequest(StunMessage* msg, const rtc::SocketAddress& addr);
void OnSharedSecretRequest(StunMessage* msg, const rtc::SocketAddress& addr);
void OnSendRequest(StunMessage* msg, const rtc::SocketAddress& addr);
// Sends an error response to the given message back to the user.
void SendErrorResponse(const StunMessage& msg,
const rtc::SocketAddress& addr,
int error_code,
const char* error_desc);
// Sends the given message to the appropriate destination.
void SendResponse(const StunMessage& msg, const rtc::SocketAddress& addr);
// A helper method to compose a STUN binding response.
void GetStunBindResponse(StunMessage* message,
const rtc::SocketAddress& remote_addr,
StunMessage* response) const;
private:
std::unique_ptr<rtc::AsyncUDPSocket> socket_;
};
} // namespace cricket
#endif // P2P_BASE_STUN_SERVER_H_