summary |
tags |
clone url |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
568353d)
any server seemed to be present with distinguished error return
SCCS-vsn: lib/libc/net/res_send.c 6.4
-static char sccsid[] = "@(#)res_send.c 6.3 (Berkeley) %G%";
+static char sccsid[] = "@(#)res_send.c 6.4 (Berkeley) %G%";
register int n;
int retry, v_circuit, resplen, ns;
static int s = -1;
register int n;
int retry, v_circuit, resplen, ns;
static int s = -1;
u_short id, len;
char *cp;
int dsmask;
u_short id, len;
char *cp;
int dsmask;
*/
if (s < 0) {
s = socket(AF_INET, SOCK_STREAM, 0);
*/
if (s < 0) {
s = socket(AF_INET, SOCK_STREAM, 0);
+ if (s < 0) {
+#ifdef DEBUG
+ if (_res.options & RES_DEBUG)
+ printf("socket failed %d\n",errno);
+#endif DEBUG
+ continue;
+ }
if (connect(s, &(_res.nsaddr_list[ns]),
sizeof(struct sockaddr)) < 0) {
#ifdef DEBUG
if (connect(s, &(_res.nsaddr_list[ns]),
sizeof(struct sockaddr)) < 0) {
#ifdef DEBUG
*/
if (s < 0)
s = socket(AF_INET, SOCK_DGRAM, 0);
*/
if (s < 0)
s = socket(AF_INET, SOCK_DGRAM, 0);
if (connect(s, &_res.nsaddr_list[ns],
sizeof(struct sockaddr)) < 0 ||
send(s, buf, buflen, 0) != buflen) {
if (connect(s, &_res.nsaddr_list[ns],
sizeof(struct sockaddr)) < 0 ||
send(s, buf, buflen, 0) != buflen) {
printf("connect/send errno = %d\n",
errno);
#endif DEBUG
printf("connect/send errno = %d\n",
errno);
#endif DEBUG
+ continue;
+ }
+#else BSD
+ if (sendto(s, buf, buflen, 0, &_res.nsaddr_list[ns],
+ sizeof(struct sockaddr)) != buflen) {
+#ifdef DEBUG
+ if (_res.options & RES_DEBUG)
+ printf("sendto errno = %d\n", errno);
+#endif DEBUG
+ continue;
if (_res.options & RES_DEBUG)
printf("timeout\n");
#endif DEBUG
if (_res.options & RES_DEBUG)
printf("timeout\n");
#endif DEBUG
continue;
}
if ((resplen = recv(s, answer, anslen, 0)) <= 0) {
continue;
}
if ((resplen = recv(s, answer, anslen, 0)) <= 0) {
if (id != anhp->id) {
/*
* response from old query, ignore it
if (id != anhp->id) {
/*
* response from old query, ignore it
+ if (v_circuit == 0 && gotsomewhere == 0)
+ errno = ECONNREFUSED;
+ else
+ errno = ETIMEDOUT;