MCPcopy Create free account
hub / github.com/3proxy/3proxy / udpresolve

Function udpresolve

src/auth.c:1032–1205  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1030
1031
1032unsigned long udpresolve(int af, unsigned char * name, unsigned char * value, unsigned *retttl, struct clientparam* param, int makeauth){
1033
1034 int i,n;
1035 unsigned long retval;
1036
1037 if((af == AF_INET) && (retval = hashresolv(&dns_table, name, value, retttl))) {
1038 return retval;
1039 }
1040 if((af == AF_INET6) && (retval = hashresolv(&dns6_table, name, value, retttl))) {
1041 return retval;
1042 }
1043 n = (makeauth && !SAISNULL(&authnserver.addr))? 1 : numservers;
1044 for(i=0; i<n; i++){
1045 unsigned short nq, na;
1046 unsigned char b[4098], *buf, *s1, *s2;
1047 int j, k, len, flen;
1048 SOCKET sock;
1049 unsigned ttl;
1050#ifndef NOIPV6
1051 struct sockaddr_in6 addr;
1052 struct sockaddr_in6 *sinsr, *sinsl;
1053#else
1054 struct sockaddr_in addr;
1055 struct sockaddr_in *sinsr, *sinsl;
1056#endif
1057 int usetcp = 0;
1058 unsigned short serial = 1;
1059
1060 buf = b+2;
1061
1062 sinsl = (param && !makeauth)? &param->sinsl : &addr;
1063 sinsr = (param && !makeauth)? &param->sinsr : &addr;
1064 memset(sinsl, 0, sizeof(addr));
1065 memset(sinsr, 0, sizeof(addr));
1066
1067
1068 if(makeauth && !SAISNULL(&authnserver.addr)){
1069 usetcp = authnserver.usetcp;
1070 *SAFAMILY(sinsl) = *SAFAMILY(&authnserver.addr);
1071 }
1072 else {
1073 usetcp = nservers[i].usetcp;
1074 *SAFAMILY(sinsl) = *SAFAMILY(&nservers[i].addr);
1075 }
1076 if((sock=so._socket(SASOCK(sinsl), usetcp?SOCK_STREAM:SOCK_DGRAM, usetcp?IPPROTO_TCP:IPPROTO_UDP)) == INVALID_SOCKET) break;
1077 if(so._bind(sock,(struct sockaddr *)sinsl,SASIZE(sinsl))){
1078 so._shutdown(sock, SHUT_RDWR);
1079 so._closesocket(sock);
1080 break;
1081 }
1082 if(makeauth && !SAISNULL(&authnserver.addr)){
1083 *sinsr = authnserver.addr;
1084 }
1085 else {
1086 *sinsr = nservers[i].addr;
1087 }
1088 if(usetcp){
1089 if(so._connect(sock,(struct sockaddr *)sinsr,SASIZE(sinsr))) {

Callers 3

dnsprchildFunction · 0.85
dnsauthFunction · 0.85
myresolverFunction · 0.85

Calls 7

hashresolvFunction · 0.85
myrandFunction · 0.85
socksendtoFunction · 0.85
sockrecvfromFunction · 0.85
hashaddFunction · 0.85
myfreeFunction · 0.85
mystrdupFunction · 0.85

Tested by

no test coverage detected