docs: def process_data(self):
          """[Internal]"""
  
          if self.passive and not self.connected:
              conn, (self.peeraddress, self.peerport) = self.socket.accept()
              self.socket.close()
              self.socket = conn
              self.connected = True
              log.debug(
                  "DCC connection from %s:%d", self.peeraddress,
                  self.peerport)
              self.reactor._handle_event(
                  self,
                  Event("dcc_connect", self.peeraddress, None, None))
              return
  
          try:
              new_data = self.socket.recv(2 ** 14)
          except socket.error:
              # The server hung up.
              self.disconnect("Connection reset by peer")
              return
          if not new_data:
              # Read nothing: connection must be down.
              self.disconnect("Connection reset by peer")
              return
  
          if self.dcctype == "chat":
              self.buffer.feed(new_data)
  
              chunks = list(self.buffer)
  
              if len(self.buffer) > 2 ** 14:
                  # Bad peer! Naughty peer!
                  log.info(
                      "Received >16k from a peer without a newline; "
                      "disconnecting.")
                  self.disconnect()
                  return
          else:
              chunks = [new_data]
  
          command = "dccmsg"
          prefix = self.peeraddress
          target = None
          for chunk in chunks:
              log.debug("FROM PEER: %s", chunk)
              arguments = [chunk]
              log.debug(
                  "command: %s, source: %s, target: %s, arguments: %s",
                  command, prefix, target, arguments)
              event = Event(command, prefix, target, arguments)
              self.reactor._handle_event(self, event)