Branch data Line data Source code
1 : : /**
2 : : * \file
3 : : *
4 : : * \author Georg Hopp
5 : : *
6 : : * \copyright
7 : : * Copyright © 2012 Georg Hopp
8 : : *
9 : : * This program is free software: you can redistribute it and/or modify
10 : : * it under the terms of the GNU General Public License as published by
11 : : * the Free Software Foundation, either version 3 of the License, or
12 : : * (at your option) any later version.
13 : : *
14 : : * This program is distributed in the hope that it will be useful,
15 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 : : * GNU General Public License for more details.
18 : : *
19 : : * You should have received a copy of the GNU General Public License
20 : : * along with this program. If not, see <http://www.gnu.org/licenses/>.
21 : : */
22 : :
23 : : #include <errno.h> // for errno
24 : : #include <unistd.h>
25 : : #include <fcntl.h>
26 : :
27 : : #include "socket.h"
28 : : #include "class.h"
29 : : #include "logger.h"
30 : :
31 : : Sock
32 : 3 : socketAccept(Sock this, char (*remoteAddr)[16])
33 : : {
34 : : Sock sock; // Socket for client
35 : : unsigned int len; // Length of client address data structure
36 : :
37 : : // Set the size of the in-out parameter
38 : 3 : len = sizeof(this->addr);
39 : :
40 : 3 : sock = new(Sock, this->log, -1);
41 : :
42 : : // Wait for a client to connect
43 : 3 : sock->handle = accept(this->handle, (struct sockaddr *) &(sock->addr), &len);
44 : 3 : if (-1 == sock->handle) {
45 : 1 : loggerLog(this->log, LOGGER_WARNING,
46 : 1 : "error accepting connection: %s", strerror(errno));
47 : : } else {
48 : 2 : strcpy(*remoteAddr, inet_ntoa((sock->addr).sin_addr));
49 : :
50 : : //loggerLog(this->log, LOGGER_INFO,
51 : : // "handling client %s\n", inet_ntoa((sock->addr).sin_addr));
52 : : }
53 : :
54 : 3 : return sock;
55 : : }
56 : :
57 : : // vim: set ts=4 sw=4:
|