|
Lines 16-21
Link Here
|
| 16 |
#include <sys/socket.h> |
16 |
#include <sys/socket.h> |
| 17 |
|
17 |
|
| 18 |
#include <netinet/in.h> |
18 |
#include <netinet/in.h> |
|
|
19 |
#include <sys/un.h> |
| 19 |
|
20 |
|
| 20 |
#include <ctype.h> |
21 |
#include <ctype.h> |
| 21 |
#include <errno.h> |
22 |
#include <errno.h> |
|
Lines 217-230
Link Here
|
| 217 |
addrlen = sizeof(addr); |
218 |
addrlen = sizeof(addr); |
| 218 |
memset(&addr, 0, sizeof(addr)); |
219 |
memset(&addr, 0, sizeof(addr)); |
| 219 |
|
220 |
|
|
|
221 |
if (getsockname(sock, (struct sockaddr *)&addr, &addrlen) < 0) |
| 222 |
return NULL; |
| 223 |
|
| 224 |
if (addr.ss_family == AF_UNIX) |
| 225 |
return xstrdup(((struct sockaddr_un *)&addr)->sun_path); |
| 226 |
|
| 220 |
if (remote) { |
227 |
if (remote) { |
|
|
228 |
addrlen = sizeof(addr); |
| 221 |
if (getpeername(sock, (struct sockaddr *)&addr, &addrlen) |
229 |
if (getpeername(sock, (struct sockaddr *)&addr, &addrlen) |
| 222 |
< 0) |
230 |
< 0) |
| 223 |
return NULL; |
231 |
return NULL; |
| 224 |
} else { |
|
|
| 225 |
if (getsockname(sock, (struct sockaddr *)&addr, &addrlen) |
| 226 |
< 0) |
| 227 |
return NULL; |
| 228 |
} |
232 |
} |
| 229 |
/* Get the address in ascii. */ |
233 |
/* Get the address in ascii. */ |
| 230 |
if ((r = getnameinfo((struct sockaddr *)&addr, addrlen, ntop, |
234 |
if ((r = getnameinfo((struct sockaddr *)&addr, addrlen, ntop, |
|
Lines 311-322
Link Here
|
| 311 |
/* Get IP address of client. */ |
315 |
/* Get IP address of client. */ |
| 312 |
fromlen = sizeof(from); |
316 |
fromlen = sizeof(from); |
| 313 |
memset(&from, 0, sizeof(from)); |
317 |
memset(&from, 0, sizeof(from)); |
| 314 |
if (local) { |
318 |
|
| 315 |
if (getsockname(sock, (struct sockaddr *)&from, &fromlen) < 0) { |
319 |
|
| 316 |
error("getsockname failed: %.100s", strerror(errno)); |
320 |
if (getsockname(sock, (struct sockaddr *)&from, &fromlen) < 0) { |
| 317 |
return 0; |
321 |
error("getsockname failed: %.100s", strerror(errno)); |
| 318 |
} |
322 |
return 0; |
| 319 |
} else { |
323 |
} |
|
|
324 |
|
| 325 |
if (from.ss_family == AF_UNIX) |
| 326 |
return 0; |
| 327 |
|
| 328 |
if (!local) { |
| 329 |
fromlen = sizeof(from); |
| 320 |
if (getpeername(sock, (struct sockaddr *)&from, &fromlen) < 0) { |
330 |
if (getpeername(sock, (struct sockaddr *)&from, &fromlen) < 0) { |
| 321 |
debug("getpeername failed: %.100s", strerror(errno)); |
331 |
debug("getpeername failed: %.100s", strerror(errno)); |
| 322 |
return -1; |
332 |
return -1; |