diff options
Diffstat (limited to 'module')
| -rw-r--r-- | module/network/XDCCRequest.py | 21 | ||||
| -rw-r--r-- | module/plugins/hoster/Xdcc.py | 3 | 
2 files changed, 20 insertions, 4 deletions
diff --git a/module/network/XDCCRequest.py b/module/network/XDCCRequest.py index 92ccb4839..f03798c17 100644 --- a/module/network/XDCCRequest.py +++ b/module/network/XDCCRequest.py @@ -63,8 +63,9 @@ class XDCCRequest():          return socket.socket() -    def download(self, ip, port, filename, progressNotify=None): +    def download(self, ip, port, filename, irc, progressNotify=None): +        ircbuffer = ""          lastUpdate = time()          cumRecvLen = 0 @@ -94,6 +95,8 @@ class XDCCRequest():                  remove(filename)                  raise Abort() +            self._keepAlive(irc, ircbuffer) +                          data = dccsock.recv(4096)              dataLen = len(data)              self.recv += dataLen @@ -124,7 +127,21 @@ class XDCCRequest():          return filename -     +    def _keepAlive(self, sock, readbuffer): +        fdset = select([sock], [], [], 0) +        if sock not in fdset[0]: +            return +             +        readbuffer += sock.recv(1024) +        temp = readbuffer.split("\n") +        readbuffer = temp.pop() + +        for line in temp: +            line  = line.rstrip() +            first = line.split() +            if first[0] == "PING": +                sock.send("PONG %s\r\n" % first[1]) +      def abortDownloads(self):          self.abort = True diff --git a/module/plugins/hoster/Xdcc.py b/module/plugins/hoster/Xdcc.py index 7d83b050c..6f0a1b176 100644 --- a/module/plugins/hoster/Xdcc.py +++ b/module/plugins/hoster/Xdcc.py @@ -215,7 +215,7 @@ class Xdcc(Hoster):          self.log.info("XDCC: Downloading %s from %s:%d" % (packname, ip, port))
          self.pyfile.setStatus("downloading")
 -        newname = self.req.download(ip, port, filename, self.pyfile.setProgress)
 +        newname = self.req.download(ip, port, filename, sock, self.pyfile.setProgress)
          if newname and newname != filename:
              self.log.info("%(name)s saved as %(newname)s" % {"name": self.pyfile.name, "newname": newname})
              filename = newname
 @@ -227,4 +227,3 @@ class Xdcc(Hoster):          self.lastDownload = filename
          return self.lastDownload
 -        
  | 
