/** * \file * * \author Georg Hopp * * \copyright * Copyright © 2014 Georg Hopp * * 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 . */ #define _POSIX_SOURCE 1 #include // for atoi() and exit() #include // for errno #include #include #include #include #include #include #include #include #include "tr/socket.h" #include "tr/logger.h" TR_TcpSocket TR_socketAccept(TR_TcpSocket this) { TR_Socket remote = TR_new(TR_TcpSocket, TR_socketLog((TR_Socket)this), NULL, 0, 0); remote->addrlen = ((TR_Socket)this)->addrlen; remote->handle = accept( TR_socketHandle((TR_Socket)this), &(remote->addr.info), &(remote->addrlen)); if (-1 == remote->handle) { TR_delete(remote); } else { TR_socketAddrIpStr(remote, remote->host, TR_MAX_HOST); remote->port = TR_socketAddrPort(remote); remote->type = TR_socketType((TR_Socket)this); remote->flags = TR_socketFlags((TR_Socket)this); remote->fin_state = TR_FIN_NO; } return (TR_TcpSocket)remote; } // vim: set ts=4 sw=4: