(address)
| 145 | |
| 146 | |
| 147 | def pack_addr(address): |
| 148 | address_str = to_str(address) |
| 149 | for family in (socket.AF_INET, socket.AF_INET6): |
| 150 | try: |
| 151 | r = socket.inet_pton(family, address_str) |
| 152 | if family == socket.AF_INET6: |
| 153 | return b'\x04' + r |
| 154 | else: |
| 155 | return b'\x01' + r |
| 156 | except (TypeError, ValueError, OSError, IOError): |
| 157 | pass |
| 158 | if len(address) > 255: |
| 159 | address = address[:255] # TODO |
| 160 | return b'\x03' + chr(len(address)) + address |
| 161 | |
| 162 | |
| 163 | def parse_header(data): |