@@ -33,6 +33,7 @@ HTTPConnection::~HTTPConnection() {
33
33
int HTTPConnection::initialize (int serverSocketID, HTTPHeaders *defaultHeaders) {
34
34
if (_connectionState == STATE_UNDEFINED) {
35
35
_defaultHeaders = defaultHeaders;
36
+ _addrLen = sizeof (_sockAddr);
36
37
_socket = accept (serverSocketID, (struct sockaddr * )&_sockAddr, &_addrLen);
37
38
38
39
// Build up SSL Connection context if the socket has been created successfully
@@ -42,11 +43,11 @@ int HTTPConnection::initialize(int serverSocketID, HTTPHeaders *defaultHeaders)
42
43
_httpHeaders = new HTTPHeaders ();
43
44
refreshTimeout ();
44
45
return _socket;
45
-
46
46
}
47
47
48
48
HTTPS_LOGE (" Could not accept() new connection" );
49
49
50
+ _addrLen = 0 ;
50
51
_connectionState = STATE_ERROR;
51
52
_clientState = CSTATE_ACTIVE;
52
53
@@ -58,6 +59,16 @@ int HTTPConnection::initialize(int serverSocketID, HTTPHeaders *defaultHeaders)
58
59
return -1 ;
59
60
}
60
61
62
+ /* *
63
+ * Returns the client's IPv4
64
+ */
65
+ IPAddress HTTPConnection::getClientIP () {
66
+ if (_addrLen > 0 && _sockAddr.sa_family == AF_INET) {
67
+ struct sockaddr_in *sockAddrIn = (struct sockaddr_in *)(&_sockAddr);
68
+ return IPAddress (sockAddrIn->sin_addr .s_addr );
69
+ }
70
+ return IPAddress (0 , 0 , 0 , 0 );
71
+ }
61
72
62
73
/* *
63
74
* True if the connection is timed out.
0 commit comments