Merge "Make host resolver call __connect() rather than connect() so mark isn't cleared."
This commit is contained in:
commit
0d78bdaf65
@ -494,6 +494,16 @@ void res_setnetid(res_state, unsigned);
|
|||||||
void res_setmark(res_state, unsigned);
|
void res_setmark(res_state, unsigned);
|
||||||
u_int res_randomid(void);
|
u_int res_randomid(void);
|
||||||
|
|
||||||
|
#ifdef __i386__
|
||||||
|
# define __socketcall extern __attribute__((__cdecl__))
|
||||||
|
#else
|
||||||
|
# define __socketcall extern
|
||||||
|
#endif
|
||||||
|
|
||||||
|
__socketcall int __connect(int, const struct sockaddr*, socklen_t);
|
||||||
|
|
||||||
|
#undef __socketcall
|
||||||
|
|
||||||
__END_DECLS
|
__END_DECLS
|
||||||
|
|
||||||
#endif /* !_RESOLV_PRIVATE_H_ */
|
#endif /* !_RESOLV_PRIVATE_H_ */
|
||||||
|
@ -369,7 +369,7 @@ _test_connect(int pf, struct sockaddr *addr, size_t addrlen, unsigned mark) {
|
|||||||
return 0;
|
return 0;
|
||||||
int ret;
|
int ret;
|
||||||
do {
|
do {
|
||||||
ret = connect(s, addr, addrlen);
|
ret = __connect(s, addr, addrlen);
|
||||||
} while (ret < 0 && errno == EINTR);
|
} while (ret < 0 && errno == EINTR);
|
||||||
int success = (ret == 0);
|
int success = (ret == 0);
|
||||||
do {
|
do {
|
||||||
@ -1803,7 +1803,7 @@ _find_src_addr(const struct sockaddr *addr, struct sockaddr *src_addr, unsigned
|
|||||||
if (mark != MARK_UNSET && setsockopt(sock, SOL_SOCKET, SO_MARK, &mark, sizeof(mark)) < 0)
|
if (mark != MARK_UNSET && setsockopt(sock, SOL_SOCKET, SO_MARK, &mark, sizeof(mark)) < 0)
|
||||||
return 0;
|
return 0;
|
||||||
do {
|
do {
|
||||||
ret = connect(sock, addr, len);
|
ret = __connect(sock, addr, len);
|
||||||
} while (ret == -1 && errno == EINTR);
|
} while (ret == -1 && errno == EINTR);
|
||||||
|
|
||||||
if (ret == -1) {
|
if (ret == -1) {
|
||||||
|
@ -946,7 +946,7 @@ connect_with_timeout(int sock, const struct sockaddr *nsap, socklen_t salen, int
|
|||||||
origflags = fcntl(sock, F_GETFL, 0);
|
origflags = fcntl(sock, F_GETFL, 0);
|
||||||
fcntl(sock, F_SETFL, origflags | O_NONBLOCK);
|
fcntl(sock, F_SETFL, origflags | O_NONBLOCK);
|
||||||
|
|
||||||
res = connect(sock, nsap, salen);
|
res = __connect(sock, nsap, salen);
|
||||||
if (res < 0 && errno != EINPROGRESS) {
|
if (res < 0 && errno != EINPROGRESS) {
|
||||||
res = -1;
|
res = -1;
|
||||||
goto done;
|
goto done;
|
||||||
@ -1103,7 +1103,7 @@ send_dg(res_state statp,
|
|||||||
res_nclose(statp);
|
res_nclose(statp);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
if (connect(EXT(statp).nssocks[ns], nsap, (socklen_t)nsaplen) < 0) {
|
if (__connect(EXT(statp).nssocks[ns], nsap, (socklen_t)nsaplen) < 0) {
|
||||||
Aerror(statp, stderr, "connect(dg)", errno, nsap,
|
Aerror(statp, stderr, "connect(dg)", errno, nsap,
|
||||||
nsaplen);
|
nsaplen);
|
||||||
res_nclose(statp);
|
res_nclose(statp);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user