@@ -339,76 +339,12 @@ func WriteElement(w *bytes.Buffer, element interface{}) error {
339
339
}
340
340
341
341
case * net.TCPAddr :
342
- if e == nil {
343
- return fmt .Errorf ("cannot write nil TCPAddr" )
344
- }
345
-
346
- if e .IP .To4 () != nil {
347
- var descriptor [1 ]byte
348
- descriptor [0 ] = uint8 (tcp4Addr )
349
- if _ , err := w .Write (descriptor [:]); err != nil {
350
- return err
351
- }
352
-
353
- var ip [4 ]byte
354
- copy (ip [:], e .IP .To4 ())
355
- if _ , err := w .Write (ip [:]); err != nil {
356
- return err
357
- }
358
- } else {
359
- var descriptor [1 ]byte
360
- descriptor [0 ] = uint8 (tcp6Addr )
361
- if _ , err := w .Write (descriptor [:]); err != nil {
362
- return err
363
- }
364
- var ip [16 ]byte
365
- copy (ip [:], e .IP .To16 ())
366
- if _ , err := w .Write (ip [:]); err != nil {
367
- return err
368
- }
369
- }
370
- var port [2 ]byte
371
- binary .BigEndian .PutUint16 (port [:], uint16 (e .Port ))
372
- if _ , err := w .Write (port [:]); err != nil {
342
+ if err := WriteTCPAddr (w , e ); err != nil {
373
343
return err
374
344
}
375
345
376
346
case * tor.OnionAddr :
377
- if e == nil {
378
- return errors .New ("cannot write nil onion address" )
379
- }
380
-
381
- var suffixIndex int
382
- switch len (e .OnionService ) {
383
- case tor .V2Len :
384
- descriptor := []byte {byte (v2OnionAddr )}
385
- if _ , err := w .Write (descriptor ); err != nil {
386
- return err
387
- }
388
- suffixIndex = tor .V2Len - tor .OnionSuffixLen
389
- case tor .V3Len :
390
- descriptor := []byte {byte (v3OnionAddr )}
391
- if _ , err := w .Write (descriptor ); err != nil {
392
- return err
393
- }
394
- suffixIndex = tor .V3Len - tor .OnionSuffixLen
395
- default :
396
- return errors .New ("unknown onion service length" )
397
- }
398
-
399
- host , err := tor .Base32Encoding .DecodeString (
400
- e .OnionService [:suffixIndex ],
401
- )
402
- if err != nil {
403
- return err
404
- }
405
- if _ , err := w .Write (host ); err != nil {
406
- return err
407
- }
408
-
409
- var port [2 ]byte
410
- binary .BigEndian .PutUint16 (port [:], uint16 (e .Port ))
411
- if _ , err := w .Write (port [:]); err != nil {
347
+ if err := WriteOnionAddr (w , e ); err != nil {
412
348
return err
413
349
}
414
350
0 commit comments