MCPcopy Create free account
hub / github.com/cuberite/cuberite / AcceptIPv6

Method AcceptIPv6

src/OSSupport/Socket.cpp:233–277  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

231
232
233cSocket cSocket::AcceptIPv6(void)
234{
235 sockaddr_in6 from;
236 socklen_t fromlen = sizeof(from);
237
238 cSocket SClient = accept(m_Socket, (sockaddr *)&from, &fromlen);
239
240 // Get IP in string form:
241 if (SClient.IsValid())
242 {
243 #if defined(_WIN32)
244 // Windows XP doesn't have inet_ntop, so we need to improvise. And MSVC has different headers than GCC
245 #ifdef _MSC_VER
246 // MSVC version
247 Printf(SClient.m_IPString, "%x:%x:%x:%x:%x:%x:%x:%x",
248 from.sin6_addr.u.Word[0],
249 from.sin6_addr.u.Word[1],
250 from.sin6_addr.u.Word[2],
251 from.sin6_addr.u.Word[3],
252 from.sin6_addr.u.Word[4],
253 from.sin6_addr.u.Word[5],
254 from.sin6_addr.u.Word[6],
255 from.sin6_addr.u.Word[7]
256 );
257 #else // _MSC_VER
258 // MinGW
259 Printf(SClient.m_IPString, "%x:%x:%x:%x:%x:%x:%x:%x",
260 from.sin6_addr.s6_addr16[0],
261 from.sin6_addr.s6_addr16[1],
262 from.sin6_addr.s6_addr16[2],
263 from.sin6_addr.s6_addr16[3],
264 from.sin6_addr.s6_addr16[4],
265 from.sin6_addr.s6_addr16[5],
266 from.sin6_addr.s6_addr16[6],
267 from.sin6_addr.s6_addr16[7]
268 );
269 #endif // else _MSC_VER
270 #else
271 char buffer[INET6_ADDRSTRLEN];
272 inet_ntop(AF_INET6, &(from.sin6_addr), buffer, sizeof(buffer));
273 SClient.m_IPString.assign(buffer);
274 #endif // _WIN32
275 }
276 return SClient;
277}
278
279
280

Callers 1

ExecuteMethod · 0.80

Calls 2

PrintfFunction · 0.85
IsValidMethod · 0.45

Tested by

no test coverage detected