$ od -c -N 50000 [Indigo]<Mesa>Doc>Pup>Pup2.bravo!1 0000000 P r i v a t e D a t a S t a 0000020 m p : N o X : 6 . 5 " 0000040 Y : 1 1 . 2 5 " \r P a g e N u 0000060 m b e r s : Y e s X : 5 2 0000100 7 Y : - . 5 " F i r s t 0000120 P a g e : 8 \r H e a d i n g : 0000140 032 q ( 6 3 5 ) \ b \r M e s a P 0000160 u p P a c k a g e F u n c t 0000200 i o n a l S p e c i f i c a t 0000220 i o n 032 y 7 5 6 q \ b \r B y t e 0000240 S t r e a m i n t e r f a c 0000260 e 032 x 4 e 3 0 \ b \r T h e P u 0000300 p P a c k a g e B y t e S t 0000320 r e a m ( B S P ) i m p l e 0000340 m e n t a t i o n u s e s a 0000360 S t r e a m i n t e r f a c 0000400 e t h a t i s d i f f e r 0000420 e n t f r o m t h e n o r 0000440 m a l M e s a o n e d e f 0000460 i n e d i n S t r e a m D e 0000500 f s . S e e a p p e n d i 0000520 x A f o r a d e t a i l 0000540 e d d e s c r i p t i o n . 0000560 T h i s s e c t i o n o n 0000600 l y d i s c u s s e s t h e 0000620 p e c u l i a r i t i e s o 0000640 f P u p B y t e S t r e a m 0000660 s . 032 x 4 e 1 2 j k 5 4 \r P u p 0000700 B y t e S t r e a m C r e a t e 0000720 : P R O C E D U R E [ \r r e 0000740 m o t e : P u p A d d r e s s 0000760 , \r t i c k s : T o c k s ] \r 0001000 R E T U R N S [ S t r e a m . 0001020 H a n d l e ] ; 032 l 4 6 4 0 d 4 0001040 2 6 8 x 4 e 1 2 k 5 4 \ f 6 b 2 0001060 0 f 7 1 0 f 6 3 7 f 7 7 f 0001100 6 \r T o c k s : T Y P E = 0001120 R E C O R D [ C A R D I N A L 0001140 ] ; 032 l 4 6 4 0 d 4 2 6 8 x 4 k 0001160 5 4 \ f 6 b 6 f 7 1 4 f 6 2 0001200 f 7 8 f 6 \r S t r e a m C l o 0001220 s i n g : E R R O R [ w h y 0001240 : C l o s e R e a s o n , t 0001260 e x t : S T R I N G ] ; 032 l 4 0001300 6 4 0 d 4 2 6 8 x 4 k 5 4 \ f 6 0001320 b 1 4 f 7 6 f 6 2 6 f 7 6 0001340 f 6 \r C l o s e R e a s o n : 0001360 T Y P E = { \r l o c a l C l 0001400 o s e , r e m o t e C l o s e 0001420 , \r n o R o u t e T o N e t w o 0001440 r k , t r a n s m i s s i o n 0001460 T i m e o u t , r e m o t e R 0001500 e j e c t } ; 032 l 4 6 4 0 d 4 2 0001520 6 8 x 4 k 5 4 \ f 6 b 1 2 f 7 0001540 5 f 6 \r P u p B y t e S t r e a 0001560 m C r e a t e i s u s e d 0001600 t o c r e a t e a u s e r 0001620 e n d o f a c o n n e c 0001640 t i o n . I t b u i l d s 0001660 t h e n e c e s s a r y d 0001700 a t a s t r u c t u r e s a 0001720 n d t r i e s t o o p e n 0001740 a c o n n e c t i o n t o 0001760 t h e s p e c i f i e d r 0002000 e m o t e a d d r e s s . 0002020 S t r e a m C l o s i n g w i 0002040 l l r e s u l t i f i t 0002060 c a n n o t b e o p e n e 0002100 d i n a r e a s o n a b l 0002120 e l e n g t h o f t i m e 0002140 . 032 x 4 e 1 2 j k 5 4 \ f 6 b 1 0002160 9 f 0 B 1 5 3 f 6 b 1 3 f 0 B \r 0002200 I f t h e c o n n e c t i o 0002220 n g e t s i n t o t r o u 0002240 b l e f o r a n y r e a s 0002260 o n , i t i s s m a s h e 0002300 d c l o s e d , a n d a n 0002320 y p r o c e s s t h a t t 0002340 r i e s t o d o a g e t 0002360 o r p u t o n t h e s 0002400 t r e a m w i l l r u n i 0002420 n t o t h e S t r e a m C l 0002440 o s i n g E R R O R . t e 0002460 x t i s l i k e l y t o 0002500 b e N I L . I f n o t , 0002520 i t i s t h e t e x t 0002540 p o r t i o n o f t h e e 0002560 r r o r o r a b o r t P u 0002600 p p r o v i d e d b y t h 0002620 e r e m o t e e n d . l 0002640 o c a l C l o s e m e a n s 0002660 t h a t t h e s t r e a m 0002700 i s i n t h e p r o c e s 0002720 s o f b e i n g d e l e t 0002740 e d . I f y o u e v e r 0002760 g e t t h i s , y o u a 0003000 r e i n t r o u b l e b e 0003020 c a u s e y o u s h o u l d 0003040 n o t h a v e a n y p r 0003060 o c e s s e s u s i n g a 0003100 s t r e a m w h e n y o u 0003120 d e l e t e i t . r e m o 0003140 t e C l o s e m e a n s t h 0003160 a t t h e c o n n e c t i o 0003200 n w a s c l o s e d b y 0003220 t h e r e m o t e m a c h i 0003240 n e . T h e o t h e r t 0003260 h r e e r e a s o n s c a n 0003300 a l s o h a p p e n d u r 0003320 i n g P u p B y t e S t r e a 0003340 m C r e a t e . n o R o u t 0003360 e T o N e t w o r k m e a n s 0003400 t h a t t h e p u p r o 0003420 u t e r d o e s n o t k n 0003440 o w ( a n y l o n g e r ) 0003460 h o w t o g e t p a c k e 0003500 t s t o t h e r e m o t e 0003520 m a c h i n e . C u r r e 0003540 n t l y i t i s n ' t g e 0003560 n e r a t e d , b u t w i l 0003600 l p r o b a b l y r e a p p 0003620 e a r i n t h e f u t u r 0003640 e . T h e r e a r e p r 0003660 o b l e m s w i t h t r a n 0003700 s i e n t s i n t h e r o 0003720 u t i n g t a b l e s . t 0003740 r a n s m i s s i o n T i m e o 0003760 u t m e a n s t h a t t h 0004000 e r e m o t e m a c h i n e 0004020 h a s n o t r e s p o n d 0004040 e d w i t h i n a r e a s 0004060 o n a b l e a m o u n t o f 0004100 t i m e . M a y b e i t 0004120 h a s c r a s h e d , o r 0004140 i f d u r i n g P u p B y 0004160 t e S t r e a m C r e a t e , 0004200 m a y b e i t i s n o t 0004220 l i s t e n i n g t o t h e 0004240 E t h e r n e t . r e m o 0004260 t e R e j e c t m e a n s t 0004300 h a t t h e r e m o t e m 0004320 a c h i n e h a s e x p l i 0004340 c i t l y r e j e c t e d t 0004360 h e c o n n e c t i o n o r 0004400 c o n n e c t i o n r e q u 0004420 e s t . T h i s f r e q u 0004440 e n t l y h a p p e n s i f 0004460 t h e r e m o t e m a c h 0004500 i n e h a s b e e n r e b 0004520 o o t e d . 032 x 4 e 1 2 j k 5 4 0004540 \ 1 5 2 f 6 b 1 3 f 0 B 1 f 7 b 0004560 5 f 0 B 3 f 6 b 4 f 0 B 1 7 f 7 0004600 b 3 f 0 B 8 9 f 6 b 1 0 f 0 B 1 0004620 7 9 f 6 b 1 1 f 0 B 1 0 9 f 6 b 0004640 1 9 f 0 B 3 f 6 b 1 6 f 0 B 9 7 0004660 f 1 1 3 0 f 0 2 f 6 b 1 9 f 0004700 0 B 1 2 1 f 6 b 1 9 f 0 B 4 6 f 0004720 6 b 1 2 f 0 B \r I f t h e r 0004740 e m o t e e n d h a s r e 0004760 q u e s t e d a n a c k , 0005000 t h e P u p P a c k a g e n 0005020 o r m a l l y d e f e r s s 0005040 e n d i n g i t u n t i l 0005060 t h e r e c e i v i n g p r 0005100 o c e s s s u c k s u p a 0005120 l l t h e d a t a f r o m 0005140 t h e b u f f e r . ( I 0005160 f i t a s k s a g a i n , 0005200 i t w i l l g e t a p 0005220 r o m p t r e p l y . W e 0005240 l l , i t w a s s u p p o 0005260 s e d t o , b u t d u e 0005300 t o a b u g . . . ) I f 0005320 t h e s e n d e r i s s 0005340 l i g h t l y f a s t e r t 0005360 h a n t h e r e c e i v e r 0005400 , t h i s s l i g h t d e 0005420 l a y g r e a t l y i m p r 0005440 o v e s t h r o u g h p u t 0005460 b y k e e p i n g t h e a 0005500 l l o c a t i o n w i n d o w 0005520 a s l a r g e a s p o s 0005540 s i b l e , a n d h e n c e 0005560 m i n i m i z i n g t h e 0005600 n u m b e r o f a c k p a 0005620 c k e t s t h a t n e e d 0005640 t o b e g e n e r a t e d 0005660 a n d p r o c e s s e d . 032 x 0005700 4 e 1 2 j k 5 4 \ 1 9 6 f 1 4 0005720 7 f 0 \r I n a d d i t i o n 0005740 t o s e n d i n g t h e c 0005760 u r r e n t b u f f e r , S 0006000 e n d N o w a l s o r e q u 0006020 e s t s t h a t i t b e 0006040 a c k n o w l e d g e d . I 0006060 t w i l l s e n d a n e 0006100 m p t y p a c k e t i f n 0006120 e c e s s a r y . T h i s 0006140 a l l o w s a b u l k d a 0006160 t a t r a n s f e r o p e r 0006200 a t i o n ( F T P ) t o c 0006220 o o r i d i n a t e i t ' s 0006240 ( d i s k ) a c t i v i t y 0006260 w i t h t h e ( d i s k ) 0006300 a c t i v i t y o f t h e 0006320 p r o c e s s a t t h e o 0006340 t h e r e n d . C o n s i 0006360 d e r t h e c a s e w h e 0006400 r e t h e s e n d e r a n 0006420 d r e c e i v e r u s e t 0006440 h e s a m e s i z e b u f 0006460 f e r s , a n d t h e P u 0006500 p b u f f e r s a r e s l 0006520 i g h t l y l a r g e r t h 0006540 a n t h e c l i e n t b u 0006560 f f e r s . A s s u m e t 0006600 h a t i t t a k e s b o t 0006620 h e n d s r o u g h l y t 0006640 h e s a m e a m o u n t o 0006660 f t i m e t o g e n e r a 0006700 t e a n d c o n s u m e t 0006720 h e d a t a . W i t h o u 0006740 t t h e S e n d N o w , t 0006760 h e t a i l o f t h e c 0007000 l u m p s i t s i n t h e 0007020 s e n d e r s b u f f e r s 0007040 w h i l e t h e s e n d e 0007060 r i s f e t c h i n g t h 0007100 e s e c o n d c l u m p , 0007120 a n d t h e r e c e i v e r 0007140 w a i t s . E a r l y i 0007160 n s e n d i n g t h e s e 0007200 c o n d c l u m p , t h e 0007220 a l l o c a t i o n l i m i t 0007240 w i l l b e r e a c h e d 0007260 , a n d t h e s e n d e r 0007300 m u s t w a i t f o r t 0007320 h e r e c e i v e r t o p 0007340 r o c e s s t h e f i r s t 0007360 c l u m p b e f o r e t h 0007400 e r e c e i v e r a s k s 0007420 f o r m o r e d a t a t o 0007440 t r i g g e r s e n d i n g 0007460 t h e a c k . S e n d N 0007500 o w p r o v i d e s a w a 0007520 y t o k e e p t h i n g s 0007540 s y n c h r o n i z e d . 0007560 T h e r e s u l t i s t h 0007600 a t t h e s e n d e r a n 0007620 d r e c e i v e r g e t t 0007640 o o v e r l a p t h e ( d 0007660 i s k ) p r o c e s s i n g 0007700 o f t h e d a t a . T h 0007720 e c u r r e n t i m p l e m 0007740 e n t a t i o n w a i t s i 0007760 n S e n d N o w f o r t h 0010000 e a c k t o a r r i v e . 0010020 U n l e s s t h e r e c 0010040 e i v i n g p r o c e s s a 0010060 t t h e r e m o t e e n d 0010100 h a s f a l l e n b e h i 0010120 n d , t h i s i s o n l y 0010140 a s h o r t t i m e . 0010160 I n p a r t i c u l a r , i 0010200 t i s m u c h s m a l l e 0010220 r t h a t t h e t i m e 0010240 n e c e s s a r y t o w r i 0010260 t e s e v e r a l p a g e s 0010300 o n t h e d i s k . 032 x 4 0010320 e 1 2 j k 5 4 \ 4 3 f 6 b 7 f 0 0010340 B 4 1 f 1 4 2 f 0 3 9 7 f 6 0010360 b 7 f 0 B 3 3 4 f 6 b 7 f 0 B 1 0010400 4 0 f 1 3 6 f 7 b 7 f 1 B 2 1 0010420 2 f 0 \r D e l e t e d i s c a 0010440 r d s a n y p a r t i a l 0010460 b u f f e r , i f a n y , 0010500 t h a t h a s n o t y e t 0010520 b e e n s e n t . T h i 0010540 s a v o i d s b u m p i n g 0010560 i n t o S t r e a m C l o s 0010600 i n g a g a i n i f y o u 0010620 a r e c l e a n i n g u p 0010640 t h e c o n n e c t i o n 0010660 a f t e r t h e r e m o t e 0010700 e n d h a s c r a s h e d 0010720 . I f y o u w a n t t 0010740 o s e n d t h e d a t a 0010760 t h a t m i g h t b e b u 0011000 f f e r e d , b e s u r e 0011020 t o c a l l S e n d N o w . 0011040 032 x 4 e 1 2 j k 5 4 \ f 6 b 6 f 0011060 0 B 9 2 f 6 b 1 3 f 0 B 1 4 9 f 0011100 6 b 7 f 0 B \r W h e n y o u 0011120 d e l e t e a s t r e a m , 0011140 b e s u r e t h a t y o 0011160 u d o n ' t h a v e a n y 0011200 o t h e r P R O C E S S e s 0011220 u s i n g i t o r t h e 0011240 r u g w i l l g e t y a 0011260 n k e d o u t f r o m u n 0011300 d e r n e a t h t h e m . 032 x 0011320 4 e 1 2 j k 5 4 \ 6 4 f 7 b 7 f 0011340 0 B \r C r e a t i n g a l i 0011360 s t e n e r t e l l s t h e 0011400 P u p P a c k a g e t h a 0011420 t t h e c l i e n t p r o 0011440 g r a m w i l l a c c e p t 0011460 R F C s f o r t h e l o 0011500 c a l s o c k e t n u m b e 0011520 r ( t h e P u p P a c k a 0011540 g e k n o w s t h e h o s 0011560 t a n d n e t w o r k ) . 0011600 A l i s t e n e r a l s o 0011620 a n s w e r s e c h o p u 0011640 p s i f y o u w a n t a 0011660 p o l i t e w a y t o d 0011700 i s c o v e r i f i t i s 0011720 a l i v e . 032 x 4 e 1 2 j k 5 0011740 4 \ 1 5 6 f 1 8 8 f 0 \r C r e 0011760 a t e P u p B y t e S t r e a m 0012000 L i s t e n e r : P R O C E D 0012020 U R E [ \r l o c a l : P u p 0012040 S o c k e t I D , \r p r o c : 0012060 P R O C E D U R E [ S t r e a 0012100 m . H a n d l e , P u p A d d 0012120 r e s s ] , \r t i c k s : T o 0012140 c k s , \r f i l t e r : P R O 0012160 C E D U R E [ P u p A d d r e 0012200 s s ] _ D o n t R e j e c t 0012220 ] \r R E T U R N S [ P u p L i 0012240 s t e n e r ] ; 032 l 4 6 4 0 d 4 0012260 2 6 8 x 4 e 1 2 k 5 4 \ f 6 b 2 0012300 8 f 7 1 0 f 6 2 9 f 7 9 f 0012320 6 5 2 f 7 9 f 6 2 8 f 7 0012340 7 f 6 \r T o c k s : T Y P E 0012360 = R E C O R D [ C A R D I N 0012400 A L ] ; 032 l 4 6 4 0 d 4 2 6 8 x 0012420 4 k 5 4 \ f 6 b 6 f 7 1 4 f 6 0012440 2 f 7 8 f 6 \r D e s t r o y 0012460 P u p L i s t e n e r : P R O 0012500 C E D U R E [ P u p L i s t e 0012520 n e r ] ; 032 l 4 6 4 0 d 4 2 6 8 0012540 x 4 k 5 4 \ f 6 b 1 9 f 7 1 0 0012560 f 6 \r P u p L i s t e n e r : 0012600 T Y P E = . . . ; 032 l 4 6 0012620 4 0 d 4 2 6 8 x 4 k 5 4 \ f 6 b 0012640 1 3 f 7 4 f 6 \r D o n t R e j 0012660 e c t : P R O C E D U R E [ 0012700 P u p A d d r e s s ] ; 032 l 4 6 0012720 4 0 d 4 2 6 8 x 4 k 5 4 \ f 6 b 0012740 1 2 f 7 9 f 6 \r R e j e c t T 0012760 h i s R e q u e s t : E R R O 0013000 R [ e r r o r : S T R I N G 0013020 ] ; 032 l 4 6 4 0 d 4 2 6 8 x 4 k 0013040 5 4 \ f 6 b 1 9 f 7 5 f 6 9 0013060 f 7 6 f 6 \r C r e a t e P u p 0013100 B y t e S t r e a m L i s t e n 0013120 e r m a k e s a B y t e S 0013140 t r e a m l i s t e n e r . 0013160 l o c a l i s t h e l o 0013200 c a l s o c k e t n u m b e 0013220 r t o l i s t e n o n . 0013240 T o s t o p l i s t e n i 0013260 n g , c a l l D e s t r o y 0013300 P u p L i s t e n e r . 032 x 4 e 0013320 1 2 j k 5 4 \ f 6 b 2 7 f 0 B 2 0013340 0 i 8 I 3 f 6 b 5 f 0 B 4 1 b 2 0013360 B 2 4 f 6 b 1 8 f 0 B \r T h e 0013400 u s e r s u p p l i e d p r 0013420 o c e d u r e w i l l b e 0013440 F O R K e d t o o n c e f 0013460 o r e a c h c o n n e c t i 0013500 o n t h a t i s s e t u p 0013520 w i t h t h e l o c a l 0013540 s o c k e t n u m b e r . 0013560 ( T h e n e w P R O C E S S 0013600 g e t s D e t a c h e d . ) 0013620 T h e c l i e n t i s 0013640 e x p e c t e d t o d e l e 0013660 t e t h e c o n n e c t i o 0013700 n e v e n t u a l l y . T 0013720 h e P u p A d d r e s s p a 0013740 s s e d t o p r o c i s 0013760 t h e a d d r e s s o f t 0014000 h e o t h e r e n d o f 0014020 t h e c o n n e c t i o n . 0014040 t i c k s i s t h e t i 0014060 m e o u t i n t e r v a l f 0014100 o r g e t a n d p u t u 0014120 s e d f o r a n y s t r e 0014140 a m s t h a t g e t c r e 0014160 a t e d b y t h e l i s t 0014200 e n e r . 032 x 4 e 1 2 j k 5 4 \ 0014220 3 6 f 7 b 4 f 0 B 8 5 f 7 b 7 f 0014240 0 B 6 f 6 b 6 f 0 B 6 7 f 6 4 0014260 b 1 0 f 0 B 1 1 f 6 b 4 f 0 B 5 0014300 3 f 6 b 5 f 0 B \r O p t i o n a 0014320 l l y , y o u c a n s u p 0014340 p l y a p r o c e d u r e 0014360 t h a t m a y r e j e c t 0014400 u n d e s i r e d c o n n e c 0014420 t i o n s . T h i s i s 0014440 u s e f u l t o k e e p a 0014460 s e r v e r f r o m c r a 0014500 s h i n g b e c a u s e i t 0014520 r u n s o u t o f r e s 0014540 o u r c e s . ( T h e d e 0014560 f a u l t d o e s n ' t r e 0014600 j e c t a n y t h i n g . ) 0014620 T o r e j e c t a c o n 0014640 n e c t i o n , t h e f i l 0014660 t e r p r o c e d u r e s h 0014700 o u l d r a i s e t h e E 0014720 R R O R R e j e c t T h i s R 0014740 e q u e s t . T h e t e x 0014760 t w i l l b e s e n t b 0015000 a c k t o t h e o t h e r 0015020 e n d i n a n a b o r t 0015040 P u p . I f t h e f i 0015060 l t e r p r o c e d u r e r 0015100 e t u r n s t h e c o n n e 0015120 c t i o n w i l l b e a c 0015140 c e p t e d . 032 x 4 e 1 2 j k 5 0015160 4 \ 2 6 2 f 7 b 5 f 0 B 1 f 6 b 0015200 1 7 f 0 B \r T h e P u p P a 0015220 c k a g e c u r r e n t l y 0015240 u s e s a v e r y s i m p 0015260 l e b u f f e r a l l o c a 0015300 t i o n s t r a t e g y . 0015320 I t a l l o c a t e s a f 0015340 i x e d n u m b e r o f b 0015360 u f f e r s f o r e a c h 0015400 h a l f o f e a c h B y t 0015420 e S t r e a m . ( I t d o 0015440 e s t h e c o r r e c t t 0015460 h i n g s i f t h e o t h 0015500 e r e n d a l l o c a t e s 0015520 f e w e r b u f f e r s . ) 0015540 T h u s i t i s e a s 0015560 y t o g e n e r a t e d e 0015600 a d l o c k s . T h e d e 0015620 f a u l t n u m b e r i s 0015640 5 . ( I f y o u a r e 0015660 c o u n t i n g b u f f e r s 0015700 , d o n ' t f o r g e t t 0015720 h e e x t r a o n e t h a 0015740 t i s b e i n g e m p t i 0015760 e d / f i l l e d . ) T h e 0016000 d e f a u l t b u f f e r 0016020 p o o l s i z e i s 1 5 . 0016040 T h a t i s l a r g e 0016060 e n o u g h t o p r e v e n 0016100 t l o c k u p s i f a p 0016120 r o g r a m u s e s b o t h 0016140 h a l v e s o f a s t r 0016160 e a m , o r 2 h a l v e s 0016200 o f 2 s t r e a m s . 0016220 I f y o u a r e t i g h t 0016240 o n c o r e a n d o n l 0016260 y u s i n g o n e h a l f 0016300 o f a s t r e a m ( a t 0016320 a t i m e - - F T P i 0016340 s a g o o d e x a m p l e 0016360 ) , y o u s h o u l d c o 0016400 n s i d e r c h a n g i n g 0016420 t h e b u f f e r p o o l 0016440 s i z e . 032 x 4 e 1 2 j k 5 4 \r 0016460 S e t M a x A l l o c a t i o n 0016500 : P R O C E D U R E [ C A R 0016520 D I N A L ] ; 032 l 4 6 4 0 d 4 2 0016540 6 8 x 4 e 1 2 k 5 4 \ f 6 b 1 7 0016560 f 7 1 0 f 6 2 f 7 8 f 6 \r 0016600 S e t M a x B u f f e r S i z e 0016620 : P R O C E D U R E [ C A R 0016640 D I N A L ] ; 032 l 4 6 4 0 d 4 2 0016660 6 8 x 4 k 5 4 \ f 6 b 1 7 f 7 0016700 1 0 f 6 2 f 7 8 f 6 \r S e t 0016720 M a x A l l o c a t i o n w i 0016740 l l c h a n g e t h e a l 0016760 l o c a t i o n l i m i t f 0017000 o r a n y B y t e S t r e a 0017020 m s t h a t a r e c r e a 0017040 t e d i n t h e f u t u r 0017060 e . S e t M a x B u f f e r 0017100 S i z e w i l l c h a n g e 0017120 t h e m a x i m u n n u m 0017140 b e r o f b y t e s a l l 0017160 o w e d i n a d a t a p 0017200 a c k e t i n c a s e y o 0017220 u w a n t t o u s e l e 0017240 s s t h a n t h e d e f a 0017260 u l t . E x i s t i n g s 0017300 t r e a m s a r e n o t e 0017320 f f e c t e d . 032 x 4 e 1 2 j k 0017340 5 4 \ f 6 b 1 6 f 0 B 8 7 f 6 b 0017360 1 6 f 0 B \r S e t P i n g i n g 0017400 : P R O C E D U R E [ B O O 0017420 L E A N ] ; 032 l 4 6 4 0 d 4 2 6 0017440 8 x 4 e 1 2 k 5 4 \ f 6 b 1 1 f 0017460 7 1 0 f 6 2 f 7 7 f 6 \r N 0017500 o r m a l l y , t h e P u p 0017520 P a c k a g e w i l l t r y 0017540 t o v e r i f y t h a t 0017560 t h e r e m o t e e n d i 0017600 s s t i l l a l i v e i f 0017620 t h e c o n n e c t i o n 0017640 i s i d l e f o r a m i 0017660 n n u t e o r s o . I f 0017700 i t h a s c r a s h e d , 0017720 S t r e a m C l o s i n g [ t 0017740 r a n s m i s s i o n T i m e o 0017760 u t ] w i l l e v e n t u a 0020000 l l y b e g e n e r a t e d 0020020 . S e t P i n g i n g w i 0020040 l l c h a n g e t h i s p 0020060 a r a m e t e r f o r a n y 0020100 B y t e S t r e a m s t h a 0020120 t a r e c r e a t e d i n 0020140 t h e f u t u r e . A g 0020160 a i n , e x i s t i n g s t 0020200 r e a m s a r e n o t e f 0020220 f e c t e d . 032 x 4 e 1 2 j k 5 0020240 4 \ 1 4 6 f 6 b 3 4 f 0 B 3 2 f 0020260 6 b 1 0 f 0 B \r T h e r e a r 0020300 e c u r r e n t l y f o u r 0020320 o c c a s i o n s f o r T 0020340 i m e o u t s . F i r s t , 0020360 w h e n t r y i n g t o 0020400 o p e n a c o n n e c t i o 0020420 n , a n E R R O R w i l l 0020440 b e g e n e r a t e d i n 0020460 o n e m i n u t e . S e 0020500 c o n d , a f t e r a c o 0020520 n n e c t i o n i s o p e n 0020540 e d , i t w i l l b e s 0020560 m a s h e d c l o s e d i n 0020600 1 m i n u t e i f a n 0020620 a l l o c a t e i s n o t 0020640 r e c e i v e d . T h i r d , 0020660 w h i l e s e n d i n g d 0020700 a t a , t h e c o n n e c t 0020720 i o n w i l l b e c l o s 0020740 e d i f a p a c k e t i 0020760 s n o t a c k n o w l e d g 0021000 e d w i t h i n a b o u t 0021020 3 m i n u t e s . T h e 0021040 P u p B y t e S t r e a m p 0021060 a c k a g e u s e s a n a 0021100 d a p t i v e t i m e o u t 0021120 h e u r i s t i c , s o i t 0021140 i s i m p o s s i b l e t 0021160 o p r e d i c t t h e e x 0021200 a c t n u m b e r o f r e 0021220 t r a n s m i s s i o n s . 0021240 I f t h e o t h e r e n d 0021260 g o e s i n t o t h e d 0021300 e b u g g e r o r o t h e r 0021320 w i s e d i e s , t h e r 0021340 e t r a n s m i s s i o n i n 0021360 t e r v a l s h o u l d s t 0021400 a b i l i z e a t 5 s e c 0021420 o n d s . F o u r t h , i 0021440 f a c o n n e c t i o n i 0021460 s i d l e f o r a m i n 0021500 u t e , a p i n g ( e m p 0021520 t y a D a t a ) w i l l b 0021540 e g e n e r a t e d . T h 0021560 e r e a f t e r , t h e y w 0021600 i l l b e g e n e r a t e d 0021620 a t t h e n o r m a l r 0021640 e t r a n s m i s s i o n r a 0021660 t e u n t i l a n a n s w 0021700 e r i s r e c e i v e d . 0021720 I f a n a n s w e r i s 0021740 n o t r e c e i v e d w i 0021760 t h i n t w o m o r e m i 0022000 n u t e s , t h e c o n n e 0022020 c t i o n w i l l b e s m 0022040 a s h e d c l o s e d . 032 x 4 0022060 e 1 2 j k 5 4 \ 9 4 f 7 b 5 f 0 0022100 B \r V a r i o u s o t h e r 0022120 g o o d i e s 032 x 4 e 3 0 k 7 9 0022140 2 \ b \r S e t P u p S t o r m y 0022160 : P R O C E D U R E [ B O O 0022200 L E A N ] ; 032 l 4 6 4 0 d 4 2 6 0022220 8 x 4 e 1 2 k 5 4 \ f 6 b 1 4 f 0022240 7 9 f 6 2 f 7 7 f 6 \r S e 0022260 t P u p S t o r m y c o n t r 0022300 o l s t h e l i g h t n i n 0022320 g o p t i o n i n t h e 0022340 P u p R o u t e r . I f l 0022360 i g h t n i n g i s o n , 0022400 t h e n o c c a s i o n a l 0022420 p a c k e t s g o i n g i n 0022440 o r o u t w i l l b e 0022460 t h r o w n a w a y t o s 0022500 i m u l a t e t r a n s m i s 0022520 s i o n e r r o r s . T h 0022540 i s i s v e r y h a n d y 0022560 f o r d e b u g g i n g h 0022600 i g h l e v e l p r o t o c 0022620 o l s . T h e d e f a u l 0022640 t i s o f f . T h i s 0022660 o p t i o n i s n o t i n 0022700 c l u d e d i n T i n y P u 0022720 p . I f y o u n e e d 0022740 i t , u s e F a t P u p . 032 0022760 x 4 e 1 2 j k 5 4 \ f 6 b 1 2 f 0023000 0 B 1 4 i 9 I 2 1 6 f 1 3 3 f 0023020 7 b 7 f 1 B 2 3 f 7 b 6 f 1 B 1 0023040 f 0 \r U s e A l t o C h e c k s 0023060 u m M i c r o c o d e : P R O 0023100 C E D U R E ; 032 l 4 6 4 0 d 4 2 0023120 6 8 x 4 e 1 2 k 5 4 \ f 6 b 2 6 0023140 f 7 9 f 6 \r S e t P u p C h e 0023160 c k i t : P R O C E D U R E 0023200 [ B O O L E A N ] ; 032 l 4 6 4 0 0023220 d 4 2 6 8 x 4 k 5 4 \ f 6 b 1 5 0023240 f 7 9 f 6 2 f 7 7 f 6 \r T 0023260 h e p a c k e t f o r m a t 0023300 f o r a P u p p r o v i 0023320 d e s f o r a s o f t w a 0023340 r e c h e c k s u m i n a 0023360 d d i t i o n t o a n y e 0023400 r r o r c h e c k i n g t h 0023420 a t t h e h a r d w a r e 0023440 p r o v i d e s . T h i s 0023460 i s v e r y u s e f u l f 0023500 o r a v o i d i n g t r a s 0023520 h e d f i l e s i n s p i 0023540 t e o f f l a k e y h a r 0023560 d w a r e o r s i c k g a 0023600 t e w a y s . I n t e r n a 0023620 l l y , t h e r e a r e 3 0023640 o p t i o n s : i g n o r e 0023660 , s o f t w a r e , a n d 0023700 m i c r o c o d e . T h e 0023720 d e f a u l t i s s o f t w 0023740 a r e . S e t P u p C h e c 0023760 k i t [ F A L S E ] s e t s 0024000 t h e s w i t c h t o i g 0024020 n o r e . Y o u s h o u l 0024040 d d o t h i s o n l y i 0024060 f y o u r e a l l y n e e 0024100 d t o g o f a s t e r a 0024120 n d w o n ' t c o m p l a i 0024140 n i f y o u r d a t a g 0024160 e t s c o r r u p t e d o c 0024200 c a s i o n a l l y . S e t 0024220 P u p C h e c k i t [ T R U E ] 0024240 s e t s t h e s w i t c h 0024260 t o s o f t w a r e . U 0024300 s e A l t o C h e c k s u m M i 0024320 c r o c o d e s e t s t h e 0024340 s w i t c h t o m i c r o 0024360 c o d e . Y o u s h o u l 0024400 d u s e t h i s o n l y 0024420 i f y o u a r e s u r e 0024440 t h a t t h e c o r r e c t 0024460 m i c r o c o d e i s i n 0024500 t h e R A M . R u n M e 0024520 s a . r u n l o a d s t h e 0024540 R A M c o r r e c t l y i 0024560 f y o u a r e r u n n i n 0024600 g o n a n A l t o w i t 0024620 h 2 K o f P R O M o r 0024640 a 3 K R A M . T h e r 0024660 e a s o n t h a t t h e d 0024700 e f a u l t i s n ' t t o 0024720 u s e t h e m i c r o c o d 0024740 e i f t h e c o n f i g u 0024760 r a t i o n l o o k s r e a 0025000 s o n a b l e i s t o a v 0025020 o i d c o n f u s i o n w h 0025040 e n r u n w i t h p r o g 0025060 r a m s t h a t l o a d s 0025100 p e c i a l m i c r o c o d e 0025120 . B e w a r e o f g e t 0025140 t i n g r e s t a r t e d o 0025160 n a m a c h i n e w i t h 0025200 a d i f f e r e n t c o n 0025220 f i g u r a t i o n a f t e r 0025240 i f y o u u s e U s e A 0025260 l t o C h e c k s u m M i c r o 0025300 c o d e a n d c a l l M a 0025320 k e I m a g e . 032 x 4 e 1 2 j k 0025340 5 4 \ 2 5 1 f 6 b 6 f 0 B 2 f 6 0025360 b 8 f 0 B 6 f 6 b 9 f 0 B 1 8 f 0025400 6 b 8 f 0 B 3 f 6 b 1 4 f 7 5 0025420 f 6 1 f 0 B 2 0 f 6 b 6 f 0 B 0025440 1 2 1 f 6 b 1 4 f 7 4 f 6 1 0025460 f 0 B 2 0 f 6 b 8 f 0 B 3 f 6 b 0025500 2 4 f 0 B 2 0 f 6 b 9 f 0 B 8 1 0025520 f 1 3 f 0 2 5 f 1 3 f 0 0025540 5 2 f 1 4 f 0 9 f 1 3 f 0 0025560 1 f 1 1 6 8 f 0 9 1 f 6 b 0025600 2 4 f 0 B 1 0 f 6 b 9 f 0 B \r S 0025620 e t L o c a l O n l y : P R O 0025640 C E D U R E [ B O O L E A N ] 0025660 ; 032 l 4 6 4 0 d 4 2 6 8 x 4 e 1 0025700 2 k 5 4 \ f 6 b 1 4 f 7 9 f 6 0025720 2 f 7 7 f 6 \r S e t L o c a 0025740 l O n l y c o n t r o l s t 0025760 h e a c t i v a t i o n o f 0026000 t h e n o r m a l E t h e 0026020 r n e t D r i v e r . I f 0026040 i t i s o n , a d u m 0026060 m y d e v i c e i s u s e 0026100 d r a t h e r t h a n t h 0026120 e E t h e r n e t D r i v e 0026140 r . T h i s a l l o w s 0026160 b u g s t o b e r e p r o 0026200 d u c e d s l o w l y w i t 0026220 h o u t t h e c o m p l i c 0026240 a t i o n s o f r a n d o m 0026260 p a c k e t s c o m i n g 0026300 i n o v e r t h e e t h e 0026320 r n e t a t u n s c h e d u 0026340 l e d t i m e s . O f c 0026360 o u r s e , y o u w o n ' t 0026400 b e a b l e t o t a l k 0026420 t o a n y o t h e r m a 0026440 c h i n e s i f l o c a l O 0026460 n l y i s o n , b u t y 0026500 o u c a n t a l k t o y 0026520 o u r s e l f . T h i s i 0026540 s n o t i n c l u d e d i 0026560 n T i n y P u p . I f y 0026600 o u n e e d i t , i n c l 0026620 u d e L o o p B a c k P l u g 0026640 i n y o u r c o n f i g . 0026660 032 x 4 e 1 2 j k 5 4 \ f 6 b 1 2 0026700 f 0 B 3 2 5 f 6 b 9 f 0 B 3 7 f 0026720 1 2 6 f 7 b 7 f 1 B 2 7 f 7 b 0026740 1 2 f 1 B 1 6 f 0 \r C a p t u r 0026760 e E r r o r s : P R O C E D U 0027000 R E [ P R O C E D U R E [ E R 0027020 R O R ] ] ; 032 l 4 6 4 0 d 4 2 6 0027040 8 x 4 e 1 2 k 5 4 \ f 6 b 1 5 f 0027060 7 1 0 f 6 1 f 7 1 6 f 6 \r 0027100 T h e r e a r e m a n y i 0027120 n t e r n a l c o n s i s t e 0027140 n c y c h e c k s w i t h i 0027160 n t h e P u p P a c k a g 0027200 e . W h e n a p r o b l 0027220 e m i s d e t e c t e d , 0027240 a p r o c e d u r e i s c 0027260 a l l e d w i t h a n E R 0027300 R O R a s a n a r g u m e 0027320 n t . ( T h e E R R O R 0027340 i s s i m p l y a c o n v 0027360 i e n t w a y t o g e t 0027400 t h e c o m p i l e r / s y s 0027420 t e m t o g e n e r a t e 0027440 a u n i q u e v a l u e . 0027460 W h e n a n e n u m e r a 0027500 t e d t y p e i s u s e d 0027520 , i t i s m o r e t i m 0027540 e c o n s u m i n g t o a 0027560 d d a n e w c a t e g o r 0027600 y o f p r o b l e m t o 0027620 t h e l i s t . ) T h e 0027640 d e f a u l t e r r o r h a 0027660 n d l e r s i m p l y d i v 0027700 e s i n t o t h e d e b u 0027720 g g e r v i a C a l l D e b 0027740 u g e r f r o m M i s c D e 0027760 f s . I f t h a t h a p 0030000 p e n s t o y o u , l o o 0030020 k a t t h e s t a c k . 0030040 I t s a r g u m e n t w i 0030060 l l g e t p r i n t e d i 0030100 n e n g l i s h i f y o u 0030120 h a v e e n o u g h s y m 0030140 b o l s o n y o u r d i s 0030160 k . I f n o t , t h e 0030200 S i g n a l L i s t e r m a y 0030220 h e l p . 032 x 4 e 1 2 j k 5 4 0030240 \ 1 2 6 f 7 b 5 f 0 B 2 3 f 7 b 0030260 5 f 0 B 2 5 0 f 6 b 1 1 f 0 B 6 0030300 f 6 b 8 f 0 B 1 4 2 f 6 b 1 2 f 0030320 0 B \r G e t D o S t a t s : P 0030340 R O C E D U R E R E T U R N S 0030360 [ B O O L E A N ] ; 032 l 4 6 4 0030400 0 d 4 2 6 8 x 4 e 1 2 k 5 4 \ f 0030420 6 b 1 2 f 7 1 7 f 6 2 f 7 0030440 7 f 6 \r T h e P u p P a c k 0030460 a g e i n c l u d e s a ( 0030500 c o m p i l e t i m e ) o p 0030520 t i o n a l s t a t i s t i c 0030540 s g a t h e r i n g f a c i 0030560 l i t y . G e t D o S t a t 0030600 s r e t u r n s T R U E i 0030620 f i t h a s b e e n c o 0030640 m p i l e d i n . 032 x 4 e 1 2 0030660 j k 5 4 \ 8 3 f 6 b 1 0 f 0 B 9 0030700 f 7 b 4 f 0 B \r I n s p e c t I 0030720 n c o m i n g P u p s : P R O 0030740 C E D U R E [ B O O L E A N , 0030760 P R O C D U R E [ C A R D I 0031000 N A L , P u p B u f f e r ] ] 0031020 ; 032 l 4 6 4 0 d 4 2 6 8 x 4 e 1 0031040 2 k 7 2 0 \ f 6 b 2 1 f 7 1 0 0031060 f 6 1 f 7 2 9 f 6 9 f 7 0031100 1 f 6 \r I n s p e c t O u t g o 0031120 i n g P u p s : P R O C E D U 0031140 R E [ B O O L E A N , P R O 0031160 C D U R E [ C A R D I N A L , 0031200 P u p B u f f e r ] ] ; 032 l 4 0031220 6 4 0 d 4 2 6 8 x 4 k 5 4 \ f 6 0031240 b 2 1 f 7 1 0 f 6 1 f 7 2 0031260 9 f 6 9 f 7 1 f 6 \r i n c o 0031300 m i n g P u p : C A R D I N A 0031320 L = 1 0 0 ; 032 l 5 9 1 0 d 5 0031340 5 3 8 x 4 k 5 4 \ f 6 b 1 3 f 7 0031360 8 f 6 \r o u t g o i n g P u p 0031400 : C A R D I N A L = 1 0 1 0031420 ; 032 l 5 9 1 0 d 5 5 3 8 x 4 k 5 0031440 4 \ f 6 b 1 3 f 7 8 f 6 \r z a 0031460 p p e d I n c o m m i n g P u p 0031500 : C A R D I N A L = 1 0 2 0031520 ; 032 l 5 9 1 0 d 5 5 3 8 x 4 k 5 0031540 4 \ f 6 b 2 0 f 7 8 f 6 \r z a 0031560 p p e d O u t g o i n g P u p : 0031600 C A R D I N A L = 1 0 3 ; 0031620 032 l 5 9 1 0 d 5 5 3 8 x 4 k 5 4 0031640 \ f 6 b 1 9 f 7 8 f 6 \r S h o 0031660 w P u p B u f f e r : P R O C 0031700 E D U R E [ C A R D I N A L , 0031720 P u p B u f f e r ] ; 032 l 4 6 0031740 4 0 d 4 2 6 8 x 4 k 5 4 \ f 6 b 0031760 1 5 f 7 1 0 f 6 1 f 7 1 0 0032000 f 6 \r T h e r e a r e a l s 0032020 o h o o k s f o r i n s p 0032040 e c t i n g e a c h P u p 0032060 a s i t g o e s i n o r 0032100 o u t , a n d a r o u t 0032120 i n e t h a t p r i n t s 0032140 t h e m . S h o w P u p B u 0032160 f f e r i s n o t p a r t 0032200 o f t h e n o r m a l P 0032220 u p P a c k a g e . I t 0032240 l i v e s i n P u p S h o w 0032260 . b c d . 032 x 4 e 1 2 j k 5 4 \ 0032300 1 0 0 f 6 b 1 3 f 0 B 4 i 3 I \r 0032320 I n s p e c t I n c o m i n g P 0032340 u p s [ T R U E , S h o w P u p 0032360 B u f f e r ] w i l l p r i 0032400 n t a l l i n c o m i n g 0032420 P u p s . Y o u c a n , 0032440 o f c o u r s e , s u p p l 0032460 y y o u r o w n r o u t i 0032500 n e t o p r i n t t h e m 0032520 i n t h e f o r m a t t 0032540 h a t y o u p r e f e r a 0032560 n d / o r p r i n t o n l y 0032600 t h e i n t e r e s t i n g 0032620 o n e s . 032 x 4 e 1 2 j k 5 4 0032640 \ f 6 b 2 0 f 7 4 f 6 1 5 f 0032660 0 B \r W a t c h e r s 032 x 4 e 3 0032700 2 j k 7 9 2 \ b \r T h e w a t 0032720 c h e r c o n c e p t h a s 0032740 t w o i d e a s . F i r 0032760 s t , i t a l l o w s a 0033000 c l i e n t p r o g r a m t 0033020 o l o o k a t P u p s a 0033040 r r i v i n g w h e n t h e 0033060 r e i s n o s o c k e t 0033100 r e a d y t o r e c e i v e 0033120 t h e m . T h i s w o u 0033140 l d a l l o w i t t o f 0033160 i r e u p a l i s t e n e 0033200 r w h e n a n R F C a r 0033220 r i v e s , a n d n o t c 0033240 l u t t e r u p c o r e o 0033260 r o t h e r r e s o u r c e 0033300 s b y l i s t e n i n g w 0033320 h e n t h e r e i s n o 0033340 n e e d . 032 x 4 e 1 2 j k 5 4 \ 0033360 4 i 7 I \r T h e s e c o n d 0033400 i d e a i s t o a l l o w 0033420 p r o g r a m s t o p a y 0033440 a t t e n t i o n t o t h 0033460 e E t h e r n e t w h e n 0033500 t h e P u p P a c k a g e 0033520 i s n o t r e a l l y o n 0033540 . T h i s s a v e s a 0033560 l o t o f c o r e i f t 0033600 h e r e i s n o r e a l 0033620 n e e d f o r t h e P u p 0033640 P a c k a g e . A g a i n 0033660 , i f a n R F C a r r i 0033700 v e s , t h e P u p P a c 0033720 k a g e c a n b e t u r n 0033740 e d o n a n d a l i s t 0033760 e n e r s t a r t e d . ( 0034000 T h i s h a s n o t b e e 0034020 n r e i m p l e m e n t e d 0034040 s i n c e M e s a 3 ; I f 0034060 y o u n e e d i t , p l 0034100 e a s e l e t m e k n o w 0034120 . ) 032 x 4 e 1 2 j k 5 4 \r I n s 0034140 p e c t S t r a y P u p s : P 0034160 R O C E D U R E [ \r o n : B 0034200 O O L E A N , \r s e e B r o a d 0034220 C a s t : B O O L E A N , \r p 0034240 r o c : P R O C E D U R E [ 0034260 P u p B u f f e r ] R E T U R 0034300 N S [ B O O L E A N ] ] ; 032 l 0034320 4 6 4 0 d 4 2 6 8 x 4 e 1 2 k 5 0034340 4 \ f 6 b 1 8 f 7 9 f 6 2 f 0034360 7 1 f 6 4 f 7 9 f 6 1 4 0034400 f 7 9 f 6 6 f 7 9 f 6 1 0034420 3 f 7 7 f 6 2 f 7 7 f 6 \r 0034440 I f o n i s T R U E , t 0034460 h e n w a t c h i n g i s 0034500 s t a r t e d . I f n o t 0034520 , i t i s s t o p p e d . 0034540 A f t e r w a t c h i n g 0034560 h a s b e e n s t a r t e 0034600 d , p r o c w i l l b e 0034620 c a l l e d e a c h t i m e 0034640 a P u p a r r i v e s f 0034660 o r a n u n k n o w n s o 0034700 c k e t . I f i t i s 0034720 a b r o a d c a s t P u p , 0034740 t h e n s e e B r o a d C a 0034760 s t m u s t a l s o h a v 0035000 e b e e n T R U E a t t 0035020 h e l a s t c a l l t o 0035040 I n s p e c t S t r a y P u p s 0035060 . T h e p r o c m u s t 0035100 n o t d o a n y t h i n g 0035120 t o t h e b u f f e r - 0035140 i n p a r t i c u l a r , 0035160 d o n o t c a l l R e t u 0035200 r n F r e e P u p B u f f e r . 0035220 I f t h e p r o c r e 0035240 t u r n s T R U E , t h e 0035260 P u p P a c k a g e s e n d 0035300 s a n E r r o r P u p ( 0035320 w i t h s u b t y p e n o - 0035340 s o c k e t ) b a c k t o 0035360 t h e s e n d e r i f i t 0035400 i s n o t a b r o a d c 0035420 a s t p a c k e t o r a n 0035440 e r r o r P u p . 032 x 4 e 1 0035460 2 j k 5 4 \ 3 f 6 b 2 f 0 B 4 f 0035500 7 b 4 f 0 B 8 6 f 6 b 4 f 0 B 9 0035520 5 f 6 b 1 2 f 0 B 2 1 f 7 b 4 f 0035540 0 B 2 1 f 6 b 1 6 f 0 B 7 f 6 b 0035560 4 f 0 B 6 5 f 6 b 1 9 f 0 B 1 0 0035600 f 6 b 4 f 0 B 9 f 7 b 4 f 0 B \r 0035620 P u p D e b u g 032 x 4 e 3 2 j k 0035640 5 4 \ b \r T h e r e i s a l 0035660 s o a s e t o f d e b u 0035700 g g i n g r o u t i n e s t 0035720 h a t a r e a c c e s s e d 0035740 v i a M e n u c o m m a n 0035760 d s i n t h e D e b u g g 0036000 e r . T h e y o n l y w 0036020 o r k i f y o u a r e u 0036040 s i n g F a t P u p . T h 0036060 e y a r e c o n t a i n e d 0036100 i n P u p D e b u g . b c d 0036120 . I t n e e d s t o b 0036140 e l o a d e d i n t o t h 0036160 e D e b u g g e r ' s c o r 0036200 e i m a g e w i t h a c 0036220 o m m a n d l i n e s i m i 0036240 l a r t o t h e f o l l o 0036260 w i n g : 032 x 4 e 1 2 j k 5 4 \r 0036300 > X D e b u g P u p D e b u g 0036320 / l 032 l 4 2 6 9 x 4 e 1 2 j k 5 0036340 4 \ 1 f 6 \r I t a d d s i t 0036360 s o w n m e n u t o t h 0036400 e m a i n m e n u s t a c 0036420 k . T h e v a r i o u s 0036440 c o m m a n d s w i l l p r 0036460 i n t t h e r o u t i n g 0036500 t a b l e , t h e s o c k e 0036520 t t a b l e , a s u m m a 0036540 r y o f t h e b u f f e r 0036560 h e a d e r s , s u m m a r 0036600 y o f t h e p a c k e t 0036620 c o n t e n t s , o r t h e 0036640 c u r r e n t c o n t e n t 0036660 s o f t h e c o u n t e r 0036700 s m a i n t a i n e d b y 0036720 t h e S t a t s P a c k a g 0036740 e . 032 x 4 e 1 2 j k 5 4 \r N a m 0036760 e p r o c e s s i n g u t i 0037000 l i t i e s 032 x 4 e 3 2 j k 7 9 0037020 2 \ b \r T h e P u p P a c k 0037040 a g e a l s o p r o v i d e 0037060 s a c o l l e c t i o n o 0037100 f c o m m o n l y n e e d e 0037120 d r o u t i n e s f o r t 0037140 r a n s l a t i n g n a m e s 0037160 a n d a d d r e s s e s . 032 0037200 x 4 e 2 0 j k 6 2 \r G e t P u p 0037220 A d d r e s s : P R O C E D U 0037240 R E [ P O I N T E R T O P 0037260 u p A d d r e s s , S T R I N 0037300 G ] ; 032 l 4 6 4 0 d 4 2 6 8 x 4 0037320 e 1 2 k 5 4 \ f 6 b 1 5 f 7 9 0037340 f 6 2 f 7 1 0 f 6 1 3 f 7 0037360 6 f 6 \r P u p N a m e L o o k 0037400 u p : P R O C E D U R E [ P 0037420 O I N T E R T O P u p A d d 0037440 r e s s , S T R I N G ] ; 032 l 0037460 4 6 4 0 d 4 2 6 8 x 4 k 5 4 \ f 0037500 6 b 1 5 f 7 9 f 6 2 f 7 1 0037520 0 f 6 1 3 f 7 6 f 6 \r E n u 0037540 m e r a t e P u p A d d r e s s 0037560 e s : P R O C E D U R E [ \r 0037600 S T R I N G , P R O C E D U R 0037620 E [ P u p A d d r e s s ] R 0037640 E T U R N S [ B O O L E A N ] 0037660 ] , \r R E T U R N S [ B O O 0037700 L E A N ] ; 032 l 4 6 4 0 d 4 2 6 0037720 8 x 4 k 5 4 \ f 6 b 2 3 f 7 9 0037740 f 6 2 f 7 1 8 f 6 1 4 f 7 0037760 7 f 6 2 f 7 7 f 6 5 f 7 0040000 7 f 6 2 f 7 7 f 6 \r P u p 0040020 A d d r e s s L o o k u p : P 0040040 R O C E D U R E [ P u p A d d 0040060 r e s s , S T R I N G ] ; 032 l 0040100 4 6 4 0 d 4 2 6 8 x 4 k 5 4 \ f 0040120 6 b 1 8 f 7 9 f 6 1 4 f 7 0040140 6 f 6 \r P u p N a m e T r o u b 0040160 l e : E R R O R [ e : S T 0040200 R I N G , c o d e : N a m e 0040220 L o o k u p E r r o r C o d e ] 0040240 ; 032 l 4 2 5 6 x 4 e 2 4 k 5 4 \ 0040260 f 6 b 1 6 f 7 5 f 6 5 f 7 0040300 6 f 6 2 9 f 0 B \r N a m e L o 0040320 o k u p E r r o r C o d e : T 0040340 Y P E = { n o R o u t e , 0040360 n o R e s p o n s e , e r r o 0040400 r F r o m S e r v e r } ; 032 l 4 0040420 2 5 6 x 4 k 5 4 \ f 6 b 2 1 f 7 0040440 4 f 6 \r G e t P u p A d d r e 0040460 s s f i r s t c a l l s P 0040500 a r s e P u p A d d r e s s C o 0040520 n s t a n t , a n d i f t 0040540 h a t f a i l s , i t c a 0040560 l l s P u p N a m e L o o k u 0040600 p . P u p N a m e L o o k u 0040620 p m a k e s a s p e c i a 0040640 l c a s e c h e c k f o r 0040660 a n a m e o f " M E " 0040700 ( b o t h l e t t e r s m u 0040720 s t b e c a p i t a l s ) . 0040740 I f s o , i t r e t u 0040760 r n s t h e a d d r e s s 0041000 o f t h e l o c a l m a c 0041020 h i n e . O t h e r w i s e 0041040 i t s e n d s t h e t e 0041060 x t s t r i n g t o t h e 0041100 n a m e l o o k u p s e r 0041120 v e r w h i c h i s n o r 0041140 m a l l y r u n n i n g o n 0041160 a n e a r b y G a t e w a 0041200 y . S i n c e a m a c h 0041220 i n e m a y h a v e s e v 0041240 e r a l a d d r e s s e s , 0041260 P u p N a m e L o o k u p s e 0041300 l e c t s t h e b e s t o 0041320 n e o f t h e a n s w e r 0041340 s r e t u r n e d . 032 x 4 e 6 0041360 j k 5 4 \ f 6 b 1 3 f 0 B 1 3 f 0041400 6 b 2 3 f 0 B 3 0 f 6 b 1 3 f 0 0041420 B 3 f 6 b 1 3 f 0 B 2 8 7 f 6 b 0041440 1 3 f 0 B \r T h e r e a r e 0041460 t h r e e r e a s o n s w h 0041500 y P u p N a m e L o o k u p 0041520 m a y n o t b e a b l e 0041540 t o s u p p l y a r e a s 0041560 o n a b l e a n s w e r . 0041600 I f s o , i t w i l l g 0041620 e n e r a t e t h e E R R O 0041640 R P u p N a m e T r o u b l e 0041660 w i t h a t e x t s t r 0041700 i n g t h a t m i g h t h 0041720 e l p a p e r s o n a n d 0041740 a n e r r o r c o d e t 0041760 h a t m i g h t b e u s e 0042000 f u l b y a p r o g r a m 0042020 . I n t h e f i r s t 0042040 c a s e , n o R o u t e , t 0042060 h e i n f o r m a t i o n w 0042100 a s r e c e i v e d f r o m 0042120 t h e g a t e w a y , b u 0042140 t t h e r e i s n o w a 0042160 y t o g e t t o t h e 0042200 t a r g e t m a c h i n e . 0042220 I n t h e s e c o n d , 0042240 n o R e s p o n s e , n o n 0042260 a m e l o o k u p s e r v e 0042300 r r e s p o n d e d w i t h 0042320 i n a r e a s o n a b l e 0042340 l e n g t h o f t i m e . 0042360 U n f o r t u n a t e l y , 0042400 t h e t h i r d c a s e , 0042420 e r r o r F r o m S e r v e r , 0042440 d o e s n o t h e l p a 0042460 p r o g r a m m u c h . 0042500 T h e p r o t o c o l d o e 0042520 s n o t s u p p l y e r r 0042540 o r c o d e s u s e f u l 0042560 t o p r o g r a m s , b u t 0042600 t h e d e s i r e d i n f 0042620 o r m a t i o n i s p r o b 0042640 a b l y i n t h e t e x t 0042660 s t r i n g . 032 x 4 e 6 j k 5 0042700 4 \ 2 8 f 6 b 1 3 f 0 B 7 7 f 7 0042720 b 5 f 0 B 1 f 6 b 1 4 f 0 B 1 1 0042740 8 f 6 b 7 f 0 B 1 1 5 f 6 b 1 0 0042760 f 0 B 1 0 2 f 6 b 1 5 f 0 B \r I 0043000 f t h e s o c k e t n u m 0043020 b e r f r o m t h e t e x 0043040 t s t r i n g i s n o t 0043060 e x p l i c i t l y s p e c i 0043100 f i e d , t h e s o c k e t 0043120 n u m b e r i n t h e P 0043140 u p A d d r e s s w i l l n 0043160 o t b e u p d a t e d . 0043200 B e s u r e t o i n i t i 0043220 a l i z e i t ! . T h i s 0043240 a l l o w s a p r o g r a 0043260 m t o i n i t i a l i z e 0043300 a d e f a u l t v a l u e 0043320 t h a t c a n e a s i l y 0043340 b e o v e r r i d d e n f o 0043360 r d e b u g g i n g b y a 0043400 p e r s o n t y p i n g i 0043420 n a t e x t s t r i n g 0043440 t h a t i s n o r m a l l y 0043460 j u s t a m a c h i n e 0043500 n a m e . 032 x 4 e 6 j k 5 4 \ 9 0043520 6 f 6 b 1 0 f 0 B \r T h e t e 0043540 x t s t r i n g i s e i t 0043560 h e r t h e n a m e o f 0043600 a m a c h i n e o r t h e 0043620 a c t u a l a d d r e s s 0043640 o f t h e m a c h i n e e 0043660 n c o d e d a s " < h o s 0043700 t > # " f o r a m a c h i 0043720 n e o n t h e l o c a l 0043740 n e t w o r k , o r " < n e 0043760 t > # < h o s t > # " t o s 0044000 p e c i f y a n e x p l i c 0044020 i t n e t w o r k n u m b e 0044040 r . I f y o u a l s o 0044060 w a n t t o s p e c i f y 0044100 t h e r e m o t e s o c k e 0044120 t n u m b e r u s e " < n 0044140 a m e > + < s o c > " o r " 0044160 < n e t > # < h o s t > # < s o 0044200 c > " . < n a m e > i s 0044220 a t e x t s t r i n g r e 0044240 g i s t e r e d i n t h e 0044260 f i l e < P o r t o l a > P U 0044300 P - N E T W O R K . T X T o n 0044320 I v y . < n e t > , < h 0044340 o s t > , a n d < s o c > 0044360 a r e o c t a l n u m b e r 0044400 s . S e e E d T a f t ' 0044420 s m e m o , [ M a x c ] < P 0044440 u p > P u p N a m e . p r e s s 0044460 , f o r t h e f i n e p 0044500 r i n t . 032 x 4 e 6 j k 5 4 \ 3 0044520 0 i 4 I 2 8 i 7 I \r E n u m e r 0044540 a t e P u p A d d r e s s e s 0044560 i s s i m i l a r t o P u 0044600 p N a m e L o o k u p b u t 0044620 i t g i v e s t h e c l i 0044640 e n t a l l o f t h e a 0044660 d d r e s s e s i n t h e 0044700 d a t a b a s e i n c a s e 0044720 t h e r e i s m o r e t 0044740 h a n o n e . T h i s i 0044760 s u s e f u l f o r l o c 0045000 a t i n g b a c k u p s e r 0045020 v e r s i n c a s e t h e 0045040 p r i m a r y o n e i s 0045060 d o w n . T h e n e a r e 0045100 s t a d d r e s s e s a r e 0045120 p r e s e n t e d f i r s t 0045140 a n d t h e o r d e r i 0045160 n t h e n a m e l o o k u 0045200 p d a t a b a s e i s p r 0045220 e s e r v e d w h e n t h e 0045240 r e a r e s e v e r a l a 0045260 n s w e r s e q u a l l y c 0045300 l o s e . I t a n a d d 0045320 r e s s i s c u r r e n t l 0045340 y n o t r e a c h a b l e , 0045360 t h e e n t r y i s s t 0045400 i l l p r e s e n t e d t o 0045420 t h e c l i e n t . ( P 0045440 u p N a m e L o o k u p s i m 0045460 p l y p i c k s t h e f i 0045500 r s t o n e . ) A l t h o 0045520 u g h i t i s p o s s i b 0045540 l e t o s e n d a n d r 0045560 e c e i v e P u p s f r o m 0045600 w i t h i n t h e c l i e 0045620 n t s u p p l i e d p r o c 0045640 e d u r e ( f o r e x a m p 0045660 l e , t o s e e i f t h 0045700 a t m a c h i n e i s u p 0045720 ) t h a t s h o u l d p r 0045740 o b a b l y b e a v o i d e 0045760 d s i n c e t h e b u f f 0046000 e r t h a t t h e a n s w 0046020 e r a r r i v e d i n ( a 0046040 n d o t h e r s w i t h d 0046060 u p l i c a t e a n s w e r s 0046100 i f t h e r e i s m o r 0046120 e t h a n o n e n a m e 0046140 l o o k u p s e r v e r o n 0046160 t h e l o c a l n e t w o 0046200 r k ) i s s t i l l t i e 0046220 d u p . I f t h e c l 0046240 i e n t p r o c e d u r e r 0046260 e t u r n s T R U E , t h e 0046300 r e s t o f t h e e n t 0046320 r i e s a r e i g n o r e d 0046340 . E n u m e r a t e P u p A 0046360 d d r e s s e s r e t u r n s 0046400 F A L S E i f t h e c l 0046420 i e n t p r o c e d u r e n 0046440 e v e r r e t u r n s T R U 0046460 E . 032 x 4 e 6 j k 5 4 \ f 6 b 2 0046500 1 f 0 B 1 5 f 6 b 1 3 f 0 B 4 0 0046520 4 f 6 b 1 3 f 0 B 3 9 5 f 7 b 4 0046540 f 0 B 4 0 f 6 b 2 1 f 0 B 9 f 7 0046560 b 5 f 0 B 3 9 f 7 b 4 f 0 B \r P 0046600 a r s e P u p A d d r e s s C o 0046620 n s t a n t : P R O C E D U R 0046640 E [ P O I N T E R T O P u 0046660 p A d d r e s s , S T R I N G 0046700 ] \r R E T U R N S [ B O O L E 0046720 A N ] ; 032 l 4 6 4 0 d 4 2 6 8 x 0046740 4 e 1 2 k 5 4 \ f 6 b 2 5 f 7 0046760 9 f 6 2 f 7 1 0 f 6 1 3 f 0047000 7 6 f 6 2 f 7 7 f 6 2 f 0047020 7 7 f 6 \r P a r s e P u p A d 0047040 d r e s s C o n s t a n t t r 0047060 i e s t o p a r s e t h e 0047100 t e x t s t r i n g i n t 0047120 o a n e t w o r k a d d r 0047140 e s s . T h e s t r i n g 0047160 m u s t b e o f t h e 0047200 f o r m < h o s t > # , < n 0047220 e t > # < h o s t > # , o r 0047240 < n e t > # < h o s t > # < s o 0047260 c > . S i n c e s o c k e 0047300 t n u m b e r s m a y b e 0047320 3 2 b i t s , t h e f o 0047340 r m < s o c - h i g h > | < s 0047360 o c - l o w > m a y a l s o 0047400 b e u s e d t o s p e c 0047420 i f y a s o c k e t n u m 0047440 b e r . A l l n u m b e r 0047460 s a r e o c t a l . I n 0047500 v a l i d c h a r a c t e r s 0047520 , o v e r s i z e n u m b e 0047540 r s a n d w h a t e v e r 0047560 m e r e l y r e t u r n F A 0047600 L S E . 032 x 4 e 1 2 j k 5 4 \ f 0047620 6 b 2 3 f 0 B 3 3 7 f 7 b 5 f 0 0047640 B \r A p p e n d P u p A d d r e 0047660 s s : P R O C E D U R E [ S 0047700 T R I N G , P u p A d d r e s 0047720 s ] ; 032 l 4 6 4 0 d 4 2 6 8 x 4 0047740 e 1 2 k 5 4 \ f 6 b 1 8 f 7 9 0047760 f 6 2 f 7 6 f 6 \r A p p e n 0050000 d H o s t A d d r e s s : P R 0050020 O C E D U R E [ S T R I N G , 0050040 P u p A d d r e s s ] ; 032 l 4 0050060 6 4 0 d 4 2 6 8 x 4 k 5 4 \ f 6 0050100 b 1 9 f 7 9 f 6 2 f 7 6 f 0050120 6 \r A p p e n d M y N a m e : 0050140 P R O C E D U R E [ S T R I N 0050160 G ] ; 032 l 4 6 4 0 d 4 2 6 8 x 4 0050200 k 5 4 \ f 6 b 1 4 f 7 9 f 6 0050220 2 f 7 6 f 6 \r A p p e n d P u 0050240 p A d d r e s s a p p e n d s 0050260 a t e x t t r a n s l a t 0050300 i o n o f t h e s p e c i 0050320 f i e d a d d r e s s t o 0050340 t h e s t r i n g . T h e 0050360 f o r m a t i s n e t # h 0050400 o s t # s o c , w h e r e s 0050420 o c m a y b e m o r e t 0050440 h a n 1 6 b i t s . A l 0050460 l n u m b e r s a r e i n 0050500 o c t a l . A p p e n d H 0050520 o s t A d d r e s s u s e s 0050540 P u p A d d r e s s L o o k u p 0050560 t o t r a n s l a t e t h 0050600 e a d d r e s s i n t o a 0050620 n a m e . I f i t r u 0050640 n s i n t o t r o u b l e s 0050660 , i t c a l l s A p p e n 0050700 d P u p A d d r e s s . A p 0050720 p e n d M y N a m e f a b r i 0050740 c a t e s a n a d d r e s s 0050760 f o r t h e l o c a l m 0051000 a c h i n e , a n d t h e n 0051020 c a l l s A p p e n d H o s 0051040 t A d d r e s s . 032 x 4 e 1 2 j 0051060 k 5 4 \ f 6 b 1 6 f 0 B 1 6 1 f 0051100 6 b 1 7 f 0 B 6 f 6 b 1 6 f 0 B 0051120 7 5 f 6 b 1 6 f 0 B 3 f 6 b 1 2 0051140 f 0 B 6 1 f 6 b 1 7 f 0 B \r A l 0051160 t h o u g h n o t r e a l l 0051200 y n e e d e d f o r n a m 0051220 e p r o c e s s i n g , G e 0051240 t H o p s T o N e t w o r k i 0051260 s n o r m a l l y u s e d 0051300 a l o n g w i t h o t h e r 0051320 r o u t i n e s i n t h i 0051340 s s e c t i o n , s o i t 0051360 i s d e s c r i b e d h e 0051400 r e . 032 x 4 e 2 4 j k 5 4 \ 4 8 0051420 f 6 b 1 6 f 0 B \r G e t H o p s 0051440 T o N e t w o r k : P R O C E 0051460 D U R E [ P u p N e t I D ] 0051500 R E T U R N S [ C A R D I N A 0051520 L ] ; 032 l 4 6 4 0 d 4 2 6 8 x 4 0051540 e 1 2 k 5 4 \ f 6 b 1 8 f 7 9 0051560 f 6 1 2 f 7 7 f 6 2 f 7 0051600 8 f 6 \r G e t H o p s T o N e t 0051620 w o r k c a n b e u s e d 0051640 t o h e l p y o u d e c 0051660 i d e w h i c h m a c h i n 0051700 e y o u w a n t t o t a 0051720 l k t o . I t r e t u r 0051740 n s a h u g e n u m b e r 0051760 i f t h e n e t w o r k 0052000 n u m b e r i s u n r e a s 0052020 o n a b l e o r t h e r e 0052040 i s c u r r e n t l y n o 0052060 w a y t o g e t t h e r e 0052100 f r o m h e r e . I n 0052120 t h e f u t u r e , t h e 0052140 P u p P a c k a g e m a y 0052160 b e a b l e t o p r o v i 0052200 d e m o r e i n f o r m a t 0052220 i o n . 032 x 4 e 1 2 j k 5 4 \ f 0052240 6 b 1 6 f 0 B \r P a c k e t u 0052260 t i l i t i e s 032 x 4 e 3 0 k 7 0052300 9 2 \ b \r T h i s s e c t i o 0052320 n d e s c r i b e s t h e 0052340 b a s i c t h i n g s t h a 0052360 t c l i e n t p r o g r a m 0052400 s c a n d o t o p a c k 0052420 e t s a n d / o r b u f f e 0052440 r s . T h e y w i l l b 0052460 e u s e d b y c l i e n t 0052500 p r o g r a m s t h a t i 0052520 n t e r f a c e a t t h e 0052540 S o c k e t l e v e l . 032 x 4 0052560 e 2 0 j k 6 2 \r W e h a v e 0052600 a d o p t e d t h e c o n v 0052620 e n t i o n t h a t f i e l 0052640 d s i n t h e b u f f e r 0052660 t h a t c a n b e s i m 0052700 p l y r e a d / w r i t t e n 0052720 b y c l i e n t p r o g r 0052740 a m s s h o u l d b e a c 0052760 c e s s e d d i r e c t l y 0053000 f o r e f f i c i e n c y . 0053020 S u c h f i e l d s i n c 0053040 l u d e t h e p u p T y p e 0053060 , t h e s o u r c e a n d 0053100 d e s t i n a t i o n P u p 0053120 A d d r e s s e s , a n d t 0053140 h e d a t a . A P u p B 0053160 u f f e r i s a n O V E R 0053200 L A I D R E C O R D , s o 0053220 y o u c a n a c c e s s t 0053240 h e d a t a p o r t i o n 0053260 o f i t a s b . p u p B y 0053300 t e s [ i ] ( a P A C K E D 0053320 A R R A Y O F B y t e s ) 0053340 , b . p u p C h a r s [ i ] 0053360 ( a P A C K E D A R R A Y 0053400 O F C H A R A C T E R s ) o 0053420 r b . p u p W o r d s [ i ] 0053440 ( a n A R R A Y O F W O R 0053460 D s ) . I f y o u r d a 0053500 t a i s a R E C O R D ( 0053520 a v e r y g o o d i d e a 0053540 ) y o u c a n L O O P H O 0053560 L E a P O I N T E R t o 0053600 y o u r r e c o r d t o b 0053620 e @ b . p u p B o d y . W 0053640 e h a v e a l s o p r o v 0053660 i d e d a p a i r o f s 0053700 i m p l e r o u t i n e s t 0053720 o a c c e s s t h e o t h 0053740 e r i n t e r e s t i n g f 0053760 i e l d - t h e l e n g t 0054000 h . 032 x 4 e 2 0 j k 6 2 \ 1 7 7 0054020 f 6 b 7 f 0 B 6 f 6 b 6 f 0 B 5 0054040 f 6 b 1 1 f 0 B 1 f 6 b 1 0 f 0 0054060 B 2 1 f 6 b 9 f 0 B 7 f 7 b 1 5 0054100 f 0 B 4 6 f 6 b 1 3 f 0 B 4 f 7 0054120 b 1 2 f 0 B 1 f 7 b 2 f 6 5 f 0054140 0 B 4 f 6 b 1 3 f 0 B 4 f 7 b 1 0054160 2 f 0 B 1 f 7 b 2 f 6 1 f 7 0054200 9 f 0 B 6 f 6 b 1 3 f 0 B 5 f 7 0054220 b 1 3 f 0 B 2 3 f 7 b 6 f 0 B 2 0054240 8 f 7 b 8 f 0 B 3 f 7 b 7 f 0 B 0054260 2 2 f 6 b 1 0 f 0 B \r S e t P u 0054300 p C o n t e n t s B y t e s : 0054320 P R O C E D U R E [ P u p B u 0054340 f f e r , C A R D I N A L ] ; 0054360 032 l 4 6 4 0 d 4 2 6 8 x 4 e 1 2 0054400 k 5 4 \ f 6 b 2 1 f 7 9 f 6 0054420 1 3 f 7 8 f 6 \r S e t P u p C 0054440 o n t e n t s W o r d s : P R 0054460 O C E D U R E [ P u p B u f f 0054500 e r , C A R D I N A L ] ; 032 l 0054520 4 6 4 0 d 4 2 6 8 x 4 k 5 4 \ f 0054540 6 b 2 1 f 7 9 f 6 1 3 f 7 0054560 8 f 6 \r G e t P u p C o n t e n 0054600 t s B y t e s : P R O C E D U 0054620 R E [ P u p B u f f e r ] R 0054640 E T U R N S [ C A R D I N A L 0054660 ] ; 032 l 4 6 4 0 d 4 2 6 8 x 4 k 0054700 5 4 \ f 6 b 2 1 f 7 9 f 6 1 0054720 3 f 7 7 f 6 2 f 7 8 f 6 \r 0054740 D a t a W o r d s P e r P u p B 0054760 u f f e r : P R O C E D U R E 0055000 R E T U R N S [ C A R D I N 0055020 A L ] ; 032 l 4 6 4 0 d 4 2 6 8 x 0055040 4 k 5 4 \ f 6 b 2 3 f 7 9 f 6 0055060 1 f 7 7 f 6 2 f 7 8 f 6 0055100 \r T h e r e a r e t w o l 0055120 e n g t h s i n v o l v e d 0055140 h e r e . p u p L e n g t h 0055160 i s t h e t o t a l l e 0055200 n g t h o f t h e p u p 0055220 i n b y t e s , n o t w o 0055240 r d s , a n d e x i s t s 0055260 a s a f i e l d i n t h 0055300 e p a c k e t . T h e c 0055320 o n t e n t s l e n g t h i 0055340 n c l u d e s o n l y t h e 0055360 t e x t s u p p l i e d b 0055400 y t h e u s e r . T o d 0055420 a y , p u p L e n g t h i s 0055440 t h e c o n t e n t s l e 0055460 n g t h p l u s 2 2 . B 0055500 e s u r e n o t t o o v 0055520 e r f i l l a b u f f e r 0055540 - - y o u w i l l c l o b 0055560 b e r t h e h e a d e r o 0055600 f t h e n e x t b u f f e 0055620 r . D a t a W o r d s P e r 0055640 P u p B u f f e r c a n b e 0055660 u s e d t o d e t e r m i 0055700 n e t h e m a x i m u m n 0055720 u m b e r o f w o r d s t 0055740 h a t w i l l f i t i n 0055760 t h e b o d y o f a P u 0056000 p . T h e r e i s n o 0056020 G e t P u p C o n t e n t s W o 0056040 r d s b e c a u s e I c o 0056060 u l d n ' t t h i n k o f 0056100 a n y t h i n g r e a s o n a 0056120 b l e t o d o i f t h e 0056140 r e w a s a n o d d n u 0056160 m b e r o f d a t a b y t 0056200 e s i n t h e P u p . 032 x 0056220 4 e 1 2 j k 5 4 \ 3 8 f 6 b 9 f 0056240 0 B 3 1 i 2 0 I 1 1 3 f 6 b 9 f 0056260 0 B 1 1 9 f 6 b 2 1 f 0 B 1 0 3 0056300 f 6 b 1 9 f 0 B \r F i n e p o 0056320 i n t : I f s o m e b o d 0056340 y i s p l a y i n g w i t 0056360 h l a r g e b u f f e r s , 0056400 a n d y o u e x p e c t 0056420 y o u r p a c k e t s t o 0056440 b e f o r w a r d e d b y 0056460 a g a t e w a y , b e s u 0056500 r e t o r o u n d d o w n 0056520 t o 2 6 6 w o r d s ( P 0056540 u p D e f s . m a x D a t a W o 0056560 r d s P e r G a t e w a y P u p 0056600 ) b e f o r e d e c i d i n 0056620 g h o w f u l l y o u c 0056640 a n f i l l a b u f f e r 0056660 . 032 x 4 e 2 0 j k 6 2 \ f 1 1 0056700 5 0 f 7 b 3 3 f 1 B \r R e t u r 0056720 n F r e e P u p B u f f e r : 0056740 P R O C E D U R E [ P u p B u 0056760 f f e r ] ; 032 l 4 6 4 0 d 4 2 6 0057000 8 x 4 e 1 2 k 5 4 \ f 6 b 2 1 f 0057020 7 9 f 6 \r G e t F r e e P u p 0057040 B u f f e r : P R O C E D U R 0057060 E R E T U R N S [ P u p B u 0057100 f f e r ] ; 032 l 4 6 4 0 d 4 2 6 0057120 8 x 4 k 5 4 \ f 6 b 1 8 f 7 9 0057140 f 6 1 f 7 7 f 6 \r R e t u r 0057160 n F r e e P u p B u f f e r i 0057200 s u s e d t o p u t a 0057220 b u f f e r b a c k o n t 0057240 h e f r e e Q u e u e . I 0057260 t m u s t b e c a l l e d 0057300 t o r e t u r n t h e b 0057320 u f f e r s o b t a i n e d 0057340 f r o m s o c k e t . g e t . 0057360 G e t F r e e P u p B u f f 0057400 e r o b t a i n s o n e b 0057420 u f f e r f r o m t h e f 0057440 r e e Q u e u e . I t w i 0057460 l l w a i t i f t h e r e 0057500 i s n o t a b u f f e r 0057520 c u r r e n t l y a v a i l 0057540 a b l e . T h i s i s h 0057560 o w a c l i e n t p r o g 0057600 r a m g e t s a b u f f e 0057620 r t o g i v e t o s o c 0057640 k e t . p u t . 032 x 4 e 1 2 j k 0057660 5 4 \ f 6 b 1 9 f 0 B 3 7 f 6 b 0057700 9 f 0 B 5 7 f 6 b 1 0 f 0 B 3 f 0057720 6 b 1 6 f 0 B 2 9 f 6 b 9 f 0 B 0057740 1 1 7 f 6 b 1 0 f 0 B \r T h e 0057760 P u p P a c k a g e b u i l 0060000 d s ( a t P u p P a c k a g 0060020 e M a k e t i m e ) a p o 0060040 o l o f 1 5 b u f f e r s 0060060 . T h e E t h e r n e t 0060100 d r i v e r u s e s t w o 0060120 a n d G e t F r e e P u p B u 0060140 f f e r a l w a y s l e a v 0060160 e s t w o i n r e s e r v 0060200 e , s o t h e r e a r e 0060220 r e a l l y o n l y 1 1 l 0060240 e f t f o r a l l t h e 0060260 a c t i v e u s e r s t o 0060300 s h a r e . P u p b y t e 0060320 s t r e a m s a l l o c a t 0060340 e a d e f a u l t o f f 0060360 i v e p a c k e t s , s o 0060400 l o c k u p s a r e e a s i 0060420 l y p o s s i b l e i f y 0060440 o u h a v e s e v e r a l 0060460 a c t i v e s t r e a m s . 0060500 N o t e t h a t e a c h 0060520 a c t i v e h a l f o f a 0060540 s t r e a m c a n u s e 0060560 u p t o 6 b u f f e r s . 0060600 032 x 4 e 1 2 j k 5 4 \ 2 7 f 6 b 0060620 1 4 f 0 B 6 3 f 6 b 1 6 f 0 B \r 0060640 S w a p P u p S o u r c e A n d 0060660 D e s t : P R O C E D U R E 0060700 [ P u p B u f f e r ] ; 032 l 4 6 0060720 4 0 d 4 2 6 8 x 4 e 1 2 k 5 4 \ 0060740 f 6 b 2 2 f 7 9 f 6 \r S w a p 0060760 P u p S o u r c e A n d D e s t 0061000 e x c h a n g e s t h e s 0061020 o u r c e a n d d e s t f 0061040 i e l d s o f t h e P u p 0061060 B u f f e r . I t f i x e 0061100 s u p t h e n e w d e s 0061120 t i n a t i o n i f t h e 0061140 o l d d e s t i n a t i o n 0061160 P u p w a s b r o a d c a s 0061200 t . O f c o u r s e , i 0061220 t o n l y m a k e s s e n 0061240 s e i f t h e b u f f e r 0061260 c o n t a i n s a p a c k 0061300 e t t h a t w a s t r a n 0061320 s m i t t e d f r o m s o m 0061340 e ( p r o b a b l y d i f f 0061360 e r e n t ) m a c h i n e . 032 0061400 x 4 e 1 2 j k 5 4 \ f 6 b 2 0 f 0061420 0 B 1 5 f 6 b 6 f 0 B 5 f 6 b 4 0061440 f 0 B \r M o v e S t r i n g B o 0061460 d y T o P u p B u f f e r : P 0061500 R O C E D U R E [ P u p B u f 0061520 f e r , S T R I N G ] ; 032 l 4 0061540 6 4 0 d 4 2 6 8 x 4 e 1 2 k 5 4 0061560 \ f 6 b 2 7 f 7 9 f 6 1 3 f 0061600 7 6 f 6 \r A p p e n d S t r i 0061620 n g B o d y T o P u p B u f f e 0061640 r : P R O C E D U R E [ P u 0061660 p B u f f e r , S T R I N G ] 0061700 ; 032 l 4 6 4 0 d 4 2 6 8 x 4 k 5 0061720 4 \ f 6 b 2 9 f 7 9 f 6 1 3 0061740 f 7 6 f 6 \r M o v e S t r i n 0061760 g B o d y T o P u p B u f f e r 0062000 c o p i e s t h e c o n t 0062020 e n t s o f t h e S T R I 0062040 N G i n t o t h e b o d y 0062060 o f t h e P u p B u f f e 0062100 r a n d s e t s t h e l 0062120 e n g t h a c c o r d i n g l 0062140 y . I t i s h a n d y 0062160 f o r v e r y s i m p l e 0062200 p r o t o c o l s a n d i s 0062220 u s e d b y P u p N a m e 0062240 L o o k u p . A p p e n d S t 0062260 r i n g B o d y T o P u p B u f 0062300 f e r a p p e n d s t h e 0062320 c o n t e n t s o f t h e 0062340 S T R I N G i n t o t h e 0062360 b o d y o f t h e P u p B 0062400 u f f e r a n d a d j u s t 0062420 s t h e l e n g t h a c c 0062440 o r d i n g l y . B o t h 0062460 r o u t i n e s w i l l c a 0062500 l l G l i t c h i f t h e 0062520 S T R I N G i s N I L o 0062540 r i t w o n ' t f i t i 0062560 n t h e b u f f e r . 032 x 4 0062600 e 1 2 j k 5 4 \ f 6 b 2 5 f 0 B 0062620 2 8 f 7 b 6 f 0 B 2 2 f 6 b 9 f 0062640 0 B 8 8 f 6 b 1 3 f 0 B 2 f 6 b 0062660 2 7 f 0 B 2 9 f 7 b 6 f 0 B 2 2 0062700 f 6 b 9 f 0 B 6 2 f 6 b 6 f 0 B 0062720 8 f 7 b 6 f 0 B 4 f 7 b 3 f 0 B 0062740 \r S o c k e t i n t e r f a c 0062760 e 032 x 4 e 3 0 k 7 9 2 \ b \r T h 0063000 e l o w e s t l e v e l o 0063020 f t h e P u p P a c k a g 0063040 e a c c e s s i b l e t o 0063060 t h e u s e r i s t h e 0063100 S o c k e t i n t e r f a c e 0063120 . A t t h i s l e v e l 0063140 p a c k e t s a r e d e l 0063160 i v e r e d o n l y w i t h 0063200 s o m e r e a s o n a b l e 0063220 p r o b a b i l i t y , a n 0063240 d t h e r e i s n o g u 0063260 a r a n t e e t h a t t h e 0063300 y w i l l n o t a r r i v 0063320 e o u t o f o r d e r o 0063340 r e v e n t w i c e . T 0063360 h e f u n c t i o n s p e r 0063400 f o r m e d a t t h i s l 0063420 e v e l h a v e t o d o 0063440 o n l y w i t h d e l i v e 0063460 r y . T h e r e i s s t 0063500 i l l t h e i d e a o f 0063520 l o c a l 341 n d r e m o t e 0063540 a d d r e s s e s , a n d 0063560 t h e r e i s a r o u t i 0063600 n g f u n c t i o n w h i c 0063620 h d e c i d e s w h a t t 0063640 o d o w i t h t h e p a 0063660 c k e t s d e p e n d i n g 0063700 o n t h o s e a d d r e s s 0063720 e s . T h e s o c k e t 0063740 i s b a s i c a l l y a n 0063760 i n t e r f a c e t o t h a 0064000 t r o u t i n g f u n c t i 0064020 o n , w h i c h m a k e s 0064040 i t s n a m e k n o w n i 0064060 n t h e a p p r o p r i a t 0064100 e t a b l e s a n d a l l 0064120 o w s m u l t i p l e u s e 0064140 r s t o c o e x i s t i n 0064160 t h e s a m e m a c h i n 0064200 e . 032 x 4 e 2 0 j k 6 2 \r P u p 0064220 S o c k e t : T Y P E = P 0064240 O I N T E R T O P u p S o c 0064260 k e t O b j e c t ; 032 l 4 6 4 0 0064300 d 4 2 6 8 x 4 e 1 2 k 5 4 \ f 6 0064320 b 1 1 f 7 1 7 f 6 \r P u p S o 0064340 c k e t O b j e c t : T Y P E 0064360 = R E C O R D [ \r p u t : 0064400 P R O C D U R E [ P u p B u 0064420 f f e r ] , \r g e t : P R O C 0064440 D U R E R E T U R N S [ P u 0064460 p B u f f e r ] , \r s e t R e m 0064500 o t e A d d r e s s : P R O C 0064520 D U R E [ P u p A d d r e s s 0064540 ] , \r g e t L o c a l A d d r e 0064560 s s : P R O C D U R E R E T 0064600 U R N S [ P u p A d d r e s s 0064620 ] ] ; 032 l 4 6 4 0 d 4 2 6 8 0064640 x 4 k 5 4 \ f 6 b 1 7 f 7 1 3 0064660 f 6 8 f 7 8 f 6 1 9 f 7 0064700 1 6 f 6 3 2 f 7 8 f 6 3 2 0064720 f 7 1 6 f 6 \r T h e S o c k 0064740 e t O p e r a t i o n s a r 0064760 e : 032 x 4 e 1 2 j k 5 4 \r P u p 0065000 S o c k e t M a k e : P R O C 0065020 E D U R E [ \r l o c a l : P 0065040 u p S o c k e t I D , r e m o 0065060 t e : P u p A d d r e s s , 0065100 t i c k s : T o c k s ] \r R E 0065120 T U R N S [ P u p S o c k e t 0065140 ] ; 032 l 4 6 4 0 d 4 2 6 8 x 4 e 0065160 1 2 k 5 4 \ f 6 b 1 5 f 7 9 f 0065200 6 5 7 f 7 7 f 6 \r T o c k s 0065220 : T Y P E = R E C O R D 0065240 [ C A R D I N A L ] ; 032 l 4 6 4 0065260 0 d 4 2 6 8 x 4 k 5 4 \ f 6 b 6 0065300 f 7 1 4 f 6 2 f 7 8 f 6 \r 0065320 P u p S o c k e t M a k e c r 0065340 e a t e s t h e d a t a s 0065360 t r u c t u r e s n e c e s s 0065400 a r y t o c o m m u n i c a 0065420 t e t o t h e s p e c i f 0065440 i e d d e s t i n a t i o n . 0065460 I t i n i t i a t e s n 0065500 o a c t u a l c o m m u n i 0065520 c a t i o n s . I f f i l 0065540 l I n S o c k e t I D i s s 0065560 p e c i f i e d f o r t h e 0065600 l o c a l s o c k e t n u 0065620 m b e r , a p s e u d o u 0065640 n i q u e r a n d o m s o c 0065660 k e t n u m b e r w i l l 0065700 b e a s s i g n e d . 032 x 4 e 0065720 1 2 j k 5 4 \ f 6 b 1 3 f 0 B 1 0065740 2 8 f 6 b 1 4 f 0 B \r P u p S o 0065760 c k e t D e s t r o y : P R O 0066000 C E D U R E [ P u p S o c k e 0066020 t ] ; 032 l 4 6 4 0 d 4 2 6 8 x 4 0066040 e 1 2 k 5 4 \ f 6 b 1 8 f 7 9 0066060 f 6 \r P u p S o c k e t D e s t 0066100 r o y r e c l a i m s t h e 0066120 d a t a s t r u c t u r e s 0066140 u s e d b y a s o c k e 0066160 t a n d r e m o v e s t h 0066200 e s o c k e t f r o m t h 0066220 e r o u t i n g t a b l e s 0066240 . 032 x 4 e 1 2 j k 5 4 \ f 6 b 1 0066260 6 f 0 B \r s o c k e t . p u t [ 0066300 b ] ; 032 l 4 6 4 0 d 4 2 6 8 x 4 0066320 e 1 2 k 5 4 \ f 6 b 1 1 i 1 I 2 0066340 f 0 B \r s o c k e t . p u t s 0066360 e n d s t h e b u f f e r 0066400 t o t h e p r e v i o u s l 0066420 y s p e c i f i e d d e s t 0066440 i n a t i o n . A n y p r 0066460 o b l e m s e n c o u n t e r 0066500 e d a r e i g n o r e d . 0066520 W h e n t h e b u f f e r 0066540 h a s b e e n s e n t , 0066560 w h i c h i s n o r m a l l 0066600 y r i g h t a w a y , b u 0066620 t m a y t a k e s e v e r 0066640 a l s e c o n d s , t h e 0066660 c l i e n t ' s r e q u e u e 0066700 p r o c e d u r e i s c a 0066720 l l e d . T h e r e q u e 0066740 u e p r o c e d u r e l i v 0066760 e s i n b . r e q u e u e P 0067000 r o c e d u r e . I t i s 0067020 i n i t i a l i z e d t o 0067040 R e t u r n F r e e P u p B u f 0067060 f f e r b y G e t F r e e P 0067100 u p B u f f e r . I f y o 0067120 u w a n t t o k e e p a 0067140 b u f f e r s o t h a t 0067160 y o u c a n r e t r a n s m 0067200 i t i t ( o r o t h e r w 0067220 i s e r e u s e i t ) y o 0067240 u m u s t s t o r e s o m 0067260 e t h i n g i n t o b . r e 0067300 q u e u e P r o c e d u r e . 0067320 I f y o u d o u s e y 0067340 o u r o w n r e q u e u e 0067360 p r o c e d u r e , b e s u 0067400 r e t h a t t h e b u f f 0067420 e r i s e v e n t u a l l y 0067440 r e t u r n e d v i a R e 0067460 t u r n F r e e P u p B u f f e 0067500 r . 032 x 4 e 1 2 j k 5 4 \ f 6 b 0067520 1 0 f 0 B 2 6 4 f 6 b i 1 f 0 B 0067540 I 1 f 6 b 1 6 f 0 B 2 4 f 6 b 2 0067560 0 f 0 B 4 f 6 b 1 6 f 0 B 1 1 6 0067600 f 6 b i 1 f 0 B I 1 f 6 b 1 6 f 0067620 0 B 9 6 f 6 b 1 9 f 0 B \r P u p 0067640 B u f f e r _ s o c k e t . 0067660 g e t [ ] ; 032 l 4 6 4 0 d 4 2 6 0067700 8 x 4 e 1 2 k 5 4 \ f 6 b i 9 I 0067720 1 6 f 0 B \r s o c k e t . g e t 0067740 r e t u r n s a b u f f e 0067760 r c o n t a i n i n g t h e 0070000 n e x t p a c k e t t h a 0070020 t i s s e n t t o t h e 0070040 s o c k e t ' s l o c a l 0070060 s o c k e t I D . T h e P 0070100 u p P a c k a g e d o e s 0070120 n o t d o a n y f i l t e 0070140 r i n g o n t h e s o u r 0070160 c e a d d r e s s , s o y 0070200 o u w i l l g e t p a c k 0070220 e t s f r o m u n e x p e c 0070240 t e d p l a c e s . W h e 0070260 n y o u a r e f i n i s h 0070300 e d p r o c e s s i n g t h 0070320 e b u f f e r , y o u s h 0070340 o u l d c a l l R e t u r n 0070360 F r e e P u p B u f f f e r . 0070400 I f a p a c k e t d o e 0070420 s n o t a r r i v e b e f 0070440 o r e t h e s p e c i f i e 0070460 d t i m e o u t , N I L i 0070500 s r e t u r n e d i n s t e 0070520 a d . N o t e t h a t t 0070540 h e P u p m a y h a v e 0070560 c o m e f r o m a n y w h e 0070600 r e , t h e r e m o t e a 0070620 d d r e s s i s o n l y u 0070640 s e d f o r s e n d i n g . 0070660 I f y o u c a r e , y 0070700 o u s h o u l d c h e c k 0070720 t h e s o u r c e o f t h 0070740 e P u p . 032 x 4 e 1 2 j k 5 4 0070760 \ f 6 b 1 0 f 0 B 2 6 6 f 6 b 2 0071000 0 f 0 B 6 1 f 7 b 3 f 0 B \r s o 0071020 c k e t . s e t R e m o t e A d 0071040 d r e s s [ P u p A d d r e s s 0071060 ] ; 032 l 4 6 4 0 d 4 2 6 8 x 4 e 0071100 1 2 k 5 4 \ f 6 b 2 4 i 1 0 I 2 0071120 f 0 B \r s o c k e t . s e t R e 0071140 m o t e A d d r e s s c h a n 0071160 g e s t h e d e s t i n a t 0071200 i o n u s e d b y s o c k 0071220 e t . p u t . U n t i l i 0071240 t i s c h a n g e d a g a 0071260 i n , a l l P u p s s e n 0071300 d v i a s o c k e t . p u t 0071320 w i l l g o t o t h e 0071340 s p e c i f i e d a d d r e s 0071360 s . 032 x 4 e 1 2 j k 5 4 \ f 6 b 0071400 2 3 f 0 B 3 3 f 6 b 1 0 f 0 B 4 0071420 8 f 6 b 1 0 f 0 B \r P u p A d d 0071440 r e s s _ s o c k e t . g e 0071460 t L o c a l A d d r e s s [ ] ; 0071500 032 l 4 6 4 0 d 4 2 6 8 x 4 e 1 2 0071520 k 5 4 \ f 6 b i 1 0 I 2 8 f 0 B 0071540 \r s o c k e t . g e t L o c a l 0071560 A d d r e s s r e t u r n s 0071600 t h e l o c a l a d d r e s 0071620 s o f a s o c k e t . 0071640 T h i s t e l l s y o u t 0071660 w o t h i n g s . O n e , 0071700 i f y o u u s e d f i l 0071720 l I n S o c k e t I D f o r 0071740 t h e l o c a l s o c k e t 0071760 n u m b e r w h e n y o u 0072000 c r e a t e d t h e s o c 0072020 k e t , i t w i l l t e l 0072040 l y o u t h e a c t u a l 0072060 s o c k e t n u m b e r t 0072100 h a t i s i n u s e . 0072120 S e c o n d , i f y o u h 0072140 a v e m o r e t h a n o n 0072160 e h a r d w a r e i n t e r 0072200 f a c e o n y o u r m a c 0072220 h i n e , i t w i l l t e 0072240 l l y o u w h i c h o n e 0072260 i s t h e b e s t p a t 0072300 h . 032 x 4 e 1 2 j k 5 4 \ f 6 b 0072320 2 2 f 0 B 8 6 f 6 b 1 4 f 0 B \r 0072340 T h e n o r m a l s e q u e 0072360 n c e o f o p e r a t i o n 0072400 s i s t o m a k e a s 0072420 o c k e t a n d t h e n , 0072440 e n t e r a l o o p t h a 0072460 t g e t s a P u p B u f f 0072500 e r f r o m t h e f r e e 0072520 Q u e u e , f i l l s i t 0072540 i n , s e n d s i t , w a 0072560 i t s f o r a r e p l y , 0072600 p r o c e s s e s t h e i 0072620 n c o m i n g P u p B u f f e 0072640 r , a n d r e t u r n s i 0072660 t t o t h e f r e e Q u e 0072700 u e . F i n a l l y , w h 0072720 e n f i n i s h e d , d o n 0072740 ' t f o r g e t t o d e l 0072760 e t e t h e s o c k e t . 0073000 I t i s q u i t e r e a 0073020 s o n a b l e t o h a v e 0073040 t w o P R O C E S S e s , o 0073060 n e t o l o o k a t i n 0073100 c o m i n g p a c k e t s a 0073120 n d a n o t h e r t o s e 0073140 n d t h i n g s o u t . 0073160 E v e n i f y o u d o n ' 0073200 t e x p e c t a n y i n c 0073220 o m i n g d a t a , b e s 0073240 u r e t o h a v e s o m e 0073260 P R O C E S S g e t t i n g 0073300 p a c k e t s o c c a s s i 0073320 o n a l l y o r b u f f e r 0073340 s w i l l p i l e u p t 0073360 h e r e i f a n y b o d y 0073400 e v e r d o e s s e n d y 0073420 o u s o m e t h i n g . I 0073440 t i s q u i t e l i k e l 0073460 y t h a t e r r o r p u p 0073500 s w i l l b e r e t u r n 0073520 e d i f a G a t e w a y 0073540 r u n s o u t o f b u f f 0073560 e r s , o r t h e o t h e 0073600 r e n d e v e r g e t s 0073620 c o n f u s e d , r e b o o t 0073640 e d , o r . . . . 032 x 4 e 1 0073660 2 j k 5 4 \ 8 9 f 6 b 9 f 0 B 1 0073700 0 f 6 b 9 f 0 B 6 7 f 6 b 9 f 0 0073720 B 2 4 f 6 b 9 f 0 B 9 8 f 7 b 7 0073740 f 0 B 1 3 4 f 7 b 7 f 0 B \r T h 0073760 e r e a r e t w o o t h e 0074000 r r o u t i n e s t h a t 0074020 a r e u s e f u l f o r s 0074040 e n d i n g P u p s . I n 0074060 b o t h c a s e s t h e 0074100 c l i e n t p r o g r a m m 0074120 u s t f i l l i n t h e 0074140 s o u r c e a n d d e s t i 0074160 n a t i o n s o c k e t n u 0074200 m b e r s . 032 x 4 e 1 2 j k 5 4 0074220 \r P u p R o u t e r B r o a d c 0074240 a s t T h i s : P R O C E D U 0074260 R E [ P u p B u f f e r ] ; 032 0074300 l 4 6 4 0 d 4 2 6 8 x 4 e 1 2 k 0074320 5 4 \ f 6 b 2 4 f 7 9 f 6 \r P 0074340 u p R o u t e r S e n d T h i s 0074360 : P R O C E D U R E [ P u p 0074400 B u f f e r ] ; 032 l 4 6 4 0 d 4 0074420 2 6 8 x 4 k 5 4 \ f 6 b 1 9 f 7 0074440 9 f 6 \r P u p R o u t e r B r 0074460 o a d c a s t T h i s w i l l 0074500 b r o a d c a s t a P u p 0074520 o n a l l d i r e c t l y 0074540 c o n n e c t e d n e t w o 0074560 r k s . T h e P u p P a 0074600 c k a g e w i l l p r o v i 0074620 d e t h e c o r r e c t d 0074640 e s t i n a t i o n n e t , 0074660 s o u r c e h o s t , a n d 0074700 s o u r c e n e t n u m b 0074720 e r s f o r e a c h n e t 0074740 w o r k a s t h e P u p 0074760 i s t r a n s m i t t e d . 032 0075000 x 4 e 1 2 j k 5 4 \ f 6 b 2 2 f 0075020 0 B \r N B : D o n o t u 0075040 s e t h e b r o a d c a s t 0075060 f a c i l i t y i n d i s c 0075100 r i m i n a t e l y . R a n 0075120 d o m u n d e s i r e d p a 0075140 c k e t s c a n h a v e a 0075160 s e v e r e p e r f o r m a 0075200 n c e i m p a c t o n s o 0075220 m e p r o g r a m s . I n 0075240 g e n e r a l , i t s h o 0075260 u l d o n l y b e u s e d 0075300 t o l o c a t e a m a c 0075320 h i n e t h a t y o u w a 0075340 n t t o c o m u n i c a t e 0075360 w i t h . 032 x 4 e 1 2 j k 5 4 0075400 \ b 3 B \r P u p R o u t e r S e 0075420 n d T h i s i s t h e s i 0075440 m p l e s t w a y t o s e 0075460 n d a p a c k e t . D o 0075500 n ' t f o r g e t t o f i 0075520 l l i n t h e s o u r c e 0075540 s o c k e t , d e s t i n a 0075560 t i o n a d d r e s s , p u 0075600 p T y p e a n d s e t t h 0075620 e l e n g t h . T h e P 0075640 u p P a c k a g e w i l l 0075660 f i l l i n t h e c o r r 0075700 e c t s o u r c e n e t a 0075720 n d h o s t n u m b e r s . 0075740 T h e r e i s a s p e 0075760 c i a l c a s e c h e c k 0076000 f o r a d e s t i n a t i o 0076020 n h o s t o f a l l H o s 0076040 t s ( 0 ) a n d a d e s 0076060 t i n a t i o n n e t o f 0076100 a l l N e t s ( 0 ) . I f 0076120 s o , t h e b u f f e r 0076140 i s h a n d e d o f f t o 0076160 P u p R o u t e r B r o a d c 0076200 a s t T h i s . I f y o u 0076220 s p e c i f y a l l H o s t 0076240 s a n d a n o n 0 n e 0076260 t w o r k , t h e P u p i 0076300 s a d i r e c t e d b r o 0076320 a d c a s t , a n d i t w 0076340 i l l b e b r o a d c a s t 0076360 o n t h a t s p e c i f 0076400 i c n e t w o r k , a n d 0076420 n o t o n a l l d i r e c 0076440 t l y c o n n e c t e d n e 0076460 t w o r k s . T h e r e i 0076500 s n o w a y t o b r o a 0076520 d c a s t a P u p o n n 0076540 e t w o r k 0 w i t h o u t 0076560 b r o a d c a s t i n g i t 0076600 o n t h e o t h e r n e 0076620 t w o r k s t o o . 032 x 4 e 1 0076640 2 j k 5 4 \ f 6 b 1 7 f 0 B 2 6 0076660 0 f 6 b 8 f 0 B 3 0 f 6 b 7 f 0 0076700 B 4 2 f 6 b 2 2 f 0 B 1 8 f 6 b 0076720 8 f 0 B \r S e n d P u p : P R 0076740 O C E D U R E [ b : P u p B 0076760 u f f e r , t y p e : P u p 0077000 T y p e , b y t e s : C A R 0077020 D I N A L ] ; 032 l 4 6 4 0 d 4 2 0077040 6 8 x 4 e 1 2 k 5 4 \ f 6 b 9 f 0077060 7 9 f 6 3 8 f 7 8 f 6 \r R 0077100 e t u r n P u p : P R O C E D 0077120 U R E [ b : P u p B u f f e 0077140 r , t y p e : P u p T y p e 0077160 , b y t e s : C A R D I N A 0077200 L ] ; 032 l 4 6 4 0 d 4 2 6 8 x 4 0077220 k 5 4 \ f 6 b 1 1 f 7 9 f 6 0077240 3 8 f 7 8 f 6 \r S e n d P u p 0077260 f i l l s i n t h e p u 0077300 p T y p e a n d t h e l e 0077320 n g t h o f t h e b u f f 0077340 e r , a n d t h e n c a l 0077360 l s P u p R o u t e r S e n d 0077400 T h i s . R e t u r n P u p 0077420 c a l l s S w a p P u p S o 0077440 u r c e A n d D e s t a n d 0077460 t h e n c a l l s S e n d P 0077500 u p . 032 x 4 e 1 2 j k 5 4 \ f 6 0077520 b 7 f 0 B 6 7 f 6 b 1 7 f 0 B 3 0077540 f 6 b 9 f 0 B 7 f 6 b 2 0 f 0 B 0077560 1 6 f 6 b 7 f 0 B \r S e n d E r 0077600 r o r P u p : P R O C E D U R 0077620 E [ P u p B u f f e r , P u 0077640 p E r r o r C o d e , S T R I 0077660 N G ] ; 032 l 4 6 4 0 d 4 2 6 8 x 0077700 4 e 1 2 k 5 4 \ f 6 b 1 4 f 7 0077720 9 f 6 2 7 f 7 7 f 6 \r S e n 0077740 d E r r o r P u p t r e a t s 0077760 t h e b u f f e r a s a 0100000 P u p t h a t w a s s e 0100020 n t t o t h i s m a c h i 0100040 n e , c o n v e r t s i t 0100060 i n t o a n E r r o r P u 0100100 p w i t h t h e s p e c i 0100120 f i e d e r r o r c o d e 0100140 a n d t e x t , a n d s e 0100160 n d s i t b a c k t o t 0100200 h e o r i g i n a l s o u r 0100220 c e . T h e b u f f e r 0100240 m u s t h a v e b e e n s 0100260 e n t t o t h i s m a c h 0100300 i n e s i n c e S e n d E r 0100320 r o r P u p n e e d s t o 0100340 k n o w t h e n e t w o r k 0100360 a d d r e s s t h r o u g h 0100400 w h i c h t h e p a c k e 0100420 t a r r i v e d , s o d o 0100440 n ' t p a s s i t a b u 0100460 f f e r t h a t y o u o b 0100500 t a i n e d f r o m G e t F 0100520 r e e P u p B u f f e r . I 0100540 f S T R I N G i s N I L , 0100560 a b u i l t i n l i s t 0100600 o f d e f a u l t s i s 0100620 s e a r c h e d . A c t u a 0100640 l l y , t h e b u f f e r 0100660 i s n ' t s e n t i f i t 0100700 i s a l r e a d y a n e 0100720 r r o r P u p , o r i f 0100740 i t i s a b r o a d c a s 0100760 t P u p . 032 x 4 e 1 2 j k 5 4 0101000 \ f 6 b 1 2 f 0 B 2 2 5 f 6 b 1 0101020 2 f 0 B 1 1 8 f 6 b 1 6 f 0 B 6 0101040 f 7 b 6 f 0 B 4 f 7 b 3 f 0 B \r 0101060 032 \r T o c k c o n v e r s i o 0101100 n 032 x 4 e 3 0 k 7 9 2 \ b \r T h 0101120 e r e a r e s e v e r a l 0101140 r o u t i n e s i n t h e 0101160 P u p P a c k a g e t h a t 0101200 n o r m a l l y W A I T u 0101220 n t i l s o m e t h i n g h 0101240 a s h a p p e n e d . T h 0101260 e a r g u m e n t t o t h 0101300 e r o u t i n e s t h a t 0101320 s e t u p t h e w a i t t 0101340 i m e s i s a s i m p l e 0101360 r e c o r d . 032 x 4 e 2 0 j k 0101400 6 2 \ 6 0 f 7 b 4 f 0 B \r T o c 0101420 k s : T Y P E = R E C O R 0101440 D [ C A R D I N A L ] ; 032 l 4 0101460 6 4 0 d 4 2 6 8 x 4 e 1 2 k 5 4 0101500 \ f 6 b 6 f 7 1 4 f 6 2 f 7 0101520 8 f 6 \r v e r y L o n g W a i 0101540 t : T o c k s = [ 1 7 7 7 0101560 7 7 B ] ; 032 l 5 9 1 0 d 5 5 3 8 0101600 x 4 k 5 4 \ f 6 b 1 3 f 7 1 f 0101620 6 5 f 7 3 f 6 1 f 7 7 f 0101640 6 \r v e r y S h o r t W a i t : 0101660 T o c k s = [ 0 ] ; 032 l 5 0101700 9 1 0 d 5 5 3 8 x 4 k 5 4 \ f 6 0101720 b 1 4 f 7 1 f 6 5 f 7 3 f 0101740 6 1 f 7 1 f 6 \r v e r y L o 0101760 n g W a i t i s u s e d t 0102000 o d i s a b l e t i m e o u 0102020 t s c o m p l e t e l y . 0102040 v e r y S h o r t W a i t i s 0102060 u s e d t o a v o i d w 0102100 a i t i n g a t a l l . 0102120 A l l o t h e r v a l u e s 0102140 a r e p a s s e d d i r e 0102160 c t l y t o P r o c e s s D 0102200 e f s . S e t T i m e o u t . 032 0102220 x 4 e 2 0 j k 6 2 \ f 6 b 1 2 f 0102240 0 B 4 2 f 6 b 1 3 f 0 B 7 5 f 6 0102260 b 2 2 f 0 B \r S e c o n d s T o 0102300 T o c k s : P R O C E D U R E 0102320 [ C A R D I N A L ] R E T U 0102340 R N S [ T o c k s ] ; 032 l 4 6 0102360 4 0 d 4 2 6 8 x 4 e 1 2 k 5 4 \ 0102400 f 6 b 1 5 f 7 2 9 f 6 \r M s T 0102420 o T o c k s : P R O C E D U R 0102440 E [ C A R D I N A L ] R E T 0102460 U R N S [ T o c k s ] ; 032 l 4 0102500 6 4 0 d 4 2 6 8 x 4 k 5 4 \ f 6 0102520 b 1 0 f 7 2 9 f 6 \r T h e s e 0102540 r o u t i n e s s i m p l y 0102560 d o a b i t o f a r i 0102600 t h m e t i c a n d t h e 0102620 a p p r o p r i a t e T Y P E 0102640 c o n v e r s i o n . T h 0102660 e i r i n p u t i s i n 0102700 s e c o n d s a n d m i l l 0102720 i s e c o n d s r e s p e c t 0102740 i v e l y . N o t e t h a 0102760 t i t i s n o t p o s s 0103000 i b l e t o s p e c i f y 0103020 w a i t t i m e s l o n g e 0103040 r t h a n a b o u t a m 0103060 i n u t e i n m i l l i s e 0103100 c o n d s . 032 x 4 e 2 0 j k 6 2 0103120 \ 6 5 f 7 b 4 f 0 B \r Q u e u e 0103140 o p e r a t i o n s 032 x 4 e 3 0103160 0 k 7 9 2 \ b \r T h e P u p 0103200 P a c k a g e p r o v i d e s 0103220 a s i m p l e F I F O Q 0103240 u e u e P a c k a g e w h i 0103260 c h m a y b e u s e f u l 0103300 i f y o u a r e o p e r 0103320 a t i n g a t t h e s o c 0103340 k e t l e v e l . N B : 0103360 T h e Q u e u e P a c k a g 0103400 e d o e s n o t p r o v i 0103420 d e a n y l o c k s a g a 0103440 i n s t p r e e m p t i o n . 0103460 T h e c l i e n t i s 0103500 e x p e c t e d t o c a l l 0103520 t h e q u e u e r o u t i 0103540 n e s f r o m w i t h i n 0103560 a n a p p r o p r i a t e M 0103600 O N I T O R . 032 x 4 e 2 0 j k 6 0103620 2 \ 1 4 3 i 3 I 1 1 7 f 7 b 7 f 0103640 0 B \r Q u e u e : T Y P E = 0103660 P O I N T E R T O Q u e u 0103700 e O b j e c t ; 032 l 4 6 4 0 d 4 0103720 2 6 8 x 4 e 1 2 k 5 4 \ f 6 b 7 0103740 f 7 1 7 f 6 \r Q u e u e O b j 0103760 e c t : T Y P E = R E C O 0104000 R D [ l e n g t h : C A R D 0104020 I N A L , . . . ] ; 032 l 4 6 4 0104040 0 d 4 2 6 8 x 4 k 5 4 \ f 6 b 1 0104060 3 f 7 1 3 f 6 1 0 f 7 8 f 0104100 6 \r l e n g t h i s t h e 0104120 n u m b e r o f b u f f e r 0104140 s c u r r e n t l y o n t 0104160 h e q u e u e . I t i s 0104200 h a n d y f o r v a r i o 0104220 u s h e u r i s t i c s . 0104240 I n p a r t i c u l a r , y 0104260 o u m a y w a n t t o c 0104300 h e c k f o r a n e m p t 0104320 y q u e u e b e f o r e c 0104340 a l l i n g D e q u e u e P u 0104360 p i f y o u a r e w o r 0104400 r i e d a b o u t p e r f o 0104420 r m a n c e . 032 x 4 e 1 2 j k 5 0104440 4 \ f 6 b 6 f 0 B 1 5 9 f 6 b 1 0104460 0 f 0 B \r Q u e u e I n i t i a 0104500 l i z e : P R O C E D U R E 0104520 [ Q u e u e ] ; 032 l 4 6 4 0 d 4 0104540 2 6 8 x 4 e 1 2 k 5 4 \ f 6 b 1 0104560 7 f 7 9 f 6 \r Q u e u e C l e 0104600 a n u p : P R O C E D U R E 0104620 [ Q u e u e ] ; 032 l 4 6 4 0 d 4 0104640 2 6 8 x 4 k 5 4 \ f 6 b 1 4 f 7 0104660 9 f 6 \r Q u e u e I n i t i a 0104700 l i z e s i m p l y i n i t 0104720 i a l i z e s t h e d a t a 0104740 s t r u c t u r e s w i t h 0104760 i n a Q u e u e O b j e c t 0105000 a l l o c a t e d b y t h 0105020 e c a l l e r . I t m u 0105040 s t b e c a l l e d b e f 0105060 o r e a n y o t h e r q u 0105100 e u e o p e r a t i o n s r 0105120 e f e r e n c e t h e Q u e 0105140 u e O b j e c t . Q u e u e 0105160 C l e a n u p r e t u r n s 0105200 a n y b u f f e r s o n t 0105220 h e q u e u e t o t h e 0105240 f r e e Q u e u e a n d m a 0105260 r k s i t a s i n v a l i 0105300 d . Y o u m u s t c a l 0105320 l Q u e u e I n i t i a l i z 0105340 e a g a i n b e f o r e r 0105360 e u s i n g t h e q u e u e 0105400 . 032 x 4 e 1 2 j k 5 4 \ f 6 b 1 0105420 5 f 0 B 4 9 f 6 b 1 1 f 0 B 9 3 0105440 f 6 b 1 1 f 0 B 3 f 6 b 1 2 f 0 0105460 B 4 1 f 6 b 9 f 0 B 4 1 f 6 b 1 0105500 5 f 0 B \r E n q u e u e P u p : 0105520 P R O C E D U R E [ Q u e u 0105540 e , P u p B u f f e r ] ; 032 l 0105560 4 6 4 0 d 4 2 6 8 x 4 e 1 2 k 5 0105600 4 \ f 6 b 1 2 f 7 9 f 6 \r D e 0105620 q u e u e P u p : P R O C E D 0105640 U R E [ Q u e u e ] R E T U 0105660 R N S [ P u p B u f f e r ] ; 0105700 032 l 4 6 4 0 d 4 2 6 8 x 4 k 5 4 0105720 \ f 6 b 1 2 f 7 9 f 6 9 f 7 0105740 7 f 6 \r E x t r a c t P u p F 0105760 r o m Q u e u e : P R O C E D 0106000 U R E [ Q u e u e , P u p B 0106020 u f f e r ] R E T U R N S [ 0106040 P u p B u f f e r ] ; 032 l 4 6 4 0106060 0 d 4 2 6 8 x 4 k 5 4 \ f 6 b 2 0106100 1 f 7 9 f 6 2 0 f 7 7 f 6 0106120 \r E n q u e u e P u p p u t s 0106140 a P u p B u f f e r o n t 0106160 o t h e t a i l o f a 0106200 q u e u e . D e q u e u e P 0106220 u p t a k e s a P u p B u 0106240 f f e r o f f o f t h e 0106260 h e a d o f a q u e u e . 0106300 I f t h e q u e u e i 0106320 s e m p t y , i t r e t u 0106340 r n s N I L . E x t r a c 0106360 t P u p F r o m Q u e u e p u 0106400 l l s a s p e c i f i e d 0106420 b u f f e r o u t o f t h 0106440 e m i d d l e o f a q u 0106460 e u e . I f t h e b u f 0106500 f e r i s n o t o n t h 0106520 e q u e u e , i t r e t u 0106540 r n s N I L . 032 x 4 e 1 2 j k 0106560 5 4 \ f 6 b 1 0 f 0 B 8 f 6 b 9 0106600 f 0 B 2 8 f 6 b 1 0 f 0 B 9 f 6 0106620 b 9 f 0 B 6 4 f 7 b 3 f 0 B 3 f 0106640 6 b 1 9 f 0 B 1 0 3 f 7 b 3 f 0 0106660 B \r Q u e u e L e n g t h : P 0106700 R O C E D U R E [ Q u e u e ] 0106720 R E T U R N S [ C A R D I N 0106740 A L ] ; 032 l 4 6 4 0 d 4 2 6 8 x 0106760 4 e 1 2 k 5 4 \ f 6 b 1 3 f 7 0107000 9 f 6 9 f 7 7 f 6 2 f 7 0107020 8 f 6 \r Q u e u e E m p t y : 0107040 P R O C E D U R E [ Q u e u e 0107060 ] R E T U R N S [ B O O L E 0107100 A N ] ; 032 l 4 6 4 0 d 4 2 6 8 x 0107120 4 k 5 4 \ f 6 b 1 2 f 7 9 f 6 0107140 9 f 7 7 f 6 2 f 7 7 f 6 0107160 \r T h e s e a r e j u s t 0107200 f a s t , c l e a n , a n d 0107220 s i m p l e w a y s t o 0107240 s e e i f t h e r e i s 0107260 a n y t h i n g i n a Q u 0107300 e u e . 032 x 4 e 1 2 j k 5 4 \ 7 0107320 7 f 6 b 5 f 0 B \r B u g s a n 0107340 d g r e m l i n s 032 x 4 e 3 0 0107360 k 7 9 2 \ b \r N o t e t h a t 0107400 m o s t p r o g r a m b u 0107420 g s d o n o t s h o w u 0107440 p a s u n c a u g h t S I 0107460 G N A L s , b u t i n s t e 0107500 a d c a l l a n e r r o r 0107520 h a n d l e r , w h i c h 0107540 d e f a u l t s t o a r o 0107560 u t i n e t h a t c a l l s 0107600 t h e d e b u g g e r . 0107620 I f y o u s u d d e n l y 0107640 e n d u p i n t h e d e 0107660 b u g g e r w i t h a " P 0107700 u p G l i t c h " m e s s a g 0107720 e , l o o k a t t h e s 0107740 t a c k . I f y o u f i 0107760 n d G l i t c h , l o o k 0110000 a t i t s p a r a m e t e r 0110020 . I f y o u h a v e e 0110040 n o u g h s y m b o l s o n 0110060 y o u r d i s k t h e n 0110100 a m e w i l l u s u a l l y 0110120 b e r e a s o n a b l y c 0110140 l e a r w h a t t h e p r 0110160 o b l e m i s . I f n o 0110200 t , c o n s u l t a f r i 0110220 e n d o r d i g o u t t 0110240 h e l i s t i n g s . G l 0110260 i t c h e s a r e p r o b l 0110300 e m s f r o m w h i c h i 0110320 t i s n o t r e a s o n a 0110340 b l e t o r e c o v e r . 0110360 U s u a l l y , t h e y a 0110400 r e c a u s e d b y b u g 0110420 s i n t h e c l i e n t 0110440 p r o g r a m a n d / o r i 0110460 n a d e q u a t e d o c u m e 0110500 n t a t i o n . I f y o u 0110520 g e t o n e , y o u s h 0110540 o u l d n o t a t t e m p t 0110560 t o c o n t i n u e e x e 0110600 c u t i o n o f y o u r p 0110620 r o g r a m . B e c a u s e 0110640 o f v a r i o u s v a l i 0110660 d i t y c h e c k s i n t 0110700 h e P u p P a c k a g e , 0110720 c o r e c l o b b e r s f r 0110740 e q u e n t l y s h o w u p 0110760 a s P u p G l i t c h e s 0111000 . 032 x 4 e 2 0 j k 6 2 \ 5 5 f 7 0111020 b 7 f 0 B 1 9 0 f 6 b 6 f 0 B \r 0111040 S i g n a l s 032 x 4 e 3 0 k 6 2 0111060 \ b \r E x c e p t f o r t h 0111100 e E F T P r o u t i n e s , 0111120 t h e f o l l o w i n g s 0111140 u m m a r y i s a n e x h 0111160 a u s t i v e l i s t o f 0111200 t h e s i g n a l s e x p l 0111220 i c i t l y g e n e r a t e d 0111240 b y t h e P u p P a c k 0111260 a g e . I t d o e s N O 0111300 T i n c l u d e s i g n a l 0111320 s g e n e r a t e d f r o m 0111340 w i t h i n t h e s y s t 0111360 e m w h e n t h e P u p 0111400 P a c k a g e c a l l s a 0111420 s y s t e m r o u t i n e . 0111440 T h e y a l l r e p r e s 0111460 e n t w e l l u n d e r s t 0111500 o o d c i r c u m s t a n c e 0111520 s , a n d e v e n i f y 0111540 o u d i d n ' t w a n t t 0111560 h e s i g n a l a t t h a 0111600 t t i m e , t h e P u p 0111620 P a c k a g e k n o w s w h 0111640 a t i s g o i n g o n a 0111660 n d i s p a s s i n g t h 0111700 e p r o b l e m b a c k t 0111720 o t h e c l i e n t p r o 0111740 g r a m w h e r e i t b e 0111760 l o n g s . 032 x 4 e 2 0 j k 6 2 0112000 \r S t r e a m . T i m e o u t : 0112020 S I G N A L ; 032 l 4 2 6 9 x 4 0112040 e 1 8 k 1 2 2 \ f 6 b 1 6 f 7 0112060 6 f 6 \r S t r e a m . T i m e o 0112100 u t i s g e n e r a t e d 0112120 b y t h e B y t e S t r e a 0112140 m i n p u t r o u t i n e s 0112160 i f e n o u g h d a t a 0112200 d o e s n o t a r r i v e 0112220 i n t i m e . T h e a c 0112240 t u a l w a i t t i m e s 0112260 a r e n o t v e r y a c c 0112300 u r a t e . 032 x 4 e 8 j k 6 2 \ 0112320 f 6 b 1 4 f 0 B \r S t r e a m C 0112340 l o s i n g : E R R O R [ w 0112360 h y : C l o s e R e a s o n , 0112400 t e x t : S T R I N G ] ; 032 0112420 l 4 2 6 9 x 4 e 1 8 k 1 2 2 \ f 0112440 6 b 1 5 f 7 5 f 6 2 6 f 7 0112460 6 f 6 \r C l o s e R e a s o n : 0112500 T Y P E = { l o c a l C l o 0112520 s e , r e m o t e C l o s e , 0112540 \r t r a n s m i s s i o n T 0112560 i m e o u t , n o R o u t e T 0112600 o N e t w o r k , r e m o t e 0112620 R e j e c t } ; 032 l 4 2 6 9 x 4 0112640 k 1 2 2 \ f 6 b 1 3 f 7 4 f 6 0112660 \r S t r e a m C l o s i n g i 0112700 s g e n e r a t e d b y B 0112720 y t e S t r e a m O p e n w h 0112740 e n t h e r e m o t e s i 0112760 t e e x p l i c i t l y r e 0113000 j e c t s t h e c o n n e c 0113020 t i o n , d o e s n o t a 0113040 c c e p t i t i n t i m e 0113060 , o r t h e r e i s n o 0113100 t a n y w a y t o g e t 0113120 a p a c k e t t o t h e 0113140 r e m o t e s i t e . ( 0113160 C u r r e n t l y , t h e t 0113200 i m e o u t i s a b o u t 0113220 6 0 s e c o n d s . ) 032 x 4 e 0113240 8 j k 6 2 \ f 6 b 1 3 f 0 B 1 7 0113260 f 6 b 1 4 f 0 B \r A f t e r a 0113300 s t r e a m i s o p e n e 0113320 d , S t r e a m C l o s i n g 0113340 i s a c t i v a t e d b y 0113360 m a n y B y t e S t r e a m 0113400 r o u t i n e s w h e n e v 0113420 e r a n a t t e m p t t o 0113440 u s e a c o n n e c t i o 0113460 n i s m a d e a f t e r 0113500 t h e P u p P a c k a g e 0113520 c o n n e c t i o n h a s b 0113540 e e n c l o s e d . I t 0113560 m a y b e c l o s e d b y 0113600 t h e r e m o t e e n d , 0113620 o r a u t o m a t i c a l l 0113640 y b y t h e P u p P a c 0113660 k a g e w h e n i t d i s 0113700 c o v e r s s o m e p r o b 0113720 l e m . T h e c o n n e c 0113740 t i o n i s c l o s e d a 0113760 u t o m a t i c a l l y w h e 0114000 n e v e r t h e r e m o t 0114020 e e n d e x p l i c i t l y 0114040 r e j e c t s a p a c k e 0114060 t ( m a y b e i t h a s 0114100 b e e n r e b o o t e d ) o 0114120 r w h e n e v e r a p a c 0114140 k e t i s n o t a c k n o 0114160 w l e d g e d s o o n e n o 0114200 u g h ( m a y b e i t i s 0114220 i n t h e d e b u g g e r 0114240 ) . O n i n p u t , a l 0114260 l t h e d a t a f r o m 0114300 t h e r e m o t e s i t e 0114320 i s p r o c e s s e d b e f 0114340 o r e a c t i v a t i n g t 0114360 h e S t r e a m C l o s i n g 0114400 E R R O R . 032 x 4 e 8 j k 6 2 0114420 \ 2 6 f 6 b 1 3 f 0 B 5 3 1 f 6 0114440 b 1 3 f 0 B 1 f 7 b 5 f 0 B \r P 0114460 u p N a m e T r o u b l e : E 0114500 R R O R [ e : S T R I N G , 0114520 c o d e : N a m e L o o k u 0114540 p E r r o r C o d e ] ; 032 l 4 6 0114560 4 0 d 4 2 6 8 x 4 e 2 4 k 5 4 \ 0114600 f 6 b 1 6 f 7 5 f 6 5 f 7 0114620 6 f 6 2 9 f 0 B \r N a m e L o 0114640 o k u p E r r o r C o d e : T 0114660 Y P E = { \r n o R o u t e , 0114700 n o R e s p o n s e , e r r 0114720 o r F r o m S e r v e r } ; 032 l 0114740 4 6 4 0 d 4 2 6 8 x 4 k 5 4 \ f 0114760 6 b \r P u p N a m e T r o u b l 0115000 e i s o n l y g e n e r a 0115020 t e d b y E n u m e r a t e 0115040 P u p A d d r e s s e s a n d 0115060 P u p N a m e L o o k u p a 0115100 n d G e t P u p A d d r e s s 0115120 w h i c h c a l l i t , 0115140 a n d P u p A d d r e s s L o 0115160 o k u p . T h e r e a r e 0115200 3 r e a s o n s w h y E 0115220 n u m e r a t e P u p A d d r e 0115240 s s e s o r P u p A d d r e 0115260 s s L o o k u p m a y n o t 0115300 b e a b l e t o s u p p 0115320 l y a r e a s o n a b l e 0115340 a n s w e r . I f s o , 0115360 i t w i l l g e n e r a t e 0115400 t h e E R R O R P u p N a 0115420 m e T r o u b l e w i t h a 0115440 t e x t s t r i n g t h a 0115460 t m i g h t h e l p a p 0115500 e r s o n a n d a n e r r 0115520 o r c o d e t h a t m i g 0115540 h t b e u s e f u l b y 0115560 a p r o g r a m . I n t 0115600 h e f i r s t c a s e , n 0115620 o R o u t e , t h e i n f o 0115640 r m a t i o n w a s r e c e 0115660 i v e d f r o m t h e n a 0115700 m e s e r v e r , b u t t 0115720 h e r e i s n o w a y t 0115740 o g e t t o t h e t a r 0115760 g e t m a c h i n e . I n 0116000 t h e s e c o n d , n o R 0116020 e s p o n s e , n o n a m e 0116040 l o o k u p s e r v e r r 0116060 e s p o n d e d w i t h i n 0116100 a r e a s o n a b l e l e n 0116120 g t h o f t i m e . U n 0116140 f o r t u n a t e l y , t h e 0116160 t h i r d c a s e , e r r 0116200 o r F r o m S e r v e r , d o 0116220 e s n o t h e l p a p r 0116240 o g r a m m u c h . T h e 0116260 p r o t o c o l d o e s n 0116300 o t s u p p l y e r r o r 0116320 c o d e s u s e f u l t o 0116340 p r o g r a m s , b u t t h 0116360 e d e s i r e d i n f o r m 0116400 a t i o n i s p r o b a b l 0116420 y i n t h e t e x t s t 0116440 r i n g . 032 x 4 e 6 j k 5 4 \ f 0116460 6 b 1 4 f 0 B 2 2 f 6 b 2 1 f 0 0116500 B 5 f 6 b 1 3 f 0 B 5 f 6 b 1 3 0116520 f 0 B 1 4 f 6 6 b 1 6 f 0 B 2 0116540 7 f 6 b 2 1 B 4 b 1 6 f 0 B 7 7 0116560 f 7 b 5 f 0 B 1 f 6 b 1 4 f 0 B 0116600 1 1 8 f 6 b 7 f 0 B 1 1 9 f 6 b 0116620 1 0 f 0 B 1 0 2 f 6 b 1 5 f 0 B 0116640 \r 0116641