MCPcopy
hub / github.com/sshuttle/sshuttle / try_send

Method try_send

sshuttle/server.py:196–229  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

194 return (family, sockaddr)
195
196 def try_send(self):
197 if self.tries >= 3:
198 return
199 self.tries += 1
200
201 if self.to_nameserver is None:
202 _, peer = get_random_nameserver()
203 port = 53
204 else:
205 peer = self.to_ns_peer
206 port = int(self.to_ns_port)
207
208 family, sockaddr = self._addrinfo(peer, port)
209 sock = socket.socket(family, socket.SOCK_DGRAM)
210 sock.connect(sockaddr)
211
212 self.peers[sock] = peer
213
214 debug2('DNS: sending to %r:%d (try %d)' % (peer, port, self.tries))
215 try:
216 sock.send(self.request)
217 self.socks.append(sock)
218 except socket.error:
219 _, e = sys.exc_info()[:2]
220 if e.args[0] in ssnet.NET_ERRS:
221 # might have been spurious; try again.
222 # Note: these errors sometimes are reported by recv(),
223 # and sometimes by send(). We have to catch both.
224 debug2('DNS send to %r: %s' % (peer, e))
225 self.try_send()
226 return
227 else:
228 log('DNS send to %r: %s' % (peer, e))
229 return
230
231 def callback(self, sock):
232 peer = self.peers[sock]

Callers 2

__init__Method · 0.95
callbackMethod · 0.95

Calls 5

_addrinfoMethod · 0.95
get_random_nameserverFunction · 0.90
debug2Function · 0.90
logFunction · 0.90
sendMethod · 0.45

Tested by

no test coverage detected