diff options
| author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2014-10-21 14:26:10 -0700 |
|---|---|---|
| committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2014-10-21 14:26:10 -0700 |
| commit | 128a13107023075a8167bfdfb8ed9d404bd1dccd (patch) | |
| tree | a217f9837bd07daf2722d5e00c5b40ebe29c1220 /node/UdpSocket.cpp | |
| parent | 6bc9a938cfde3ff6caabc0a38f6e6d4650e3c384 (diff) | |
| download | infinitytier-128a13107023075a8167bfdfb8ed9d404bd1dccd.tar.gz infinitytier-128a13107023075a8167bfdfb8ed9d404bd1dccd.zip | |
About halfway there in refactoring to support pluggable SocketManager.
Diffstat (limited to 'node/UdpSocket.cpp')
| -rw-r--r-- | node/UdpSocket.cpp | 107 |
1 files changed, 0 insertions, 107 deletions
diff --git a/node/UdpSocket.cpp b/node/UdpSocket.cpp deleted file mode 100644 index 1f699027..00000000 --- a/node/UdpSocket.cpp +++ /dev/null @@ -1,107 +0,0 @@ -/* - * ZeroTier One - Global Peer to Peer Ethernet - * Copyright (C) 2011-2014 ZeroTier Networks LLC - * - * 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 3 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/>. - * - * -- - * - * ZeroTier may be used and distributed under the terms of the GPLv3, which - * are available at: http://www.gnu.org/licenses/gpl-3.0.html - * - * If you would like to embed ZeroTier into a commercial application or - * redistribute it in a modified binary form, please contact ZeroTier Networks - * LLC. Start here: http://www.zerotier.com/ - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <fcntl.h> -#include <time.h> -#include <errno.h> -#include <sys/types.h> - -#include "Constants.hpp" -#include "UdpSocket.hpp" -#include "SocketManager.hpp" - -#ifdef __WINDOWS__ -#include <WinSock2.h> -#include <WS2tcpip.h> -#include <Windows.h> -#else -#include <unistd.h> -#include <sys/socket.h> -#include <arpa/inet.h> -#include <signal.h> -#endif - -// Uncomment to intentionally break UDP in order to test TCP fallback -// This is here so I can commit it to the repo and drive myself insane. -//#define ZT_BREAK_UDP - -namespace ZeroTier { - -UdpSocket::~UdpSocket() -{ -#ifdef __WINDOWS__ - ::closesocket(_sock); -#else - ::close(_sock); -#endif -} - -bool UdpSocket::send(const InetAddress &to,const void *msg,unsigned int msglen) -{ -#ifdef ZT_BREAK_UDP - return true; -#else - if (to.isV6()) { -#ifdef __WINDOWS__ - return ((int)sendto(_sock,(const char *)msg,msglen,0,to.saddr(),to.saddrLen()) == (int)msglen); -#else - return ((int)sendto(_sock,msg,msglen,0,to.saddr(),to.saddrLen()) == (int)msglen); -#endif - } else { -#ifdef __WINDOWS__ - return ((int)sendto(_sock,(const char *)msg,msglen,0,to.saddr(),to.saddrLen()) == (int)msglen); -#else - return ((int)sendto(_sock,msg,msglen,0,to.saddr(),to.saddrLen()) == (int)msglen); -#endif - } -#endif -} - -bool UdpSocket::notifyAvailableForRead(const SharedPtr<Socket> &self,SocketManager *sm) -{ - Buffer<ZT_SOCKET_MAX_MESSAGE_LEN> buf; - InetAddress from; - socklen_t salen = from.saddrSpaceLen(); - int n = (int)recvfrom(_sock,(char *)(buf.data()),ZT_SOCKET_MAX_MESSAGE_LEN,0,from.saddr(),&salen); - if (n > 0) { - buf.setSize((unsigned int)n); -#ifndef ZT_BREAK_UDP - sm->handleReceivedPacket(self,from,buf); -#endif - } - return true; -} - -bool UdpSocket::notifyAvailableForWrite(const SharedPtr<Socket> &self,SocketManager *sm) -{ - return true; -} - -} // namespace ZeroTier |
