$ od -c -N 50000 [Indigo]<Portola>Nova>PUPSERVERS.DM!1
0000000 377 \0 \0 P u p E c h o S e r v . d
0000020 e c l \0 376 001 \0 M l / / P u p E
0000040 c h o S e r v . d e c l \r \r / /
0000060 L a s t m o d i f i e d J
0000100 a n u a r y 2 6 , 1 9 7 9
0000120 2 : 4 8 P M b y B o g g
0000140 s \r \r m a n i f e s t \r [ \r / /
0000160 r e g i s t e r e d , w e l
0000200 l - k n o w n s o c k e t \r p
0000220 s E c h o S e r v = 5 \r \r /
0000240 / r e g i s t e r e d p u p
0000260 t y p e s \r p t E c h o M e
0000300 = 1 \r p t I m A n E c h o =
0000320 2 \r p t I m A B a d E c h o
0000340 = 3 \r \r / / E c h o s o c
0000360 k e t s p e c i f i c p u p
0000400 t y p e s \r p t S t a t s R e
0000420 q u e s t = 2 376 001 \0 301 202 0 0
0000440 b \r p t S t a t s R e p l y =
0000460 2 0 1 b \r \r e c h o S t a t s
0000500 V e r s i o n = 1 \r ] \r \r /
0000520 / - - - - - - - - - - - - - - -
0000540 - - - - - - - - - - - - - - - -
*
0000620 - - - - - - - - - - - - - \r s t
0000640 r u c t u r e S t a t s : \t /
0000660 / E c h o S e r v e r S t
0000700 a t i s t i c s \r / / - - - - -
0000720 - - - - - - - - - - - - - - - -
*
0001020 - - - - - - - \r [ \r v e r s 376 001
0001040 \0 272 234 i o n w o r d \t \t / /
0001060 = e c h o S t a t s V e r s i
0001100 o n \r p a c k e t s E c h o e d
0001120 w o r d 2 \t / / # o f
0001140 p a c k e t s e c h o e d \r ]
0001160 \r \r / / - - - - - - - - - - - -
0001200 - - - - - - - - - - - - - - - -
*
0001300 \r s t r u c t u r e E S : \t \t
0001320 / / ' g l o b a l f r a m e
0001340 ' f o r E c h o S e r v e
0001360 r \r / / - - - - - - - - - - - -
0001400 - - - - - - - - - - - - - - - -
*
0001440 - - - 376 \0 266 227 375 - - - - - - - -
0001460 - - - - - - - - - - - - - - - -
0001500 - - - - - \r [ \r z o n e w o r
0001520 d \t \t / / - > s t o r a g e
0001540 z o n e \r c t x Q w o r d \t
0001560 \t / / - > c t x Q \r s o c
0001600 w o r d \t \t / / - > E c h o
0001620 s o c k e t \r c t x w o r d
0001640 \t \t / / - > E c h o C T X
0001660 \r s t a t s @ S t a t s \r ] \r
0001700 m a n i f e s t l e n E S =
0001720 s i z e E S / 1 6 \r \r \r 377 \0
0001740 \0 P u p E c h o I n i t . b c p
0001760 l \0 376 001 \0 333 265 / / P u p E c h
0002000 o I n i t . b c p l - - C o
0002020 m p a n i o n f i l e i s
0002040 P u p E c h o S e r v . b c p l
0002060 \r \r / / L a s t m o d i f i
0002100 e d J a n u a r y 1 3 , 1
0002120 9 7 9 2 : 1 9 P M b y
0002140 B o g g s \r \r g e t " P u p 0
0002160 . d e c l " \r g e t " P u p 1
0002200 . d e c l " \r g e t " P u p E
0002220 c h o S e r v . d e c l " \r \r e
0002240 x t e r n a l \r [ \r / / o u t
0002260 g o i n g p r o c e d u r e s
0002300 \r C r e a t e E c h o S e r v ;
0002320 D e s t r o y E c h o S e r v
0002340 \r \r / / i n c o m i n g p r
0002360 o c e d u r e 376 001 \0 a 202 s \r E c
0002400 h o S e r v C t x \r A l l o c a
0002420 t e ; F r e e ; E n q u e u
0002440 e ; U n q u e u e \r I n i t i
0002460 a l i z e C o n t e x t ; B l
0002500 o c k ; Z e r o \r O p e n L e
0002520 v e l 1 S o c k e t ; C l o s
0002540 e L e v e l 1 S o c k e t ; S
0002560 e t A l l o c a t i o n \r \r / /
0002600 i n c o m i n g s t a t i c
0002620 s \r @ e s \r ] \r \r \r / / - - - -
0002640 - - - - - - - - - - - - - - - -
*
0002740 - - - - - - - - \r l e t C r e
0002760 a t e E c h o S e r v ( 376 001 \0 213
0003000 032 z o n e , c t x Q ) b e \r
0003020 / / - - - - - - - - - - - - - -
0003040 - - - - - - - - - - - - - - - -
*
0003120 - - - - - - - - - - - - - - \r [
0003140 \r e s = A l l o c a t e ( z
0003160 o n e , l e n E S ) ; Z e r
0003200 o ( e s , l e n E S ) \r e s >
0003220 > E S . z o n e = z o n e \r
0003240 e s > > E S . c t x Q = c t
0003260 x Q \r e s > > E S . s t a t s .
0003300 v e r s i o n = e c h o S t
0003320 a t s V e r s i o n \r e s > > E
0003340 S . s o c = A l l o c a t e
0003360 ( z o n e , l e n P u p S o c
0003400 ) 376 001 \0 \r 006 \r O p e n L e v e l
0003420 1 S o c k e t ( e s > > E S . s
0003440 o c , t a b l e [ 0 ; 0
0003460 ; p s E c h o S e r v ] ) \r
0003500 S e t A l l o c a t i o n ( e s
0003520 > > E S . s o c , 1 , 1 ,
0003540 0 ) \r e s > > E S . c t x =
0003560 I n i t i a l i z e C o n t e x
0003600 t ( A l l o c a t e ( z o n e ,
0003620 7 5 ) , 7 5 , E c h o S e
0003640 r v C t x ) \r E n q u e u e ( c
0003660 t x Q , e s > > E S . c t x )
0003700 \r ] \r \r / / - - - - - - - - - -
0003720 - - - - - - - - - - - - - - - -
*
0004000 - - - - - - 376 001 \0 377 221 - - - - -
0004020 - - - - - - - \r a n d D e s t
0004040 r o y E c h o S e r v ( ) b e
0004060 \r / / - - - - - - - - - - - - -
0004100 - - - - - - - - - - - - - - - -
*
0004160 - - - - - - - - - - - - - - - \r
0004200 [ \r U n q u e u e ( e s > > E S
0004220 . c t x Q , e s > > E S . c t
0004240 x ) \r C l o s e L e v e l 1 S o
0004260 c k e t ( e s > > E S . s o c )
0004300 \r F r e e ( e s > > E S . z o n
0004320 e , e s > > E S . s o c ) \r F
0004340 r e e ( e s > > E S . z o n e ,
0004360 e s > > E S . c t x ) \r F r e
0004400 e ( e s > > E S . z o 376 \0 \v 206 035
0004420 n e , e s ) \r ] \r \r 377 \0 \0 P u
0004440 p E c h o S e r v . b c p l \0 376
0004460 001 \0 r 6 / / P u p E c h o S e
0004500 r v . b c p l - - C o m p a
0004520 n i o n f i l e i s P u p
0004540 E c h o I n i t . b c p l \r \r /
0004560 / L a s t m o d i f i e d
0004600 J a n u a r y 2 6 , 1 9 7 9
0004620 2 : 5 0 P M b y B o g
0004640 g s \r \r g e t " P u p 0 . d e
0004660 c l " \r g e t " P u p 1 . d e
0004700 c l " \r g e t " P u p E c h o
0004720 S e r v . d e c l " \r \r e x t e
0004740 r n a l \r [ \r / / o u t g o i
0004760 n g p r o c e d u r e s \r E c
0005000 h o S e r v C t x \r \r / / i n
0005020 c o m i n g p r o c e d u r e
0005040 s \r B l o c k ; D e q u e u e
0005060 ; D o 376 001 \0 026 1 u b l e I n c
0005100 r e m e n t ; M o v e B l o c
0005120 k \r C o m p l e t e P u p ; R
0005140 e l e a s e P B I ; E x c h a
0005160 n g e P o r t s \r \r / / o u t
0005200 g o i n g s t a t i c s \r @ e
0005220 s \r ] \r \r s t a t i c @ e s \r
0005240 \r / / - - - - - - - - - - - - -
0005260 - - - - - - - - - - - - - - - -
*
0005340 - - - - - - - - - - - - - - - \r
0005360 l e t E c h o S e r v C t x (
0005400 c t x ) b e \t \t / / a c o
0005420 n t e x t \r / / - - - - - - - -
0005440 - - - - - - - - - - - - - - - -
0005460 - - - - - - - - - 376 001 \0 031 y - -
0005500 - - - - - - - - - - - - - - - -
*
0005540 - - - - - - - - - \r [ \r B l o c
0005560 k ( ) r e p e a t w h i l e
0005600 e s > > E S . s o c > > P u p S
0005620 o c . i Q . h e a d e q 0 \r
0005640 l e t p b i = D e q u e u
0005660 e ( l v e s > > E S . s o c >
0005700 > P u p S o c . i Q ) \r E x c h
0005720 a n g e P o r t s ( p b i ) \r s
0005740 w i t c h o n p b i > > P B I
0005760 . p u p . t y p e i n t o \r
0006000 [ \r c a s e p t E c
0006020 h o M e : \r [ \r
0006040 D o u b l e I n c r e m
0006060 e n t ( l v e s > > E S . 376 001
0006100 \0 X 247 s t a t s . p a c k e t s
0006120 E c h o e d ) \r C o
0006140 m p l e t e P u p ( p b i , p
0006160 t I m A n E c h o ) \r
0006200 e n d c a s e \r ]
0006220 \r c a s e p t S t a t s
0006240 R e q u e s t : \r [
0006260 \r M o v e B l o c k
0006300 ( l v p b i > > P B I . p u p
0006320 . w o r d s , l v e s > > E
0006340 S . s t a t s , s i z e S t
0006360 a t s / 1 6 ) \r C o
0006400 m p l e t e P u p ( p b i , p
0006420 t S t a t s R e p l y , p u p
0006440 O v B y t e s + s i z e S t a
0006460 t s / 8 ) \r e n d c
0006500 a s e 376 \0 3 L 300 \r ]
0006520 \r d e f a u l t : R e l
0006540 e a s e P B I ( p b i ) \r
0006560 ] \r ] r e p e a t \r 377 \0 \0 P u
0006600 p M i s c S e r v . d e c l \0 376
0006620 001 \0 G b / / P u p M i s c S e
0006640 r v . d e c l \r \r / / L a s t
0006660 m o d i f i e d M a r c h
0006700 5 , 1 9 7 9 5 : 4 7 P M
0006720 b y B o g g s \r \r m a n i f
0006740 e s t \r [ \r / / r e g i s t e
0006760 r e d , w e l l - k n o w n
0007000 s o c k e t \r p s M i s c S e r
0007020 v = 4 \r \r / / u n u s e d
0007040 t y p e s : 2 6 2 - 3 7 7 \r
0007060 / / 2 0 4 & 2 0 5 a r e
0007100 o l d A l t o t i m e p
0007120 r o t o c o l - D o n t r
0007140 e u s e u n t i l 1 9 8 0 .
0007160 \r / / 2 4 5 & 2 4 6 a r
0007200 e o l d b o o t d i r e c
0007220 t o r y 376 001 \0 373 x p r o t o c
0007240 o l - d o n t r e u s e
0007260 u n t i l 1 9 8 0 \r \r / / T
0007300 i m e p r o t o c o l \r p t S
0007320 t r i n g T i m e R e q u e s t
0007340 = 2 0 0 b \r p t S t r i n g
0007360 T i m e R e p l y = 2 0 1 b
0007400 \r p t T e n e x T i m e R e q u
0007420 e s t = 2 0 2 b \r p t T e n
0007440 e x T i m e R e p l y = 2 0
0007460 3 b \r p t A l t o T i m e R e q
0007500 u e s t = 2 0 6 b \r p t A l
0007520 t o T i m e R e p l y = 2 0
0007540 7 b \r p t T i m e S t a t s R e
0007560 q u e s t = 2 1 5 b \r p t T
0007600 i m e S t a t s R e p l y =
0007620 2 1 6 b \r p t R e 376 001 \0 K 304 s e
0007640 t T i m e R e q u e s t = 2
0007660 5 5 b \r p t R e s e t T i m e R
0007700 e p l y = 2 5 6 b \r p t L o
0007720 c k T i m e R e q u e s t =
0007740 2 1 7 b \r p t L o c k T i m e R
0007760 e p l y = 2 2 7 b \r \r / /
0010000 M a i l c h e c k p r o t o
0010020 c o l \r p t M S G M a i l C h e
0010040 c k = 2 1 0 b \r p t L a u r
0010060 e l M a i l C h e c k = 2 1
0010100 4 b \r p t N e w M a i l E x i s
0010120 t s = 2 1 1 b \r p t N o N e
0010140 w M a i l = 2 1 2 b \r p t N
0010160 o S u c h M a i l B o x = 2
0010200 1 3 b \r \r / / N e t w o r k
0010220 D i r e c t o r y p r o t 376 001
0010240 \0 C 262 o c o l \r p t N e t D i r
0010260 L o o k u p = 2 2 0 b \r p t
0010300 N e t D i r R e p l y = 2 2
0010320 1 b \r p t N e t D i r E r r o r
0010340 = 2 2 2 b \r p t N e t D i r
0010360 V e r s i o n = 2 4 0 b \r p
0010400 t S e n d N e t D i r = 2 4
0010420 1 b \r p t N e t D i r L o o k u
0010440 p 1 = 2 2 3 b \r p t N e t D
0010460 i r R e p l y 1 = 2 2 4 b \r
0010500 p t N e t D i r S t a t s R e q
0010520 u e s t = 2 2 5 b \r p t N e
0010540 t D i r S t a t s R e p l y =
0010560 2 2 6 b \r p t N e t D i r L o
0010600 c k R e q u e s t = 2 3 5 b
0010620 \r p t N e t D i r L o c k R e p
0010640 l y 376 001 \0 361 356 = 2 3 6 b \r p
0010660 t N e t D i r U n l o c k R e q
0010700 u e s t = 2 3 7 b \r p t N e
0010720 t D i r U n l o c k R e p l y
0010740 = 2 6 1 b \r \r / / W h e r e
0010760 I s U s e r p r o t o c o
0011000 l \r p t U s e r R e q u e s t
0011020 = 2 3 0 b \r p t U s e r R e p
0011040 l y = 2 3 1 b \r p t U s e r
0011060 E r r o r = 2 3 2 b \r \r / /
0011100 B o o t p r o t o c o l \r p
0011120 t B o o t F i l e R e q u e s t
0011140 = 2 4 4 b \r p t B o o t D i
0011160 r R e q u e s t = 2 5 7 b \r
0011200 p t B o o t D i r R e p l y =
0011220 2 6 0 b \r p t K i s s O f D e
0011240 a t h = 2 4 376 001 \0 337 243 7 b \r
0011260 p t B o o t S t a t s R e q u e
0011300 s t = 2 5 3 b \r p t B o o t
0011320 S t a t s R e p l y = 2 5 4
0011340 b \r p t B o o t L o c k R e q u
0011360 e s t = 2 4 2 b \r p t B o o
0011400 t L o c k R e p l y = 2 4 3
0011420 b \r p t B o o t U n l o c k R e
0011440 q u e s t = 2 3 3 b \r p t B
0011460 o o t U n l o c k R e p l y =
0011500 2 3 4 b \r \r / / U s e r A
0011520 u t h e n t i c a t i o n p r
0011540 o t o c o l \r p t A u t h R e q
0011560 u e s t = 2 5 0 b \r p t A u
0011600 t h P o s i t i v e = 2 5 1
0011620 b \r p t A u t h N e g a t i v e
0011640 = 2 5 2 b \r ] \r \r / / 376 001 \0
0011660 \v x - - - - - - - - - - - - - -
0011700 - - - - - - - - - - - - - - - -
*
0011760 - - - - - - - - - - - - - - \r s
0012000 t r u c t u r e M S : \t \t / /
0012020 ' g l o b a l f r a m e '
0012040 f o r t h e M i s c e l l a
0012060 n e o u s S e r v e r \r / / -
0012100 - - - - - - - - - - - - - - - -
*
0012200 - - - - - - - - - - - \r [ \r z o
0012220 n e w o r d \t \t / / - > z
0012240 o n e \r c t x Q w o r d \t \t /
0012260 / 376 \0 R 324 o - > c t x Q \r s
0012300 o c w o r d \t \t / / - > P
0012320 u p S o c \r c t x w o r d \t \t
0012340 / / - > c t x \r ] \r m a n i
0012360 f e s t l e n M S = s i z
0012400 e M S / 1 6 \r \r 377 \0 \0 P u p M
0012420 i s c I n i t . b c p l \0 376 001 \0
0012440 025 035 / / P u p M i s c I n i t
0012460 . b c p l - - M i s c e l l
0012500 a n e o u s S e r v i c e s
0012520 s e r v e r \r \r / / L a s t
0012540 m o d i f i e d J a n u a r y
0012560 1 3 , 1 9 7 9 2 : 2 0
0012600 P M b y B o g g s \r \r g e t
0012620 " P u p 0 . d e c l " \r g e t
0012640 " P u p 1 . d e c l " \r g e t
0012660 " P u p M i s c S e r v . d e
0012700 c l " \r \r e x t e r n a l \r [ \r
0012720 / / o u t g o i n g p r o c
0012740 e d u r e s \r C r e a t e M i s
0012760 c S e r v ; D e s t r o y M i
0013000 s c S e r v \r \r / / i n c o m
0013020 i n g p r o c e d u r e s \r M
0013040 i s 376 001 \0 Z 253 c S e r v C t x \r
0013060 C r e a t e N a m e S e r v ;
0013100 C r e a t e B o o t S e r v ;
0013120 C r e a t e T i m e S e r v \r D
0013140 e s t r o y N a m e S e r v ;
0013160 D e s t r o y B o o t S e r v ;
0013200 D e s t r o y T i m e S e r v
0013220 \r O p e n L e v e l 1 S o c k e
0013240 t ; C l o s e L e v e l 1 S o
0013260 c k e t \r A l l o c a t e ; F
0013300 r e e ; E n q u e u e ; U n
0013320 q u e u e \r I n i t i a l i z e
0013340 C o n t e x t ; Z e r o \r \r /
0013360 / i n c o m i n g s t a t i
0013400 c s \r @ m s \r ] \r \r m a n i f e
0013420 s t m s s s = a l t o ?
0013440 7 0 0 , 2 0 376 001 \0 210 201 0 /
0013460 / M i s c s e r v s t a c k
0013500 s i z e \r \r / / - - - - - - -
0013520 - - - - - - - - - - - - - - - -
*
0013620 - - - - - \r l e t C r e a t e
0013640 M i s c S e r v ( z o n e , c
0013660 t x Q ) b e \r / / - - - - - -
0013700 - - - - - - - - - - - - - - - -
*
0014000 - - - - - - \r [ \r m s = A l
0014020 l o c a t e ( z o n e , l e n
0014040 M S ) ; Z e r o ( m s 376 001 \0 357
0014060 264 , l e n M S ) \r m s > > M S
0014100 . z o n e = z o n e \r m s >
0014120 > M S . c t x Q = c t x Q \r
0014140 m s > > M S . s o c = A l l
0014160 o c a t e ( z o n e , l e n P
0014200 u p S o c ) \r O p e n L e v e l
0014220 1 S o c k e t ( m s > > M S . s
0014240 o c , t a b l e [ 0 ; 0
0014260 ; p s M i s c S e r v ] ) \r
0014300 m s > > M S . c t x = I n i
0014320 t i a l i z e C o n t e x t ( A
0014340 l l o c a t e ( z o n e , m s
0014360 s s ) , m s s s , M i s c S
0014400 e r v C t x ) \r E n q u e u e (
0014420 c t x Q , m s > > M S . c t x
0014440 ) \r \r C r e a t e N a m e S e r
0014460 v 376 001 \0 R 267 ( ) \r C r e a t e T
0014500 i m e S e r v ( ) \r C r e a t e
0014520 B o o t S e r v ( ) \r ] \r \r / /
0014540 - - - - - - - - - - - - - - - -
*
0014640 - - - - - - - - - - - - \r a n d
0014660 D e s t r o y M i s c S e r v
0014700 ( ) b e \r / / - - - - - - - -
0014720 - - - - - - - - - - - - - - - -
*
0015020 - - - - \r [ \r C l o s e L e v e
0015040 l 1 S o c k e t ( m s > > M S .
0015060 s o c ) \r U 376 \0 214 Z \f n q u e u
0015100 e ( m s > > M S . c t x Q , m
0015120 s > > M S . c t x ) \r F r e e (
0015140 m s > > M S . z o n e , m s >
0015160 > M S . c t x ) \r D e s t r o y
0015200 N a m e S e r v ( ) \r D e s t r
0015220 o y T i m e S e r v ( ) \r D e s
0015240 t r o y B o o t S e r v ( ) \r F
0015260 r e e ( m s > > M S . z o n e ,
0015300 m s ) \r ] \r 377 \0 \0 P u p M i s
0015320 c S e r v . b c p l \0 376 001 \0 371 301
0015340 / / P u p M i s c S e r v . b
0015360 c p l - - M i s c e l l a n
0015400 e o u s S e r v i c e s s e
0015420 r v e r \r \r / / L a s t m o
0015440 d i f i e d M a r c h 5 ,
0015460 1 9 7 9 4 : 4 4 P M b y
0015500 B o g g s \r \r g e t " P u p
0015520 0 . d e c l " \r g e t " P u p
0015540 1 . d e c l " \r g e t " P u p
0015560 M i s c S e r v . d e c l " \r \r
0015600 e x t e r n a l \r [ \r / / o u
0015620 t g o i n g p r o c e d u r e
0015640 s \r M i s c S e r v C t x \r \r /
0015660 / i n c o m i n g p r o c e
0015700 d u r e s \r N a m e S e r v ;
0015720 B o o t S e r v ; T i m e S e
0015740 376 001 \0 \t 256 r v \r R e l e a s e P
0015760 B I ; D e q u e u e ; B l o
0016000 c k \r \r / / o u t g o i n g
0016020 s t a t i c s \r @ m s \r ] \r \r s
0016040 t a t i c @ m s \r \r / / - - -
0016060 - - - - - - - - - - - - - - - -
*
0016160 - - - - - - - - - \r l e t M i
0016200 s c S e r v C t x ( ) b e \r /
0016220 / - - - - - - - - - - - - - - -
0016240 - - - - - - - - - - - - - - - -
*
0016320 - - - - - - - - - - - - - \r [ \r
0016340 B l o c k 376 001 \0 035 262 ( ) r e p
0016360 e a t u n t i l m s > > M S .
0016400 s o c > > P u p S o c . i Q . h
0016420 e a d n e 0 \r l e t p b i
0016440 = D e q u e u e ( l v m s
0016460 > > M S . s o c > > P u p S o c
0016500 . i Q ) \r s w i t c h o n p b
0016520 i > > P B I . p u p . t y p e
0016540 i n t o \r [ \r c a s
0016560 e p t T i m e S t a t s R e q
0016600 u e s t : \r c a s e p t
0016620 T e n e x T i m e R e q u e s t
0016640 : \r c a s e p t S t r i
0016660 n g T i m e R e q u e s t : \r
0016700 c a s e p t A l t o T i m
0016720 e R e q u e s t : \r c a s
0016740 e p t R e s e t T 376 001 \0 243 020 i
0016760 m e R e q u e s t : \r c a
0017000 s e p t L o c k T i m e R e q
0017020 u e s t : \r [ T i
0017040 m e S e r v ( p b i ) ; e n d
0017060 c a s e ] \r \r c a s e
0017100 p t N e t D i r S t a t s R e q
0017120 u e s t : \r c a s e p t
0017140 N e t D i r V e r s i o n : \r
0017160 c a s e p t S e n d N e t
0017200 D i r : \r c a s e p t N
0017220 e t D i r L o o k u p : \r
0017240 c a s e p t N e t D i r L o c
0017260 k R e q u e s t : \r c a s
0017300 e p t N e t D i r U n l o c k
0017320 R e q u e s t : \r [
0017340 N a m e S e r v ( p b i ) ; 376
0017360 \0 373 224 \r e n d c a s e ] \r \r
0017400 c a s e p t B o o t S t
0017420 a t s R e q u e s t : \r c
0017440 a s e p t B o o t F i l e R e
0017460 q u e s t : \r c a s e p
0017500 t B o o t D i r R e q u e s t :
0017520 \r c a s e p t B o o t D
0017540 i r R e p l y : \r c a s e
0017560 p t B o o t L o c k R e q u e
0017600 s t : \r c a s e p t B o
0017620 o t U n l o c k R e q u e s t :
0017640 \r [ B o o t S e r
0017660 v ( p b i ) ; e n d c a s e
0017700 ] \r \r d e f a u l t : R
0017720 e l e a s e P B I ( p b i ) \r
0017740 ] \r ] r e p e a t \r \r \r 377
0017760 \0 \0 P u p T i m e S e r v . d e
0020000 c l \0 376 001 \0 y 364 / / P u p T i
0020020 m e S e r v . d e c l \r \r / /
0020040 L a s t m o d i f i e d M a
0020060 r c h 4 , 1 9 7 9 2 : 2
0020100 8 A M b y B o g g s \r \r g
0020120 e t " P u p M i s c S e r v .
0020140 d e c l " \r \r m a n i f e s t \r
0020160 [ \r t i c k s P e r S e c =
0020200 a l t o ? 1 0 0 0 , 1 0 0 \r
0020220 s t r i n g F o r m a t = a
0020240 l t o \t / / n o r o o m f
0020260 o r s t r i n g f o r m a t
0020300 t i m e s e r v e r o n
0020320 N o v a s \r t i m e S t a t s V
0020340 e r s i o n = 2 \r ] \r \r / /
0020360 - - - - - - - - - - - - - - - -
0020400 - - - - - - - - 376 001 \0 224 236 - - -
0020420 - - - - - - - - - - - - - - - -
*
0020500 - \r s t r u c t u r e S t a t
0020520 s : \t / / T i m e s e r v e
0020540 r s t a t s \r / / - - - - - -
0020560 - - - - - - - - - - - - - - - -
*
0020660 - - - - - - \r [ \r v e r s i o n
0020700 w o r d \t \t / / = t i m e
0020720 S t a t s V e r s i o n \r t e n
0020740 e x R e q s w o r d 2 \t / /
0020760 n u m b e r o f T e n e x
0021000 f o r m a t t i m e 376 001 \0
0021020 K J r e q u e s t s \r s t r i n
0021040 g R e q s w o r d 2 \t / /
0021060 n u m b e r o f S t r i n g
0021100 f o r m a t t i m e r e q
0021120 u e s t s \r a l t o R e q s w
0021140 o r d 2 \t \t / / n u m b e r
0021160 o f A l t o f o r m a t
0021200 t i m e r e q u e s t s \r c o
0021220 r r e c t i o n w o r d \t \t /
0021240 / c l o c k c o r r e c t i
0021260 o n , s i g n e d i n t e g
0021300 e r \r r e s e t P o r t @ P o
0021320 r t \t \t / / p o r t f r o m
0021340 w h i c h c l o c k l a s
0021360 t s e t \r ] \r \r / / - - - - -
0021400 - - - - - - - - - - - - - - - -
0021420 - - 376 001 \0 ~ 373 - - - - - - - - -
0021440 - - - - - - - - - - - - - - - -
*
0021500 - - - - - - - - - - - - \r s t r
0021520 u c t u r e T i m e P a r a m
0021540 s : \r / / - - - - - - - - - - -
0021560 - - - - - - - - - - - - - - - -
*
0021660 - \r [ \r z o n e S b i t \t \t /
0021700 / z o n e s i g n : + i
0021720 s w e s t o f G r e e n w
0021740 i c h \r z o n e H b i t 7 \t
0021760 \t / / z o n e h o u r s \r z
0022000 o n e M b i t 8 \t \t / / z
0022020 o n e m i n 376 001 \0 260 % u t e s
0022040 \r b e g i n D S T w o r d \t \t
0022060 / / d a y n u m b e r o n
0022100 w h i c h D S T b e g i n
0022120 s \r e n d D S T w o r d \t \t /
0022140 / d a y n u m b e r o n
0022160 w h i c h D S T e n d s \r ]
0022200 \r \r / / - - - - - - - - - - - -
0022220 - - - - - - - - - - - - - - - -
*
0022320 \r s t r u c t u r e T S : \t \t
0022340 / / ' g l o b a l f r a m e
0022360 ' f o r t i m e s e r v e
0022400 r \r / / - - - - - - - - - - - -
0022420 - - - - - - - - - - - - 376 001 \0 y
0022440 022 - - - - - - - - - - - - - - -
0022460 - - - - - - - - - - - - - - - -
*
0022520 - - - - - \r [ \r c t x w o r d
0022540 \t \t / / - > T i m e S e r v
0022560 c t x \r \r s t a t s @ S t a
0022600 t s \r \r f l a g s w o r d =
0022620 \r [ \r b l a n k b
0022640 i t 1 3 \r d o n t K n o
0022660 w T i m e b i t \t / / t i m
0022700 e i s u n k n o w n \r
0022720 c o r r S i g n b i t \t \t / /
0022740 C o r r e c t i o n s i g n
0022760 \r d o C o r r e c t b i
0023000 t \t / / a c l o c k c o r
0023020 r e c t i o n h a s b e e n
0023040 376 001 \0 363 027 s p e c i f i e d \r
0023060 ] \r r e s e t C t x w o
0023100 r d \t \t / / - > R e s e t T
0023120 i m e C t x o r 0 i f n
0023140 o n e a c t i v e \r \r c o r r
0023160 C o u n t w o r d 2 \t / /
0023200 d e c r e m e n t e d b y T
0023220 i m e C t x \r c o r r e c t i o
0023240 n w o r d 2 \t / / s e c o
0023260 n d s b e t w e e n c o r r
0023300 e c t i o n s \r \r a l t o C l k
0023320 w o r d 2 \t \t / / A l t o
0023340 f o r m a t c a l e n d a r
0023360 c l o c k \r t i m e P a r a m
0023400 s @ T i m e P a r a m s \r ] \r
0023420 m a n i f e s t l e n T S =
0023440 s i z e 376 \0 \a 271 230 T S / 1 6
0023460 \r \r 377 \0 \0 P u p T i m e S e r v
0023500 . b c p l \0 376 001 \0 S 235 / / P u
0023520 p T i m e S e r v . b c p l -
0023540 P u p T i m e S e r v e r
0023560 \r \r / / L a s t m o d i f i
0023600 e d M a r c h 1 9 , 1 9 8
0023620 0 1 2 : 0 7 A M b y B
0023640 o g g s \r \r g e t " p u p 0 .
0023660 d e c l " \r g e t " p u p 1 .
0023700 d e c l " \r g e t " P u p T i
0023720 m e S e r v . d e c l " \r \r e x
0023740 t e r n a l \r [ \r / / o u t g
0023760 o i n g p r o c e d u r e s \r
0024000 T i m e S e r v ; T i m e S e
0024020 r v C t x ; R e s e t T i m e
0024040 S e r v ; G e t T i m e \r \r /
0024060 / i n c o m i n g p r o c e
0024100 d u r e s \r D e q u e 376 001 \0 207 235
0024120 u e ; E n q u e u e ; U n q
0024140 u e u e \r M o v e B l o c k ;
0024160 M u l t E q ; Z e r o ; N o
0024200 v a D i v \r S e t T i m e r ;
0024220 T i m e r H a s E x p i r e d ;
0024240 I n i t i a l i z e C o n t e
0024260 x t ; B l o c k ; D i s m i
0024300 s s \r A p p e n d S t r i n g T
0024320 o P u p ; G e t P B I ; R e
0024340 l e a s e P B I ; C o m p l e
0024360 t e P u p \r E x c h a n g e P o
0024400 r t s ; O p e n L e v e l 1 S
0024420 o c k e t ; C l o s e L e v e
0024440 l 1 S o c k e t ; S e t P u p
0024460 D P o r t \r D o u b l e I n c r
0024500 e m e n t ; D o u b l e A d d
0024520 376 001 \0 221 037 ; D o u b l e S u b
0024540 t r a c t \r \r / / o u t g o i
0024560 n g s t a t i c s \r @ t s \r \r
0024600 / / i n c o m i n g s t a t
0024620 i c s \r l e n P u p ; p b i T
0024640 Q ; @ m s \r ] \r \r c o m p i l
0024660 e i f n o v a t h e n [
0024700 e x t e r n a l [ R T C ]
0024720 ] \r \r c o m p i l e i f s t
0024740 r i n g F o r m a t t h e n
0024760 [ e x t e r n a l [ U N P
0025000 A C K D T ; C O N V U D T ]
0025020 ] \r \r s t a t i c @ t s \r \r
0025040 / / T i m e S e r v C t x i
0025060 s t h e m a i n p r o c e
0025100 s s f o r t h i s m o d u
0025120 l e . \r / 376 001 \0 ) A / I t
0025140 m a i n t a i n s t h e c a
0025160 l e n d a r c l o c k , c o
0025200 r r e c t i n g w h e n n e
0025220 c e s s a r y . \r / / R e s e
0025240 t T i m e S e r v c a u s e s
0025260 t h e t i m e s e r v e r
0025300 t o f o r g e t w h a t
0025320 t i m e i t i s \r / / a
0025340 n d p r o b e f o r t h e
0025360 t i m e f r o m a n o t h
0025400 e r t i m e s e r v e r . \r
0025420 / / U n t i l i t h a s
0025440 r e s e t i t s e l f , i
0025460 t d o e s n ' t a n s w e r
0025500 r e q u e s t s . \r / / T
0025520 h e t i m e i s 376 001 \0 302 p
0025540 r e s e t b y s p a w n i n
0025560 g a p r o c e s s , s o
0025600 t h e t i m e p r o b a b l
0025620 y w o n t \r / / h a v e
0025640 b e e n r e s e t y e t w
0025660 h e n R e s e t T i m e S e r
0025700 v r e t u r n s . \r / / T i
0025720 m e S e r v i s l o g i c a
0025740 l l y p a r t o f t h e
0025760 m i s c e l l a n e o u s s e
0026000 r v i c e s p r o c e s s , \r
0026020 / / h a n d l i n g t h e
0026040 T i m e p r o t o c o l p
0026060 a c k e t t y p e s . \r \f \r /
0026100 / - - - - - - - - - - - - - - -
0026120 - - - - - - - - - - - - - - - 376
0026140 001 \0 006 . - - - - - - - - - - - -
0026160 - - - - - - - - - - - - - - - -
*
0026220 - - \r l e t T i m e S e r v (
0026240 p b i ) b e \r / / - - - - - -
0026260 - - - - - - - - - - - - - - - -
*
0026360 - - - - - - \r / / C a l l e d
0026400 f r o m M i s c S e r v e
0026420 r , p b i c o n t a i n s
0026440 a t i m e p r o t o c o l
0026460 P u p \r [ \r E x c h a n g e P o
0026500 r t s ( p b i ) \r s w i t c h o
0026520 n p b i > > P B I . p u p . t
0026540 y p e 376 001 \0 351 307 i n t o \r
0026560 [ \r c o m p i l e i f
0026600 s t r i n g F o r m a t t h e
0026620 n \r [ \r
0026640 c a s e p t S t r i n g T i m
0026660 e R e q u e s t : \r
0026700 [ \r i f
0026720 t s > > T S . d o n t K n o w
0026740 T i m e n e 0 % t s > >
0026760 T S . d o C o r r e c t e q
0027000 0 e n d c a s e \r
0027020 l e t d a t e V e c =
0027040 v e c 6 ; U N P A C K D T
0027060 ( l v t s > > T S . a l t o C
0027100 l k , d a t e V e c ) \r
0027120 l e t b u f f e r
0027140 = v e c 2 0 376 001 \0 337 317 ;
0027160 C O N V U D T ( b u f f e r ,
0027200 d a t e V e c ) \r
0027220 A p p e n d S t r i n g T o
0027240 P u p ( p b i , 1 , b u f f
0027260 e r ) \r C o m
0027300 p l e t e P u p ( p b i , p t
0027320 S t r i n g T i m e R e p l y )
0027340 \r D o u b l e
0027360 I n c r e m e n t ( l v t s >
0027400 > T S . s t a t s . s t r i n g
0027420 R e q s ) \r r
0027440 e t u r n \r ]
0027460 \r ] \r c a s e
0027500 p t T e n e x T i m e R e q u
0027520 e s t : \r [ \r
0027540 i f t s > > T S . d 376 001
0027560 \0 032 325 o n t K n o w T i m e n
0027600 e 0 % t s > > T S . d o C
0027620 o r r e c t e q 0 e n d c
0027640 a s e \r / / Q 1 ,
0027660 R 1 _ A l t o T i m e / 4
0027700 3 2 0 0 . Q 1 = h a l f D
0027720 a y s , R 1 = s e c o n d
0027740 s \r / / Q 2 , R
0027760 2 _ Q 1 / 2 , Q 2 = d
0030000 a y s . R 2 = h a l f D a
0030020 y s ( 0 o r 1 ) \r
0030040 / / D a y s _ Q 2 +
0030060 1 5 3 8 5 \r / /
0030100 S e c o n d s _ R 1 + R
0030120 2 * 4 3 2 0 0 \r l e
0030140 t R 1 = n i l \r
0030160 l e 376 001 \0 - 245 t Q 1 = N
0030200 o v a D i v ( l v t s > > T S
0030220 . a l t o C l k , # 1 2 4 3 0
0030240 0 , l v R 1 ) \r
0030260 l e t R 2 = Q 1 & 1 \r
0030300 l e t Q 2 = Q
0030320 1 r s h i f t 1 \r
0030340 l e t d a y s = v e c
0030360 1 ; d a y s ! 0 = 0 ; d
0030400 a y s ! 1 = Q 2 \r
0030420 D o u b l e A d d ( d a y s ,
0030440 t a b l e [ 0 ; 1 5 3 8
0030460 5 ] ) \r l e t s
0030500 e c o n d s = v e c 1 ;
0030520 s e c o n d s ! 0 = 0 ; s
0030540 e c o n d s ! 1 = R 1 \r
0030560 i f R 376 001 \0 G 211 2 n
0030600 e 0 t h e n D o u b l e A
0030620 d d ( s e c o n d s , t a b l
0030640 e [ 0 ; # 1 2 4 3 0 0 ]
0030660 ) \r p b i > > P B I
0030700 . p u p . w o r d s ^ 1 = d
0030720 a y s ! 0 l s h i f t 8 +
0030740 d a y s ! 1 r s h i f t 8
0030760 \r p b i > > P B I .
0031000 p u p . w o r d s ^ 2 = d a
0031020 y s ! 1 l s h i f t 8 +
0031040 s e c o n d s ! 0 \r
0031060 p b i > > P B I . p u p . w o r
0031100 d s ^ 3 = s e c o n d s ! 1
0031120 \r C o m p l e t e P
0031140 u p ( p b i , p t T e n e x T
0031160 i m e R e p l y , p u p 376 001 \0
0031200 344 307 O v B y t e s + 6 ) \r
0031220 D o u b l e I n c r e m e
0031240 n t ( l v t s > > T S . s t a
0031260 t s . t e n e x R e q s ) \r
0031300 r e t u r n \r
0031320 ] \r c a s e p t A l t
0031340 o T i m e R e q u e s t : \r
0031360 [ \r i f t
0031400 s > > T S . d o n t K n o w T i
0031420 m e n e 0 % t s > > T S
0031440 . d o C o r r e c t e q 0
0031460 e n d c a s e \r M o
0031500 v e B l o c k ( l v p b i > >
0031520 P B I . p u p . w o r d s ^ 1 ,
0031540 l v t s > > T S . a l t o C
0031560 l k , 2 ) \r M o v
0031600 e B 376 001 \0 253 W l o c k ( l v p
0031620 b i > > P B I . p u p . w o r d
0031640 s ^ 3 , l v t s > > T S . t
0031660 i m e P a r a m s , 3 ) \r
0031700 C o m p l e t e P u p (
0031720 p b i , p t A l t o T i m e R
0031740 e p l y , p u p O v B y t e s
0031760 + 1 0 ) \r D o u b l
0032000 e I n c r e m e n t ( l v t s
0032020 > > T S . s t a t s . a l t o R
0032040 e q s ) \r r e t u r
0032060 n \r ] \r c a s
0032100 e p t T i m e S t a t s R e q
0032120 u e s t : \r [ \r
0032140 M o v e B l o c k ( l v
0032160 p b i > > P B I . p u p . w o
0032200 r d s , l v 376 001 \0 320 360 t s >
0032220 > T S . s t a t s , s i z e
0032240 S t a t s / 1 6 ) \r
0032260 C o m p l e t e P u p ( p b i ,
0032300 p t T i m e S t a t s R e p l
0032320 y , p u p O v B y t e s + s i
0032340 z e S t a t s / 8 ) \r
0032360 r e t u r n \r ]
0032400 \r c a s e p t L o c k T
0032420 i m e R e q u e s t : \r
0032440 [ \r u n l e s s
0032460 A u t h e n t i c a t e ( p b
0032500 i ) e n d c a s e \r
0032520 t s > > T S . d o n t K n o w
0032540 T i m e = t r u e \r
0032560 C o m p l e t e P u p ( p b
0032600 i , p t L o c k T i m 376 001 \0 .
0032620 2 e R e p l y , p u p O v B y
0032640 t e s ) \r r e t u r
0032660 n \r ] \r c a s
0032700 e p t R e s e t T i m e R e q
0032720 u e s t : \r [ \r
0032740 u n l e s s A u t h e
0032760 n t i c a t e ( p b i ) e n d
0033000 c a s e \r R e s e t
0033020 T i m e S e r v ( l v p b i >
0033040 > P B I . p u p . w o r d s ) \r
0033060 C o m p l e t e P u
0033100 p ( p b i , p t R e s e t T i
0033120 m e R e p l y , p u p O v B y
0033140 t e s ) \r r e t u r
0033160 n \r ] \r ] \r R
0033200 e l e a s e P B I ( p b i )
0033220 / 376 001 \0 340 353 / F a i l u r e :
0033240 d i s c a r d t h e P u p
0033260 . \r ] \r \f \r / / - - - - - - - -
0033300 - - - - - - - - - - - - - - - -
*
0033400 - - - - \r a n d T i m e S e r
0033420 v C t x ( ) b e \t / / a c
0033440 o n t e x t \r / / - - - - - - -
0033460 - - - - - - - - - - - - - - - -
*
0033560 - - - - - \r [ \r l e t l v R T
0033600 C = a l t o ? 5 7 5 b ,
0033620 l v R T C 376 001 \0 037 204 \r l e t
0033640 m y R T C = @ l v R T C \r \r
0033660 [ \r B l o c k ( )
0033700 r e p e a t u n t i l @ l v R
0033720 T C - m y R T C g r t i c k
0033740 s P e r S e c \r [
0033760 / / 1 s e c o n d h a s
0034000 e l a p s e d s i n c e l a
0034020 s t u p d a t e \r
0034040 m y R T C = m y R T C +
0034060 t i c k s P e r S e c \r
0034100 i f t s > > T S . d o C o
0034120 r r e c t t h e n \r
0034140 [ \r D
0034160 o u b l e I n c r e m e n t ( l
0034200 v t s > > T S . c o r r C o u
0034220 n t , - 1 ) \r 376 001 \0 r !
0034240 i f M u l t E q (
0034260 l v t s > > T S . c o r r C o
0034300 u n t , t a b l e [ 0 ;
0034320 0 ] ) t h e n \r
0034340 [ \r
0034360 M o v e B l o c k ( l v
0034400 t s > > T S . c o r r C o u n
0034420 t , l v t s > > T S . c o r
0034440 r e c t i o n , 2 ) \r
0034460 t e s t t s >
0034500 > T S . c o r r S i g n n e
0034520 0 \r
0034540 i f s o m y R T C = m y
0034560 R T C - t i c k s P e r S e
0034600 c / / g a i n 1 s e c o
0034620 n d \r
0034640 376 001 \0 265 7 i f n o t m y R
0034660 T C = m y R T C + t i c
0034700 k s P e r S e c / / l o s e
0034720 1 s e c o n d \r
0034740 ] \r
0034760 ] \r D o u b l e I n
0035000 c r e m e n t ( l v t s > > T
0035020 S . a l t o C l k ) \r
0035040 ] \r ] r e p e a t \r ]
0035060 \r \r / / - - - - - - - - - - - -
0035100 - - - - - - - - - - - - - - - -
*
0035200 \r a n d G e t T i m e ( l v D
0035220 e s t ) = v a l o f \r / / -
0035240 - - - - - 376 001 \0 e f - - - - - -
0035260 - - - - - - - - - - - - - - - -
*
0035360 \r [ \r u n l e s s t s > > T S
0035400 . d o n t K n o w T i m e d o
0035420 M o v e B l o c k ( l v D e s
0035440 t , l v t s > > T S . a l t
0035460 o C l k , 2 ) \r r e s u l t i
0035500 s t s > > T S . d o n t K n o
0035520 w T i m e e q 0 \r ] \r \r / /
0035540 - - - - - - - - - - - - - - - -
*
0035640 - - - - - - - - - - 376 001 \0 \v 202 -
0035660 - \r a n d A u t h e n t i c a
0035700 t e ( p b i ) = p b i > > P
0035720 B I . p u p . i d ^ 1 e q 2
0035740 7 1 8 2 \r / / - - - - - - - - -
0035760 - - - - - - - - - - - - - - - -
*
0036060 - - - \r \f \r / / - - - - - - - -
0036100 - - - - - - - - - - - - - - - -
*
0036200 - - - - \r a n d R e s e t T i
0036220 m e S e r v ( p o r t ; n u m
0036240 a r g s n a ) b e \r / / - 376
0036260 001 \0 177 003 - - - - - - - - - - - -
0036300 - - - - - - - - - - - - - - - -
*
0036360 - - - - - - - - - - - - - - - \r
0036400 / / C a l l t h i s t o
0036420 R e s e t c l o c k f r o m
0036440 t h e i n t e r n e t . \r /
0036460 / T h e w o r k i s d o
0036500 n e a s y n c h r o n o u s l
0036520 y b y a p r o c e s s s
0036540 p a w n e d b y t h i s p
0036560 r o c e d u r e \r / / s o
0036600 t i m e m a y n o t y e t
0036620 b e r e s e t w h e n t
0036640 h i s p r o c e d u r e r e
0036660 t u r n 376 001 \0 n y s . \r / / P
0036700 o r t i s w h o t o s e
0036720 n d t h e r e q u e s t t
0036740 o . I t d e f a u l t s
0036760 t o a l l t i m e s e r v
0037000 e r s \r / / o n a l l d
0037020 i r e c t l y c o n n e c t e
0037040 d n e t s . \r / / I f R e
0037060 s e t T i m e C t x i s a c
0037100 t i v e a n d w e g e t
0037120 a n o t h e r r e s e t r e
0037140 q u e s t , p e r h a p s t
0037160 h e \r / / p o r t w a s
0037200 b a d i n t h e f i r s t
0037220 r e q u e s t , s o r e a
0037240 c h i n t o t h e c o n t
0037260 e x t a n d c 376 001 \0 212 201 h a
0037300 n g e \r / / t h e p o r t
0037320 . \r [ \r i f t s > > T S . r e
0037340 s e t C t x e q 0 t h e n
0037360 \r [ \r t s > > T S .
0037400 r e s e t C t x = I n i t i
0037420 a l i z e C o n t e x t ( l v
0037440 G e t P B I ( m s > > M S . s o
0037460 c ) > > P B I . p u p , \r
0037500 l e n P u p , R e s e t T i
0037520 m e C t x ) \r E n q u e u
0037540 e ( m s > > M S . c t x Q , t
0037560 s > > T S . r e s e t C t x ) \r
0037600 ] \r \r l e t r e s e t P
0037620 o r t = l v t s > > T S .
0037640 s t a t s . r e s e t P o r t \r
0037660 M o v e B l o c k ( r e s e 376 001
0037700 \0 E | t P o r t , ( n a e q
0037720 0 ? t a b l e [ 0 ;
0037740 0 ; 0 ] , p o r t ) , l
0037760 e n P o r t ) \r i f M u l t E
0040000 q ( l v r e s e t P o r t > >
0040020 P o r t . s o c k e t , t a b
0040040 l e [ 0 ; 0 ] ) t h e
0040060 n \r r e s e t P o r t > >
0040100 P o r t . s o c k e t ^ 2 =
0040120 p s M i s c S e r v \r ] \r \r / /
0040140 - - - - - - - - - - - - - - - -
*
0040240 - - - - - - - - - - - - \r a n d
0040260 R e s e t T i m e C t x ( c t
0040300 x ) 376 001 \0 + 002 b e \r / / - - -
0040320 - - - - - - - - - - - - - - - -
*
0040420 - - - - - - - - - \r / / T h i
0040440 s c o n t e x t ' s s t a c
0040460 k i s a P B I . T h e
0040500 c o n t e x t d e s t r o y
0040520 s i t s e l f \r / / w h e n
0040540 d o n e b y r e m o v i n
0040560 g i t s e l f f r o m i t
0040600 s c t x Q a n d r e l e a
0040620 s i n g t h e P B I . \r [ \r
0040640 l e t r e s e t P o r t =
0040660 l v t s > > T S . s t a t s .
0040700 r e s e t P o r 376 001 \0 # 304 t \r l
0040720 e t s o c = v e c l e n
0040740 P u p S o c ; O p e n L e v e
0040760 l 1 S o c k e t ( s o c , 0 ,
0041000 0 ) \r l e t g o t T i m e
0041020 = f a l s e \r \r [ \r
0041040 l e t p b i = G e t P B
0041060 I ( s o c , t r u e ) ; i f
0041100 p b i n e 0 t h e n \r
0041120 [ \r S e t
0041140 P u p D P o r t ( p b i , r e
0041160 s e t P o r t ) \r p
0041200 b i > > P B I . a l l N e t s
0041220 = r e s e t P o r t > > P o r
0041240 t . h o s t e q 0 & r e
0041260 s e t P o r t > > P o r t . n e
0041300 t e q 0 \r 376 001 \0
0041320 Y " C o m p l e t e P u p ( p b
0041340 i , p t A l t o T i m e R e q
0041360 u e s t , p u p O v B y t e s
0041400 ) \r ] \r l e t
0041420 t i m e r = n i l ; S e
0041440 t T i m e r ( l v t i m e r ,
0041460 1 0 0 0 ) / / 1 0 s
0041500 e c o n d s \r [ \r
0041520 B l o c k ( ) r e p
0041540 e a t u n t i l T i m e r H a
0041560 s E x p i r e d ( l v t i m e
0041600 r ) % s o c > > P u p S o c
0041620 . i Q . h e a d n e 0 \r
0041640 p b i = D e q u e u
0041660 e ( l v s o c > > P u p S o c
0041700 . i Q ) ; i f p b i e q
0041720 0 376 001 \0 355 304 b r e a k \r
0041740 i f p b i > > P B I . p
0041760 u p . t y p e e q p t A l t
0042000 o T i m e R e p l y t h e n \r
0042020 [ \r
0042040 g o t T i m e = t r
0042060 u e \r M o v e
0042100 B l o c k ( l v t s > > T S .
0042120 a l t o C l k , l v p b i >
0042140 > P B I . p u p . b y t e s ,
0042160 2 ) \r M o v e
0042200 B l o c k ( r e s e t P o r t ,
0042220 l v p b i > > P B I . p u p
0042240 . s P o r t , l e n P o r t )
0042260 \r ] \r
0042300 R e l e a s e P B I ( p b i
0042320 ) \r 376 \0 272 \b k ] r
0042340 e p e a t u n t i l g o t T i
0042360 m e \r ] r e p e a t u n
0042400 t i l g o t T i m e \r \r C l o
0042420 s e L e v e l 1 S o c k e t ( s
0042440 o c ) \r t s > > T S . d o n t K
0042460 n o w T i m e = f a l s e \r
0042500 t s > > T S . r e s e t C t x
0042520 = 0 \r U n q u e u e ( m s > >
0042540 M S . c t x Q , c t x ) \r E n
0042560 q u e u e ( p b i T Q , c t x
0042600 - o f f s e t P B I . p u p /
0042620 1 6 ) \r ] \r 377 \0 \0 P u p T i m e
0042640 I n i t . b c p l \0 376 001 \0 X 006 /
0042660 / P u p T i m e I n i t . b c
0042700 p l \r \r / / L a s t m o d i
0042720 f i e d M a r c h 4 , 1 9
0042740 7 9 2 : 3 3 A M b y B
0042760 o g g s \r \r g e t " p u p 0 .
0043000 d e c l " \r g e t " p u p 1 .
0043020 d e c l " \r g e t " P u p T i
0043040 m e S e r v . d e c l " \r \r e x
0043060 t e r n a l \r [ \r / / o u t g
0043100 o i n g p r o c e d u r e s \r
0043120 C r e a t e T i m e S e r v ;
0043140 D e s t r o y T i m e S e r v \r
0043160 S e t T i m e C o r r e c t i o
0043200 n ; S e t T i m e Z o n e ;
0043220 S e t T i m e D S T \r \r / / i
0043240 n c o m i n g p r o c e d u 376
0043260 001 \0 302 222 r e s \r T i m e S e r v
0043300 ; T i m e S e r v C t x \r A l
0043320 l o c a t e ; F r e e ; Z e
0043340 r o ; M o v e B l o c k \r I n
0043360 i t i a l i z e C o n t e x t ;
0043400 E n q u e u e ; U n q u e u
0043420 e \r \r / / i n c o m i n g s
0043440 t a t i c s \r @ t s ; @ m s \r
0043460 ] \r \r c o m p i l e i f a l t
0043500 o t h e n [ e x t e r n a
0043520 l [ R e a d C a l e n d a r
0043540 ] ] \r \r / / - - - - - - - -
0043560 - - - - - - - - - - - - - - - -
*
0043660 - - - - 376 001 \0 020 V \r l e t C r
0043700 e a t e T i m e S e r v ( ) b
0043720 e \r / / - - - - - - - - - - - -
0043740 - - - - - - - - - - - - - - - -
*
0044040 \r [ \r t s = A l l o c a t e
0044060 ( m s > > M S . z o n e , l e
0044100 n T S ) ; Z e r o ( t s , l
0044120 e n T S ) \r t s > > T S . s t a
0044140 t s . v e r s i o n = t i m
0044160 e S t a t s V e r s i o n \r t s
0044200 > > T S . c t x = I n i t i
0044220 a l i z e C o n t e x t ( A l l
0044240 o c a t e ( m s > > M S . z o n
0044260 e , 2 0 ) , 2 376 001 \0 240 366 0 ,
0044300 T i m e S e r v C t x ) \r E n
0044320 q u e u e ( m s > > M S . c t x
0044340 Q , t s > > T S . c t x ) \r c
0044360 o m p i l e i f a l t o t h
0044400 e n [ R e a d C a l e n d a
0044420 r ( l v t s > > T S . a l t o
0044440 C l k ) ] \r t s > > T S . d o
0044460 n t K n o w T i m e = n o v
0044500 a / / a s s u m e A l t
0044520 o c a l e n d a r c l o c k
0044540 i s c o r r e c t \r ] \r \r /
0044560 / - - - - - - - - - - - - - - -
0044600 - - - - - - - - - - - - - - - -
*
0044660 - - - - - - - - - - - - - \r 376 001
0044700 \0 6 ~ a n d D e s t r o y T i
0044720 m e S e r v ( ) b e \r / / - -
0044740 - - - - - - - - - - - - - - - -
*
0045040 - - - - - - - - - - \r [ \r U n q
0045060 u e u e ( m s > > M S . c t x Q
0045100 , t s > > T S . c t x ) \r F r
0045120 e e ( m s > > M S . z o n e ,
0045140 t s > > T S . c t x ) \r F r e e
0045160 ( m s > > M S . z o n e , t s
0045200 ) \r ] \r \f \r / / - - - - - - - -
0045220 - - - - - - - - - - - - - - - -
*
0045300 - - - 376 001 \0 333 263 - - - - - - - -
0045320 - - - - - - - - - \r a n d S e
0045340 t T i m e C o r r e c t i o n (
0045360 s e c o n d s , s i g n ) b
0045400 e \r / / - - - - - - - - - - - -
0045420 - - - - - - - - - - - - - - - -
*
0045520 \r [ \r t s > > T S . d o C o r r
0045540 e c t = t r u e \r t s > > T
0045560 S . c o r r S i g n = s i g
0045600 n \r M o v e B l o c k ( l v t
0045620 s > > T S . c o r r e c t i o n
0045640 , t a b l e [ 1 ; 2 0 8
0045660 6 4 ] , 2 ) / / 8 6 4 0
0045700 0 s e c o n d 376 001 \0 \b 351 s / d
0045720 a y \r D i v i d e 3 2 x 1 6 ( l
0045740 v t s > > T S . c o r r e c t
0045760 i o n , s e c o n d s ) \r M o
0046000 v e B l o c k ( l v t s > > T
0046020 S . c o r r C o u n t , l v
0046040 t s > > T S . c o r r e c t i o
0046060 n , 2 ) \r t s > > T S . s t a
0046100 t s . c o r r e c t i o n =
0046120 s i g n ? s e c o n d s , -
0046140 s e c o n d s \r ] \r \r / / - - -
0046160 - - - - - - - - - - - - - - - -
*
0046260 - - - - - - - - - \r a n d S e
0046300 t T i m e Z o n e ( z o n 376 001 \0
0046320 k 304 e S , z o n e H , z o n
0046340 e M ) b e \r / / - - - - - - -
0046360 - - - - - - - - - - - - - - - -
*
0046460 - - - - - \r [ \r t s > > T S . t
0046500 i m e P a r a m s . z o n e S
0046520 = z o n e S \r t s > > T S . t
0046540 i m e P a r a m s . z o n e H
0046560 = z o n e H \r t s > > T S . t
0046600 i m e P a r a m s . z o n e M
0046620 = z o n e M \r ] \r \r / / - - -
0046640 - - - - - - - - - - - - - - - -
*
0046720 - - 376 001 \0 325 332 - - - - - - - - -
0046740 - - - - - - - - - - - - - - \r a
0046760 n d S e t T i m e D S T ( b e
0047000 g i n D S T , e n d D S T )
0047020 b e \r / / - - - - - - - - - - -
0047040 - - - - - - - - - - - - - - - -
*
0047140 - \r [ \r t s > > T S . t i m e P
0047160 a r a m s . b e g i n D S T =
0047200 b e g i n D S T \r t s > > T S
0047220 . t i m e P a r a m s . e n d D
0047240 S T = e n d D S T \r ] \r \r /
0047260 / - - - - - - - - - - - - - - -
0047300 - - - - - - - - - - - - - - - -
0047320 - - - - - - - 376 001 \0 033 Y - - - -
0047340 - - - - - - - - - - - - - - - -
*
0047400 - - \r a n d D i v i d e 3 2 x
0047420 1 6 ( l v N u m b e r , d i v
0047440 i s o r ) = v a l o f \r / /
0047460 - - - - - - - - - - - - - - - -
*
0047560 - - - - - - - - - - - - \r / /
0047600 U n s i g n e d d i v i d e
0047620 t h e 3 2 - b i t n u m b e
0047640 r a t @ l v N u m b e r , \r
0047660 / / p u t t h e q u o t i
0047700 e n t b a c k i n @ l v N
0047720 u m b e r , a n d r 376 001 \0 256
0047740 \v e t u r n t h e r e m a i
0047760 n d e r . \r [ \r m a n i f e s t
0050000 d i v = a l t o ? 6 1 0
0050020 2 1 b , 7 3 1 0 1 b \r \r ( t a
0050040 b l e \r [ \r # 5 5
0050060 0 0 1 \t / / s t a 3 1 2
0050100 \r # 1 5 5 0 0 0 \t / / m
0050120 o v 2 3 \t / / s a v e s
0050140 t a c k p o i n t e r \r
0050160 # 1 0 2 4 0 0 \t / / m k z e r
0050200 o 0 0 \r # 2 7 4 0 4
0050220 \t / / l d a 1 @ 4 3 \t /
0050240 / g e t h i g h d i v i d
0050260 e n d \r # 3 1 4 0 5 \t /
0050300 / l d a 2 5 3 \t / / g
0050320 e t d i v i s o r \r d i
0050340 v 376 001 \0 006 031 \t \t / / d i v \t \t
0050360 / / a c 0 _ r e m a i n d
0050400 e r , a c 1 _ q u o t i e
0050420 n t \r # 4 0 1 \t / /
0050440 n o p \r # 4 7 4 0 4
0050460 \t / / s t a 1 @ 4 3 \t /
0050500 / s t o r e h i g h q u o
0050520 t i e n t \r # 1 1 4 0 4
0050540 \t / / i s z 4 3 \r
0050560 # 2 7 4 0 4 \t / / l d a 1
0050600 @ 4 3 \t / / g e t l o w
0050620 d i v i d e n d \r d i v \t
0050640 \t / / d i v \t \t / / a c 0
0050660 _ r e m a i n d e r , a c 1
0050700 _ q u o t i e n t \r
0050720 # 4 0 1 \t / / n o p \r
0050740 # 4 7 376 \0 220 ` 340 4 0 4 \t /
0050760 / s t a 1 @ 4 3 \t / /
0051000 s t o r e l o w q u o t i e
0051020 n t \r # 1 7 1 0 0 0 \t / /
0051040 m o v 3 2 \t / / r e s t
0051060 o r e s t a c k p o i n t e
0051100 r \r # 3 5 0 0 1 \t / /
0051120 l d a 3 1 2 \r #
0051140 1 4 0 1 \t / / j m p 1 3 \r
0051160 ] ) ( ) \r ] \r \r 377 \0 \0 P u
0051200 p N a m e S e r v . d e c l \0 376
0051220 001 \0 362 > / / P u p N a m e S e
0051240 r v . d e c l \r \r / / L a s t
0051260 m o d i f i e d F e b r u a
0051300 r y 1 1 , 1 9 7 9 1 2 :
0051320 3 9 A M b y B o g g s \r \r
0051340 g e t " P u p M i s c S e r v
0051360 . d e c l " \r \r m a n i f e s t
0051400 \r [ \r l e n C a c h e Z o n e
0051420 = 2 5 6 \t / / r o o m f o
0051440 r ~ 2 0 c a c h e e n t r
0051460 i e s \r l e n S t r i n g =
0051500 1 2 8 \r \r n a m e S t a t s V e
0051520 r s i o n = 1 \r ] \r \r / / -
0051540 - - - - - - - - - - - - - - - -
*
0051620 - - - - 376 001 \0 023 7 - - - - - - -
0051640 - - - - - - - - - - - - - - - -
0051660 \r s t r u c t u r e Q u e u e
0051700 : \t / / S i n g l y l i n k
0051720 e d l i s t , u s u a l l y
0051740 m a i n t a i n e d F I F O
0051760 \r / / - - - - - - - - - - - - -
0052000 - - - - - - - - - - - - - - - -
*
0052060 - - - - - - - - - - - - - - - \r
0052100 [ \r h e a d w o r d \t \t / /
0052120 - > f i r s t t h i n g ;
0052140 0 i f q u e u e i s e m
0052160 p t y \r t a i l w o r d \t \t /
0052200 / - > l a s t t h i n g ;
0052220 u n d e f i n e 376 001 \0 023 ; d
0052240 i f q u e u e i s e m p t
0052260 y \r ] \r \r / / - - - - - - - - -
0052300 - - - - - - - - - - - - - - - -
*
0052400 - - - \r s t r u c t u r e S t
0052420 a t s : \r / / - - - - - - - - -
0052440 - - - - - - - - - - - - - - - -
*
0052540 - - - \r [ \r v e r s i o n w o
0052560 r d \t \t / / = n a m e S t a
0052600 t s V e r s i o n \r n a m e R e
0052620 q s w o r d 2 \t \t / / 376 001
0052640 \0 334 225 n u m b e r o f r e q
0052660 u e s t s f o r n a m e l
0052700 o o k u p \r d i r R e q s w o
0052720 r d 2 \t \t / / n u m b e r
0052740 o f r e q u e s t s t o s
0052760 e n d d i r e c t o r y \r c a
0053000 c h e H i t s w o r d 2 \t /
0053020 / n u m b e r o f n a m e
0053040 c a c h e h i t s \r c a c h
0053060 e M i s s e s w o r d 2 \t /
0053100 / n u m b e r o f n a m e
0053120 c a c h e m i s s e s \r ] \r
0053140 \r / / - - - - - - - - - - - - -
0053160 - - - - - - - - - - - - - - - -
*
0053240 - - - 376 001 \0 " 032 - - - - - - - -
0053260 - - - - \r s t r u c t u r e N
0053300 S : \t \t / / ' g l o b a l f
0053320 r a m e ' f o r N a m e S
0053340 e r v e r \r / / - - - - - - - -
0053360 - - - - - - - - - - - - - - - -
*
0053460 - - - - \r [ \r c t x w o r d \t
0053500 \t / / - > N a m e S e r v
0053520 C T X \r \r s t a t s @ S t a t
0053540 s \r \r l o c k s w o r d = \r
0053560 [ \r b l a n k b i
0053600 t 1 1 \r g l o b a l L o
0053620 c k s b i t 2 = \t / / m
0053640 o d u l e w i 376 001 \0 7 260 d e
0053660 l o c k s \r [ \r
0053700 i n t e r n a l L o c k
0053720 b i t \t / / s e t b y L
0053740 o c k N a m e S e r v ( ) \r
0053760 e x t e r n a l L o c k
0054000 b i t \t / / s e t b y p
0054020 t N a m e L o c k R e q u e s t
0054040 \r ] \r l o c a
0054060 l L o c k s b i t 3 = \r
0054100 [ \r l k u
0054120 p L o c k b i t \t / / a n
0054140 a m e l o o k u p i s i n
0054160 p r o g r e s s \r
0054200 r c v r L o c k b i t \t / /
0054220 a R e c e i v e N e t D i r
0054240 c t x i s a c t i v e 376 001 \0
0054260 \v S \r s e n d L o c
0054300 k b i t \t / / a S e n d N
0054320 e t D i r c t x i s a c t
0054340 i v e \r ] \r ]
0054360 \r \r b c s t T i m e r w o r d
0054400 \t \t / / c o u n t s 5 s e
0054420 c o n d i n t e r v a l s \r b
0054440 c s t I n t e r v a l w o r d
0054460 \t / / d i r b c s t i n t
0054500 e r v a l i n u n i t s o
0054520 f 5 s e c o n d s \r r e q P
0054540 o r t @ P o r t \t \t / / p o
0054560 r t o f g u y w h o w a
0054600 n t s o u r d i r e c t o r
0054620 y \r d o n e Q @ Q u e u e \t \t
0054640 / / t r a n s i e n t c t x
0054660 s 376 001 \0 l k q u e u e u p
0054700 h e r e f o r d e s t r u c
0054720 t i o n \r \r n a m e w o r d \t
0054740 \t / / - > f i l e n a m e
0054760 \r h e a d e r w o r d \t \t / /
0055000 - > H d r \r s t r e a m w
0055020 o r d \t \t / / - > s t r e a
0055040 m o n t o d i r e c t o r y
0055060 f i l e \r f p w o r d 5 \t
0055100 \t / / 5 = l F P ( g e t
0055120 t i n g A l t o F i l e S y s
0055140 . d b r e a k s t h e c o
0055160 m p i l e r ) \r \r c a c h e Z o
0055200 n e w o r d \t \t / / - > s
0055220 t o r a g e z o n e o f s
0055240 i z e l e n C a c h e Z o n e
0055260 \r c n e Q @ 376 001 \0 334 254 Q u e u
0055300 e \t \t / / q u e u e o f C
0055320 N E s \r \r f i r s t N a m e P o
0055340 s w o r d \t / / p o s i t i
0055360 o n o f f i r s t n a m e
0055400 \r l a s t N a m e P o s w o r
0055420 d \t / / p o s i t i o n o f
0055440 l a s t n a m e \r \r f r e e
0055460 A d d r Q @ Q u e u e \t / /
0055500 t e m p o r a r y q u e u e s
0055520 u s e d d u r i n g n a m
0055540 e l o o k u p \r o l d A d d r
0055560 Q @ Q u e u e \r n e w A d d r
0055600 Q @ Q u e u e \r \r f i r s t P
0055620 B I w o r d \t \t / / - > p
0055640 b i u s e d a t e m p b
0055660 u f f e r \r s e c o n d 376 001 \0 315
0055700 4 P B I w o r d \t \t / / - >
0055720 p b i u s e d a t e m p
0055740 b u f f e r \r ] \r m a n i f e
0055760 s t \r [ \r l e n N S = s i z
0056000 e N S / 1 6 \r l k u p L o c k
0056020 = 4 \r r c v r L o c k =
0056040 2 \r s e n d L o c k = 1 \r ]
0056060 \r \r / / - - - - - - - - - - - -
0056100 - - - - - - - - - - - - - - - -
*
0056200 \r s t r u c t u r e N C T X :
0056220 \t \t / / N a m e C o n t e x
0056240 t \r / / - - - - - - - - - - - -
0056260 - - - - - - - - - - - - - - - -
0056300 - 376 001 \0 037 020 - - - - - - - - - -
0056320 - - - - - - - - - - - - - - - -
*
0056360 - - - - - \r [ \r b l a n k w o
0056400 r d 3 \r l o c k M a s k w o
0056420 r d \t \t / / u s e d t o s
0056440 e t a n d c l e a r b i t
0056460 s i n N S . l o c a l L o c
0056500 k s \r ] \r m a n i f e s t N C
0056520 T X e x t r a = s i z e N
0056540 C T X / 1 6 - 3 \r \f \r / / -
0056560 - - - - - - - - - - - - - - - -
*
0056660 - - - - - - - - - - - \r s t r u
0056700 c t u r e 376 001 \0 V + H d r : \t
0056720 \t / / N e t w o r k d i r e
0056740 c t o r y h e a d e r \r / / -
0056760 - - - - - - - - - - - - - - - -
*
0057060 - - - - - - - - - - - \r [ \r n u
0057100 m N a m e s w o r d \r f i r s
0057120 t N a m e w o r d \r n u m A d
0057140 d r s w o r d \r f i r s t A d
0057160 d r w o r d \r s i z e E n t r
0057200 y S p a c e w o r d \r f i r s
0057220 t E n t r y w o r d \r v e r s
0057240 i o n w o r d \t \t / / v e r
0057260 s i o n n u m b e r \r ] \r m a
0057300 n i f e s t l e n H 376 001 \0 i e
0057320 d r = s i z e H d r / 1 6
0057340 \r \r / / - - - - - - - - - - - -
0057360 - - - - - - - - - - - - - - - -
*
0057460 \r s t r u c t u r e A t t r :
0057500 \t \t / / N e t w o r k d i r
0057520 e c t o r y a t t r i b u t e
0057540 b l o c k \r / / - - - - - - -
0057560 - - - - - - - - - - - - - - - -
*
0057660 - - - - - \r [ \r n a m e w o r
0057700 d \t \t / / - > s t r i n g \r
0057720 376 001 \0 5 002 v a l u e w o r d \t
0057740 \t / / - > s t r i n g \r ] \r
0057760 \r / / - - - - - - - - - - - - -
0060000 - - - - - - - - - - - - - - - -
*
0060060 - - - - - - - - - - - - - - - \r
0060100 s t r u c t u r e E n t r y :
0060120 \t / / N e t w o r k d i r e
0060140 c t o r y e n t r y b l o c
0060160 k \r / / - - - - - - - - - - - -
0060200 - - - - - - - - - - - - - - - -
*
0060300 \r [ \r n a m e L i s t H d r w
0060320 o r d \r a 376 001 \0 307 z d d r L i s
0060340 t H d r w o r d \r n u m A t t
0060360 r s w o r d \r a t t r ^ 1 , 1
0060400 @ A t t r \r ] \r m a n i f e s
0060420 t a d d r O f f s e t = o
0060440 f f s e t E n t r y . a d d r
0060460 L i s t H d r / 1 6 \r \r / / - -
0060500 - - - - - - - - - - - - - - - -
*
0060600 - - - - - - - - - - \r s t r u c
0060620 t u r e A d d r : \t \t / / N
0060640 e t w o r k d i r e c t o r y
0060660 a d d r e s s b l o c k \r /
0060700 / - - - - - - - - - - - - - - -
0060720 - - - - - - - - - - 376 001 \0 324 270 -
0060740 - - - - - - - - - - - - - - - -
*
0061020 - - \r [ \r l i n k w o r d \r e
0061040 n t r y w o r d \r p o r t @
0061060 P o r t \r n u m A t t r s w o
0061100 r d \r a t t r ^ 1 , 1 @ A t t
0061120 r \r ] \r / / a s s u m e n o
0061140 a t t r i b u t e s \r m a n i f
0061160 e s t l e n A d d r = o f
0061200 f s e t A d d r . n u m A t t
0061220 r s / 1 6 \r \r / / - - - - - - -
0061240 - - - - - - - - - - - - - - - -
*
0061320 - - - - - - - - - - - - - - - 376
0061340 001 \0 316 325 - - - - - - \r s t r u c
0061360 t u r e N a m e : \t \t / / N
0061400 e t w o r k d i r e c t o r y
0061420 n a m e b l o c k \r / / - -
0061440 - - - - - - - - - - - - - - - -
*
0061540 - - - - - - - - - - \r [ \r l i n
0061560 k w o r d \r e n t r y w o r
0061600 d \r s t r i n g @ S t r i n g
0061620 \r ] \r m a n i f e s t l e n N
0061640 a m e H e a d e r = o f f s
0061660 e t N a m e . s t r i n g / 1
0061700 6 \r \r / / - - - - - - - - - - -
0061720 - - - - - - - - - - - - - - - -
0061740 - - - - 376 001 \0 020 + - - - - - - -
0061760 - - - - - - - - - - - - - - - -
*
0062020 - - - - - - \r s t r u c t u r e
0062040 C N E : \t \t / / C a c h e
0062060 N a m e E n t r y \r / / - - -
0062100 - - - - - - - - - - - - - - - -
*
0062200 - - - - - - - - - \r [ \r l i n k
0062220 w o r d \t \t / / - > n e x
0062240 t n a m e i n c a c h e \r
0062260 c a e w o r d \t \t / / - >
0062300 c a c h e a d d r e s s e n
0062320 t r y \r s t r i n g @ S t r i
0062340 n g \t \t / / t h 376 001 \0 362 365 e
0062360 n a m e s t r i n g i t s e
0062400 l f \r ] \r m a n i f e s t l e
0062420 n C N E H e a d e r = o f f
0062440 s e t C N E . s t r i n g / 1
0062460 6 \r \r / / - - - - - - - - - - -
0062500 - - - - - - - - - - - - - - - -
*
0062600 - \r s t r u c t u r e C A E :
0062620 \t \t / / C a c h e A d d r e
0062640 s s E n t r y \r / / - - - - -
0062660 - - - - - - - - - - - - - - - -
*
0062740 - - - - - - - - - - - - - - 376 \0
0062760 c 024 D - - - - - - - - - \r [ \r l
0063000 i n k w o r d \t \t / / - >
0063020 n e x t a d d r e s s f o r
0063040 s a m e n a m e \r p o r t
0063060 @ P o r t \r ] \r m a n i f e s t
0063100 l e n C A E = s i z e C
0063120 A E / 1 6 \r 377 \0 \0 P u p N a m e
0063140 S e r v . b c p l \0 376 001 \0 037 237 /
0063160 / P u p N a m e S e r v . b c
0063200 p l - N a m e l o o k u p
0063220 s e r v e r \r / / S e e a
0063240 l s o P u p N a m e C o r e .
0063260 b c p l , P u p N a m e I n i
0063300 t . b c p l P u p N a m e S e
0063320 r v . d e c l \r \r / / L a s t
0063340 m o d i f i e d M a r c h
0063360 1 9 , 1 9 8 0 1 2 : 2 6
0063400 A M b y B o g g s \r \r g e t
0063420 " P u p 0 . d e c l " \r g e t
0063440 " P u p 1 . d e c l " \r g e t
0063460 " P u p N a m e S e r v . d e
0063500 c l " \r g e t " P u p S e r v
0063520 E f t p . d e c l " \r \r e x t e
0063540 r n a l \r [ \r / / o u t g o 376
0063560 001 \0 ; 373 i n g p r o c e d u r
0063600 e s \r N a m e S e r v ; N a m
0063620 e S e r v C t x \r \r / / i n c
0063640 o m i n g p r o c e d u r e s
0063660 \r N a m e L o o k u p ; L o c
0063700 k N a m e S e r v ; U n l o c
0063720 k N a m e S e r v \r M o v e B l
0063740 o c k ; Z e r o ; U s c ;
0063760 D o u b l e I n c r e m e n t \r
0064000 E n q u e u e ; D e q u e u e
0064020 ; U n q u e u e ; A l l o c
0064040 a t e ; F r e e ; B l o c k
0064060 \r I n i t i a l i z e C o n t e
0064100 x t ; D i s m i s s ; S e t
0064120 T i m e r ; T i m e r H a s E
0064140 x p i r e d \r O p e n L e v e l
0064160 1 S o c 376 001 \0 272 r k e t ; C l
0064200 o s e L e v e l 1 S o c k e t ;
0064220 G e t P B I ; R e l e a s e
0064240 P B I \r C o m p l e t e P u p ;
0064260 E x c h a n g e P o r t s ;
0064300 P u p S e r v S e n d ; P u p
0064320 S e r v R e c e i v e \r \r / /
0064340 o u t g o i n g s t a t i c s
0064360 \r @ n s \r \r / / i n c o m i n
0064400 g s t a t i c s \r l e n P u p
0064420 ; C t x R u n n i n g ; @ m
0064440 s \r ] \r \r s t a t i c @ n s \r
0064460 \r / / N a m e S e r v C t x
0064500 i s t h e m a i n p r o c
0064520 e s s f o r t h i s m o d
0064540 u l e . \r / / I t r u n s
0064560 f o r e v e r 376 001 \0 0 027 a n
0064600 d d o e s t h e f o l l o
0064620 w i n g t h i n g s : \r / /
0064640 P r o b e s f o r n e w
0064660 e r d i r e c t o r i e s . \r
0064700 / / D e s t r o y s t r
0064720 a n s i e n t p r o c e s s e
0064740 s w h e n t h e y a r e
0064760 d o n e . \r / / T h e r e a
0065000 r e t w o t y p e s o f
0065020 t r a n s i e n t p r o c e s
0065040 s e s : \r / / R e c e i v e
0065060 r s p r o b e f o r n e w
0065100 e r d i r e c t o r y v e r
0065120 s i o n s a n d r e c e i v
0065140 e t h e m . \r / / S e n d
0065160 e r s s e n d t h e d 376 001
0065200 \0 2 003 i r e c t o r y t o o
0065220 t h e r n a m e s e r v e r
0065240 s . \r / / T h e r e a r e
0065260 t w o m o d u l e - w i d e
0065300 l o c k s : \r / / I n t e r
0065320 n a l L o c k i s s e t b
0065340 y L o c k N a m e S e r v ( )
0065360 w h i c h a l s o c l o s
0065400 e s t h e f i l e \r / /
0065420 a n d p r e v e n t s f u
0065440 r t h e r r e f e r e n c e s
0065460 t o i t f i r s t w a i
0065500 t i n g f o r a n y \r / /
0065520 p r e s e n t a c t i v i
0065540 t y t o c e a s e . \r / /
0065560 E x t e r n a l L o c k i s
0065600 s e 376 001 \0 024 267 t f r o m G
0065620 a t e C o n t r o l a n d p
0065640 r e v e n t s a n y f u r t
0065660 h e r s e r v e r \r / /
0065700 a c t i v i t y ( n o l o o
0065720 k u p s a r e d o n e , n
0065740 o d i r e c t o r i e s a r
0065760 e s e n t o r r e c e i v
0066000 e d \r / / e t c . ) , b
0066020 u t t h e s t a t e o f
0066040 t h e f i l e i s n ' t a
0066060 l t e r e d . \r / / N a m e S
0066100 e r v i s l o g i c a l l y
0066120 p a r t o f t h e m i s
0066140 c e l l a n e o u s s e r v i
0066160 c e s p r o c e s s , \r / /
0066200 h a n d l i n 376 001 \0 255 377 g t
0066220 h e N a m e L o o k u p P
0066240 r o t o c o l p a c k e t t
0066260 y p e s . \r \f \r / / - - - - - -
0066300 - - - - - - - - - - - - - - - -
*
0066400 - - - - - - \r l e t N a m e S
0066420 e r v ( p b i ) b e \r / / - -
0066440 - - - - - - - - - - - - - - - -
*
0066540 - - - - - - - - - - \r [ \r E x c
0066560 h a n g e P o r t s ( p b i ) \r
0066600 s w i t c h o n p b i > 376 001 \0
0066620 \t 230 > P B I . p u p . t y p e
0066640 i n t o \r [ \r c a s
0066660 e p t N e t D i r L o o k u p
0066700 : \r [ \r
0066720 i f n s > > N S . g l o b a l
0066740 L o c k s e q 0 t h e n \r
0066760 [ N a m e L
0067000 o o k u p ( p b i ) ; r e t u
0067020 r n ] \r e n d c a
0067040 s e \r ] \r c a
0067060 s e p t N e t D i r V e r s i
0067100 o n : \r [ \r
0067120 i f n s > > N S . g l o b
0067140 a l L o c k s e q 0 t h e
0067160 n \r s w i t c
0067200 h o n U s c ( p b i > > P B I
0067220 . p 376 001 \0 I 236 u p . w o r d s ^
0067240 1 , n s > > N S . h e a d e r
0067260 > > H d r . v e r s i o n ) i
0067300 n t o \r
0067320 [ \r c a
0067340 s e - 1 : / / t e l l h
0067360 i m w e h a v e a l a t
0067400 e r v e r s i o n \r
0067420 [ \r
0067440 p b i > >
0067460 P B I . p u p . w o r d s ^ 1
0067500 = n s > > N S . h e a d e r >
0067520 > H d r . v e r s i o n \r
0067540 C o m p
0067560 l e t e P u p ( p b i , p t N
0067600 e t D i r V e r s i o n , p u
0067620 p O v B y t e 376 001 \0 350 s + 2 )
0067640 \r
0067660 r e t u r n \r
0067700 ] \r
0067720 c a s e 1 : / / h
0067740 e c l a i m s t o h a v e
0067760 a l a t e r v e r s i o n
0070000 \r
0070020 [ C r e a t e N a m e C t x (
0070040 R e c e i v e N e t D i r , r
0070060 c v r L o c k ) ; e n d c a s
0070100 e ] \r
0070120 c a s e 0 : / / o u r v
0070140 e r s i o n s a r e t h e
0070160 s a m e \r
0070200 e n d c a s e \r
0070220 ] \r 376 001 \0 Y
0070240 345 e n d c a s e \r
0070260 ] \r c a s e p t S e n d
0070300 N e t D i r : \r [ \r
0070320 i f n s > > N S .
0070340 g l o b a l L o c k s e q 0
0070360 t h e n \r [
0070400 \r M o v e B l
0070420 o c k ( l v n s > > N S . r e
0070440 q P o r t , l v p b i > > P
0070460 B I . p u p . w o r d s ^ 1 ,
0070500 l e n P o r t ) \r
0070520 C r e a t e N a m e C t x (
0070540 S e n d N e t D i r , s e n d
0070560 L o c k ) \r ]
0070600 \r e n d c a s e \r
0070620 ] \r c a s e p
0070640 t 376 001 \0 D 003 N e t D i r S t a t
0070660 s R e q u e s t : \r
0070700 [ \r M o v e B l o c
0070720 k ( l v p b i > > P B I . p u
0070740 p . w o r d s , l v n s > >
0070760 N S . s t a t s , s i z e S
0071000 t a t s / 1 6 ) \r C
0071020 o m p l e t e P u p ( p b i ,
0071040 p t N e t D i r S t a t s R e p
0071060 l y , p u p O v B y t e s + s
0071100 i z e S t a t s / 8 ) \r
0071120 r e t u r n \r
0071140 ] \r c a s e p t N e t D
0071160 i r L o c k R e q u e s t : \r
0071200 [ \r i f
0071220 A u t h e n t i c a t e ( p b i
0071240 ) t h e n 376 001 \0 225 345 \r
0071260 [ \r
0071300 n s > > N S . e x t e r n a l L
0071320 o c k = t r u e \r
0071340 C o m p l e t e P u p (
0071360 p b i , p t N e t D i r L o c
0071400 k R e p l y , p u p O v B y t
0071420 e s ) \r r e t
0071440 u r n \r ] \r
0071460 e n d c a s e \r
0071500 ] \r c a s e p t N
0071520 e t D i r U n l o c k R e q u e
0071540 s t : \r [ \r
0071560 i f A u t h e n t i c a t
0071600 e ( p b i ) t h e n \r
0071620 [ \r
0071640 n s > > N S . b c s t 376 001 \0 235 261
0071660 T i m e r = 0 \r
0071700 n s > > N S . e x t e r n
0071720 a l L o c k = f a l s e \r
0071740 C o m p l e t e
0071760 P u p ( p b i , p t N e t D i
0072000 r U n l o c k R e p l y , p u
0072020 p O v B y t e s ) \r
0072040 r e t u r n \r
0072060 ] \r e n d c a
0072100 s e \r ] \r ] \r
0072120 R e l e a s e P B I ( p b i ) \r
0072140 ] \r \r / / - - - - - - - - - - -
0072160 - - - - - - - - - - - - - - - -
*
0072260 376 001 \0 261 265 - \r a n d A u t h e
0072300 n t i c a t e ( p b i ) = p
0072320 b i > > P B I . p u p . i d ^ 1
0072340 e q 2 7 1 8 2 \r / / - - - -
0072360 - - - - - - - - - - - - - - - -
*
0072460 - - - - - - - - \r \f \r / / - - -
0072500 - - - - - - - - - - - - - - - -
*
0072600 - - - - - - - - - \r a n d N a
0072620 m e S e r v C t x ( c t x ) b
0072640 e / / a p r o c e s s \r /
0072660 / - - - - 376 001 \0 ^ 206 - - - - - -
0072700 - - - - - - - - - - - - - - - -
*
0073000 - - \r [ \r D i s m i s s ( 5 0 0
0073020 ) \t / / 5 s e c o n d s \r \r
0073040 / / d e s t r o y a n y c
0073060 o n t e x t s w h i c h a r
0073100 e d o n e \r c o m p i l e t e
0073120 s t n o v a \r i f s o \r
0073140 [ \r w h
0073160 i l e n s > > N S . d o n e Q
0073200 . h e a d n e 0 d o \r
0073220 R e l e a s e P B
0073240 I ( D e q u e u e ( l v n s >
0073260 > N S . d o n e Q ) 376 001 \0 361 [ -
0073300 o f f s e t P B I . p u p / 1
0073320 6 ) \r ] \r i f
0073340 n o t \r [ \r
0073360 w h i l e n s > > N S . d
0073400 o n e Q . h e a d n e 0 d
0073420 o \r F r e e (
0073440 m s > > M S . z o n e , D e q
0073460 u e u e ( l v n s > > N S . d
0073500 o n e Q ) ) \r ] \r \r
0073520 / / o n l y g a r b a g e
0073540 c o l l e c t t r a n s i e n
0073560 t p r o c e s s e s i f g
0073600 l o b a l l o c k i s s e
0073620 t \r i f n s > > N S . g l o b
0073640 a l L o c k s n e 0 l o o
0073660 p \r \r i f n s > > N S . b c 376
0073700 001 \0 T 024 s t T i m e r g r 0
0073720 t h e n \r n s > > N S .
0073740 b c s t T i m e r = n s > >
0073760 N S . b c s t T i m e r - 1 \r
0074000 i f n s > > N S . b c s t T i
0074020 m e r e q 0 t h e n \r
0074040 C r e a t e N a m e C t x ( R
0074060 e c e i v e N e t D i r , r c
0074100 v r L o c k ) \r \r ] r e p e a
0074120 t \r \f \r / / - - - - - - - - - -
0074140 - - - - - - - - - - - - - - - -
*
0074240 - - \r a n d C r e a t e N a m
0074260 e C t x ( p r o c , l o c k M
0074300 a s k ) 376 001 \0 \n 352 b e \r / / -
0074320 - - - - - - - - - - - - - - - -
*
0074420 - - - - - - - - - - - \r [ \r i f
0074440 n s > > N S . g l o b a l L o
0074460 c k s n e 0 % ( n s > >
0074500 N S . l o c a l L o c k s &
0074520 l o c k M a s k ) n e 0 r
0074540 e t u r n \r n s > > N S . l o c
0074560 a l L o c k s = n s > > N S
0074600 . l o c a l L o c k s % l o
0074620 c k M a s k \r \r l e t c t x
0074640 = a l t o ? A l l o c a t e
0074660 ( m s > > M S . z o n e , 1 2
0074700 0 0 , t r u e ) 376 001 \0 333 J ,
0074720 v a l o f \r [ / / n o
0074740 v a c a s e \r l e t p
0074760 b i = G e t P B I ( m s > >
0075000 M S . s o c , t r u e ) \r
0075020 r e s u l t i s p b i e q
0075040 0 ? 0 , l v p b i > > P
0075060 B I . p u p \r ] \r t e s t
0075100 c t x n e 0 \r i f s
0075120 o \r [ \r
0075140 I n i t i a l i z e C o n t e x
0075160 t ( c t x , ( a l t o ? 1 2
0075200 0 0 , l e n P u p ) , p r o
0075220 c , N C T X e x t r a ) \r
0075240 c t x > > N C T X . l o
0075260 c k M a s k = l o c k M a s
0075300 k \r E n q u e u 376 001
0075320 \0 017 306 e ( m s > > M S . c t x Q
0075340 , c t x ) \r ] \r
0075360 i f n o t n s > > N S . l
0075400 o c a l L o c k s = n s > >
0075420 N S . l o c a l L o c k s &
0075440 n o t l o c k M a s k \r ] \r \r
0075460 / / - - - - - - - - - - - - - -
0075500 - - - - - - - - - - - - - - - -
*
0075560 - - - - - - - - - - - - - - \r a
0075600 n d D e s t r o y N a m e C t
0075620 x ( c t x ) b e \r / / - - - -
0075640 - - - - - - - - - - - - - - - -
*
0075720 - - - 376 001 \0 004 ; - - - - - - - -
0075740 - - - - - - - - - - - - - \r / /
0075760 T h i s d o e s n ' t a c
0076000 t u a l l y d e s t r o y i
0076020 t . I t r e l e a s e s
0076040 c t x ' s l o c k s \r / /
0076060 a n d q u e u e s i t f o
0076100 r d e s t r u c t i o n b y
0076120 N a m e C t x . \r [ \r U n q u
0076140 e u e ( m s > > M S . c t x Q ,
0076160 c t x ) \r E n q u e u e ( l v
0076200 n s > > N S . d o n e Q , c
0076220 t x ) \r n s > > N S . l o c a l
0076240 L o c k s = n s > > N S . l
0076260 o c a l L o c k s & n o t
0076300 c t x > > N C T X . l o c k M a
0076320 s k \r ] \r \r / / 376 001 \0 225 x - - -
0076340 - - - - - - - - - - - - - - - -
*
0076440 - - - - - - - - - \r a n d S e
0076460 n d N e t D i r ( c t x ) b e
0076500 \t / / a c o n t e x t \r / /
0076520 - - - - - - - - - - - - - - - -
*
0076620 - - - - - - - - - - - - \r [ \r l
0076640 e t e f t p = v e c l e
0076660 n E F T P ; Z e r o ( e f t p
0076700 , l e n E F T P ) \r e f t p >
0076720 > E F T P . f r n P o r t 376 001 \0
0076740 ; 321 = l v n s > > N S . r
0076760 e q P o r t \r e f t p > > E F T
0077000 P . f p = l v n s > > N S
0077020 . f p \r e f t p > > E F T P . r
0077040 e a l N a m e = n s > > N S
0077060 . n a m e \r e f t p > > E F T P
0077100 . t i m e O u t 1 = 1 0 0 0
0077120 \r e f t p > > E F T P . t i m e
0077140 O u t 2 = 1 0 0 0 \r i f P
0077160 u p S e r v S e n d ( e f t p )
0077200 t h e n D o u b l e I n c r
0077220 e m e n t ( l v n s > > N S .
0077240 s t a t s . d i r R e q s ) \r D
0077260 e s t r o y N a m e C t x ( c t
0077300 x ) \r / / r e t u r n i n g
0077320 f r o m a c o n t e x t d
0077340 o e 376 001 \0 365 022 s a n i m p l
0077360 i c i t B l o c k ( ) \r ] \r \f
0077400 \r / / - - - - - - - - - - - - -
0077420 - - - - - - - - - - - - - - - -
*
0077500 - - - - - - - - - - - - - - - \r
0077520 a n d R e c e i v e N e t D i
0077540 r ( c t x ) b e \t / / a c
0077560 o n t e x t \r / / - - - - - - -
0077600 - - - - - - - - - - - - - - - -
*
0077700 - - - - - \r / / p r o b e a l
0077720 l n a m e s e r v e r s o
0077740 n a l l d 376 001 \0 8 260 i r e c
0077760 t l y c o n n e c t e d n e
0100000 t w o r k s \r / / I f w e l
0100020 o c a t e a n e w e r v e
0100040 r s i o n , g e t i t . \r [
0100060 \r n s > > N S . b c s t T i m e
0100100 r = n s > > N S . b c s t I
0100120 n t e r v a l \r \r l e t s o c
0100140 = v e c l e n P u p S o c
0100160 ; O p e n L e v e l 1 S o c k
0100200 e t ( s o c , 0 , t a b l e
0100220 [ 0 ; 0 ; p s M i s c S
0100240 e r v ] ) \r l e t p b i =
0100260 G e t P B I ( s o c ) \r p b i
0100300 > > P B I . a l l N e t s =
0100320 t r u e / / b r o a d c a
0100340 s t r e q u e s t o 376 001 \0 w
0100360 R n a l l n e t s \r p b i >
0100400 > P B I . p u p . w o r d s ^ 1
0100420 = n s > > N S . h e a d e r
0100440 > > H d r . v e r s i o n \r C o
0100460 m p l e t e P u p ( p b i , p
0100500 t N e t D i r V e r s i o n ,
0100520 p u p O v B y t e s + 2 ) \r \r l
0100540 e t b e s t S o F a r = n
0100560 s > > N S . h e a d e r > > H d
0100600 r . v e r s i o n \r l e t t i
0100620 m e r = n i l ; S e t T i
0100640 m e r ( l v t i m e r , 1 0
0100660 0 0 ) / / 1 0 s e c o n d
0100700 s \r l e t f r n P o r t =
0100720 v e c l e n P o r t \r
0100740 [ \r B l o c k ( ) \r
0100760 u 376 001 \0 # 240 n t i l s o c > >
0101000 P u p S o c . i Q . h e a d e
0101020 q 0 d o \r [ \r
0101040 l e t p b i = D
0101060 e q u e u e ( l v s o c > > P
0101100 u p S o c . i Q ) \r
0101120 i f p b i > > P B I . p u p .
0101140 t y p e e q p t N e t D i r
0101160 V e r s i o n & \r
0101200 p b i > > P B I . p u p . w o
0101220 r d s ^ 1 - b e s t S o F a
0101240 r g r 0 t h e n \r
0101260 [ \r
0101300 b e s t S o F a r = p b i >
0101320 > P B I . p u p . w o r d s ^ 1
0101340 \r M o v e B l
0101360 o c k ( f r 376 001 \0 211 - n P o r t
0101400 , l v p b i > > P B I . p u
0101420 p . s P o r t , l e n P o r t
0101440 ) \r ] \r
0101460 R e l e a s e P B I ( p b
0101500 i ) \r ] \r ]
0101520 r e p e a t u n t i l T i m e
0101540 r H a s E x p i r e d ( l v t
0101560 i m e r ) \r \r C l o s e L e v e
0101600 l 1 S o c k e t ( s o c ) \r \r i
0101620 f b e s t S o F a r g r n
0101640 s > > N S . h e a d e r > > H d
0101660 r . v e r s i o n t h e n \r
0101700 [ \r l e t e f t p
0101720 = v e c l e n E F T P ; Z
0101740 e r o ( e f t p , l e n E F T
0101760 P ) \r e f t p > 376 001 \0 364 \r
0102000 > E F T P . f r n P o r t =
0102020 f r n P o r t \r e f t p >
0102040 > E F T P . f p = l v n s
0102060 > > N S . f p \r e f t p >
0102100 > E F T P . r e a l N a m e =
0102120 n s > > N S . n a m e \r
0102140 e f t p > > E F T P . t e m p N
0102160 a m e = " T E M P . N S " \r
0102200 e f t p > > E F T P . t i
0102220 m e O u t 1 = 1 0 0 \r
0102240 e f t p > > E F T P . t i m e O
0102260 u t 2 = 3 0 0 0 / / 2 0
0102300 s e c o n d s \r e f t p
0102320 > > E F T P . p r o c 1 = N
0102340 S S t a r t P r o c \r e f
0102360 t p > > E F T P . p r o c 2 =
0102400 376 001 \0 353 346 N S E n d P r o c \r
0102420 i f P u p S e r v R e c
0102440 e i v e ( e f t p ) t h e n
0102460 U n l o c k N a m e S e r v ( )
0102500 \r l o o p / / n o t i
0102520 f y w o r l d \r ] \r \r D
0102540 e s t r o y N a m e C t x ( c t
0102560 x ) \r B l o c k ( ) \r ] r e p
0102600 e a t \r \r / / - - - - - - - - -
0102620 - - - - - - - - - - - - - - - -
*
0102720 - - - \r a n d N S S t a r t P
0102740 r o c ( s o c ) b e \r / / - -
0102760 - - - - - - - - - - - - - - - -
0103000 - - - - - 376 001 \0 W N - - - - - -
0103020 - - - - - - - - - - - - - - - -
*
0103060 - - - - - - - - - - - - - - - \r
0103100 [ \r l e t p b i = G e t P
0103120 B I ( s o c , t r u e ) ; i
0103140 f p b i n e 0 t h e n \r
0103160 [ \r M o v e B l o c
0103200 k ( l v p b i > > P B I . p u
0103220 p . w o r d s , l v s o c >
0103240 > P u p S o c . l c l P o r t ,
0103260 l e n P o r t ) \r C o m
0103300 p l e t e P u p ( p b i , p t
0103320 S e n d N e t D i r , p u p O
0103340 v B y t e s + l e n P o r t
0103360 * 2 ) \r ] \r ] \r \r / / - -
0103400 - - - - - - - - - - 376 001 \0 & T -
0103420 - - - - - - - - - - - - - - - -
*
0103500 - - - - - - - - - - - - - - - \r
0103520 a n d N S E n d P r o c ( s t
0103540 r e a m ) b e L o c k N a m
0103560 e S e r v ( C t x R u n n i n g
0103600 > > N C T X . l o c k M a s k )
0103620 \r / / - - - - - - - - - - - - -
0103640 - - - - - - - - - - - - - - - -
*
0103720 - - - - - - - - - - - - - - - \r
0103740 / / T h i s i s o n l y
0103760 c a l l e d i f t h e d i
0104000 r e c t o r y w a s c o r 376
0104020 \0 243 \0 274 r e c t l y r e c e i
0104040 v e d . \r / / S e r v E F T P
0104060 R e c e i v e i s a b o u t
0104100 t o d e l e t e t h e o
0104120 l d v e r s i o n a n d r
0104140 e n a m e t h e n e w \r / /
0104160 v e r s i o n . I t w
0104200 i l l t h e n r e t u r n
0104220 t r u e a n d R e c e i v e
0104240 N e t D i r w i l l u n l o
0104260 c k i t . \r 377 \0 \0 P u p N a m
0104300 e C o r e . b c p l \0 376 001 \0 + 321
0104320 / / P u p N a m e C o r e . b
0104340 c p l - N a m e l o o k u
0104360 p s e r v e r \r / / S e e
0104400 a l s o P u p N a m e S e r v
0104420 . b c p l , P u p N a m e I n
0104440 i t . b c p l P u p N a m e S
0104460 e r v . d e c l \r \r / / L a s
0104500 t m o d i f i e d M a r c h
0104520 5 , 1 9 7 9 1 1 : 4 8
0104540 P M b y B o g g s \r \r g e t
0104560 " P u p 0 . d e c l " \r g e t
0104600 " P u p 1 . d e c l " \r g e t
0104620 " S t r e a m s . d " \r g e t
0104640 " P u p N a m e S e r v . d e
0104660 c l " \r \r e x t e r n a l \r [ \r
0104700 / / o u t g o i n g p r o c
0104720 376 001 \0 266 224 e d u r e s \r L o c k
0104740 N a m e S e r v ; U n l o c k
0104760 N a m e S e r v ; N a m e L o
0105000 o k u p \r \r / / i n c o m i n
0105020 g p r o c e d u r e s \r O p e
0105040 n F i l e ; C l o s e s ; G
0105060 e t s ; S e t F i l e P o s ;
0105100 R e a d B l o c k \r M o v e B
0105120 l o c k ; Z e r o ; M u l t
0105140 E q ; M i n ; M a x ; D o
0105160 u b l e I n c r e m e n t \r E n
0105200 q u e u e ; D e q u e u e ;
0105220 U n q u e u e ; I n s e r t A
0105240 f t e r \r I n i t i a l i z e Z
0105260 o n e ; A l l o c a t e ; F
0105300 r e e ; C a l l S w a t ; B
0105320 l o c k \r 376 001 \0 b + D i s m i s
0105340 s ; G e t P B I ; R e l e a
0105360 s e P B I \r C o m p l e t e P u
0105400 p ; A p p e n d S t r i n g T
0105420 o P u p \r \r / / i n c o m i n
0105440 g s t a t i c s \r l e n P u p
0105460 ; @ m s ; @ n s \r ] \r \f \r /
0105500 / - - - - - - - - - - - - - - -
0105520 - - - - - - - - - - - - - - - -
*
0105600 - - - - - - - - - - - - - \r l e
0105620 t L o c k N a m e S e r v ( l
0105640 o c k M a s k ; n u m a r g s
0105660 n a ) b e \r / / - - - - - -
0105700 - - - - - - - - - - - - - - - -
0105720 - - - - - - - - - - 376 001 \0 J 212 -
0105740 - - - - - - - - - - - - - - - -
*
0106000 - - - - - - - - - - - \r / / S
0106020 h u t d o w n t h e n a m
0106040 e s e r v e r , r e t u r n
0106060 i n g w h e n e v e r y t h
0106100 i n g h a s s t o p p e d .
0106120 \r / / S p e c i a l c a s e
0106140 : i f a n a r u m e n t
0106160 i s p a s s e d , t h e n
0106200 o n e o f t h e t r a n s
0106220 i e n t \r / / p r o c e s s
0106240 e s w a n t s t o l o c k
0106260 i t , s o i g n o r e h
0106300 i s l o c a l l o c k . \r [
0106320 \r n s > > N S . i n t e r n a 376
0106340 001 \0 215 R l L o c k = t r u e
0106360 \r B l o c k ( ) r e p e a t u
0106400 n t i l n s > > N S . l o c a
0106420 l L o c k s e q ( n a e q
0106440 1 ? l o c k M a s k , 0 )
0106460 \r i f n s > > N S . s t r e a
0106500 m n e 0 t h e n \r [
0106520 \r C l o s e s ( n s > > N
0106540 S . s t r e a m ) \r n s >
0106560 > N S . s t r e a m = 0 \r
0106600 ] \r ] \r \r / / - - - - - - -
0106620 - - - - - - - - - - - - - - - -
*
0106720 - - - - - \r a n d U n l o c k
0106740 N a m e 376 001 \0 261 265 S e r v ( )
0106760 b e \r / / - - - - - - - - - - -
0107000 - - - - - - - - - - - - - - - -
*
0107100 - \r [ \r n s > > N S . i n t e r
0107120 n a l L o c k = f a l s e \r
0107140 n s > > N S . n a m e = a l
0107160 t o ? " P u p - N e t w o r k
0107200 . d i r e c t o r y " , " P U
0107220 P N E T . D I R " \r \r / / O p
0107240 e n t h e d i r e c t o r y
0107260 f i l e a n d r e a d i
0107300 t s h e a d e r b l o c k \r
0107320 Z e r o ( l v n s > > N S . f
0107340 p , 5 ) \r n s > 376 001 \0 212 370 > N
0107360 S . s t r e a m = O p e n F
0107400 i l e ( n s > > N S . n a m e ,
0107420 k s T y p e R e a d O n l y ,
0107440 c h a r I t e m , \r 0 , l
0107460 v n s > > N S . f p ) \r i f
0107500 n s > > N S . s t r e a m e q
0107520 0 r e t u r n \r R e a d B l
0107540 o c k ( n s > > N S . s t r e a
0107560 m , n s > > N S . h e a d e r
0107600 , l e n H d r ) \r \r / / R e
0107620 a d t h e n a m e l o o k
0107640 u p t a b l e a n d s a v
0107660 e t h e p o s i t i o n s
0107700 o f t h e f i r s t \r / /
0107720 a n d l a s t n a m e b l
0107740 o c k s . U s e c a c 376 001
0107760 \0 316 235 h e Z o n e a s a t
0110000 e m p o r a r y b u f f e r .
0110020 \r S e t D i r P o s ( n s > > N
0110040 S . h e a d e r > > H d r . f i
0110060 r s t N a m e ) \r l e t l e f
0110100 t = n s > > N S . h e a d e
0110120 r > > H d r . n u m N a m e s \r
0110140 l e t c a c h e Z o n e =
0110160 n s > > N S . c a c h e Z o n e
0110200 \r l e t f i r s t N a m e P o
0110220 s = 3 2 7 6 7 \r l e t l a
0110240 s t N a m e P o s = 0 \r w h
0110260 i l e l e f t g r 0 d o
0110300 \r [ \r D i s m i s s
0110320 ( 1 ) \r R e a d B l o c k
0110340 ( n s > > N S . s t r e a m ,
0110360 c a c 376 001 \0 361 335 h e Z o n e ,
0110400 l e n C a c h e Z o n e ) \r
0110420 f o r i = 0 t o M i
0110440 n ( l e f t , l e n C a c h e
0110460 Z o n e ) - 1 d o \r
0110500 [ \r f i r s t N a
0110520 m e P o s = M i n ( f i r s
0110540 t N a m e P o s , c a c h e Z
0110560 o n e ! i ) \r l a s
0110600 t N a m e P o s = M a x ( l
0110620 a s t N a m e P o s , c a c h
0110640 e Z o n e ! i ) \r ]
0110660 \r l e f t = l e f t -
0110700 l e n C a c h e Z o n e \r
0110720 ] \r n s > > N S . f i r s t N a
0110740 m e P o s = f i r s t N a m
0110760 e P o s \r n s > 376 001 \0 240 A > N S
0111000 . l a s t N a m e P o s = l
0111020 a s t N a m e P o s \r \r / / I
0111040 n v a l i d a t e a n d r e
0111060 i n i t i a l i z e t h e c
0111100 a c h e \r n s > > N S . c n e Q
0111120 . h e a d = 0 \r I n i t i a
0111140 l i z e Z o n e ( n s > > N S .
0111160 c a c h e Z o n e , l e n C a
0111200 c h e Z o n e ) \r ] \r \f \r / / -
0111220 - - - - - - - - - - - - - - - -
*
0111320 - - - - - - - - - - - \r a n d
0111340 N a m e L o o k u p ( p b i )
0111360 b e \r / / - - - - - - - - 376 001 \0
0111400 336 3 - - - - - - - - - - - - - -
0111420 - - - - - - - - - - - - - - - -
*
0111500 - - - - - - \r [ \r i f n s > >
0111520 N S . s t r e a m e q 0 t
0111540 h e n [ R e l e a s e P B I
0111560 ( p b i ) ; r e t u r n ] \r
0111600 \r / / g e t s o m e P B I
0111620 s f o r b u f f e r s -
0111640 p u n t i f n o n e l e f
0111660 t \r n s > > N S . l k u p L o c
0111700 k = t r u e \r n s > > N S .
0111720 f i r s t P B I = G e t P B
0111740 I ( m s > > M S . s o c , t r
0111760 u e ) \r n s > > N S . s e c o n
0112000 d P 376 001 \0 377 217 B I = G e t P
0112020 B I ( m s > > M S . s o c , t
0112040 r u e ) \r i f n s > > N S . f
0112060 i r s t P B I e q 0 % n
0112100 s > > N S . s e c o n d P B I
0112120 e q 0 t h e n \r [ \r
0112140 R e l e a s e P B I ( p b i
0112160 ) \r i f n s > > N S . f
0112200 i r s t P B I n e 0 t h e
0112220 n R e l e a s e P B I ( n s >
0112240 > N S . f i r s t P B I ) \r
0112260 i f n s > > N S . s e c o n
0112300 d P B I n e 0 t h e n R
0112320 e l e a s e P B I ( n s > > N S
0112340 . s e c o n d P B I ) \r n
0112360 s > > N S . l k u p L o c k =
0112400 f a l s e \r 376 001 \0 364 225 r
0112420 e t u r n \r ] \r \r l e t
0112440 b u f f e r = l v n s > >
0112460 N S . f i r s t P B I > > P B I
0112500 . p u p \r D o u b l e I n c r e
0112520 m e n t ( l v n s > > N S . s
0112540 t a t s . n a m e R e q s ) \r \r
0112560 / / i n i t i a l i z e q u
0112600 e u e s \r n s > > N S . f r e e
0112620 A d d r Q . h e a d = 0 \r n
0112640 s > > N S . o l d A d d r Q . h
0112660 e a d = 0 \r n s > > N S . n
0112700 e w A d d r Q . h e a d = 0
0112720 \r l e t i = l e n S t r i
0112740 n g \r w h i l e i l s l e
0112760 n P u p - l e n A d d r d o \r
0113000 [ E n q u e u e 376 001 \0 355
0113020 $ ( l v n s > > N S . f r e e
0113040 A d d r Q , b u f f e r + i )
0113060 ; i = i + l e n A d d r
0113100 ] \r E n q u e u e ( l v n s >
0113120 > N S . o l d A d d r Q , G e
0113140 t I t e m ( ) ) / / i n i
0113160 t i a l i z e t o a s i n
0113200 g l e z e r o i t e m \r \r /
0113220 / P a r s e t h e n a m e
0113240 s t r i n g \r l e t l e n g
0113260 t h = p b i > > P B I . p u
0113300 p . l e n g t h - p u p O v B y
0113320 t e s \r i f l e n g t h l e
0113340 0 % l e n g t h g r 2
0113360 5 5 t h e n \r [ R e t
0113400 u r n E r r o r ( p b i , " I
0113420 l 376 001 \0 250 202 l e g a l n a m e
0113440 " ) ; r e t u r n ] \r \r l e
0113460 t b y t e P o s = 0 \r l e
0113500 t e n d O f D a t a = f a
0113520 l s e \r l e t p o r t = v
0113540 e c l e n P o r t \r u n t i l
0113560 e n d O f D a t a d o \r
0113600 [ \r / / C o l l e c t
0113620 t e x t u p t o n e x t
0113640 $ + o r e n d o f s t
0113660 r i n g \r b y t e P o s
0113700 = b y t e P o s + 1 / / s k
0113720 i p p r e v i o u s $ + \r
0113740 l e t b y t e C o u n t
0113760 = 0 \r l e t c h a r
0114000 = p b i > > P B I . p u p . b
0114020 y t e s ^ b 376 001 \0 \t \b y t e P o
0114040 s \r w h i l e c h a r
0114060 n e $ + d o \r [
0114100 \r i f c h a r n
0114120 e $ * s t h e n \r
0114140 [ \r b
0114160 y t e C o u n t = b y t e C
0114200 o u n t + 1 \r
0114220 i f c h a r g e $ a &
0114240 c h a r l e $ z t h e n
0114260 c h a r = c h a r - ( $ a -
0114300 $ A ) \r i f
0114320 c h a r l s # 4 0 % c h
0114340 a r g e # 1 7 7 t h e n \r
0114360 [ R e
0114400 t u r n E r r o r ( p b i , "
0114420 I l l e g a l c h a 376 001 \0 s 037
0114440 r a c t e r i n n a m e " )
0114460 ; r e t u r n ] \r
0114500 b u f f e r > > S t r i
0114520 n g . c h a r ^ b y t e C o u n
0114540 t = c h a r \r
0114560 ] \r i f b y t
0114600 e P o s g e l e n g t h t
0114620 h e n [ e n d O f D a t a
0114640 = t r u e ; b r e a k ] \r
0114660 b y t e P o s =
0114700 b y t e P o s + 1 ; c h a r
0114720 = p b i > > P B I . p u p . b
0114740 y t e s ^ b y t e P o s \r
0114760 ] \r b u f f e r > >
0115000 S t r i n g . l e n g t h =
0115020 b y t e C o u n t \r b u f
0115040 376 001 \0 p Y f e r > > S t r i n g
0115060 . c h a r ^ ( b y t e C o u n t
0115100 + 1 ) = 0 / / e n s u r
0115120 e l e f t o v e r b y t e
0115140 z e r o \r \r / / T r y
0115160 t o p a r s e a s a d d r
0115200 e s s c o n s t a n t \r
0115220 i f P a r s e A d d r e s s C
0115240 o n s t a n t ( b u f f e r ,
0115260 p o r t ) t h e n \r
0115300 [ C r o s s P o r t ( p o r
0115320 t ) ; R e s e t A d d r Q u e
0115340 u e s ( ) ; l o o p ] \r \f \r
0115360 / / N a m e L o o k u p ( c
0115400 o n t ' d ) \r \r / / N o
0115420 t a d d r e s s c o n s t a
0115440 n t . 376 001 \0 361 024 L o o k u p
0115460 n a m e i n c a c h e \r
0115500 l e t c n e = S e a r
0115520 c h N a m e C a c h e ( b u f f
0115540 e r ) \r i f c n e e q
0115560 0 t h e n \r [ \r
0115600 / / N o t i n
0115620 c a c h e , s e a r c h t h
0115640 e d i r e c t o r y o n t
0115660 h e d i s k \r l e
0115700 t n a m e = S e a r c h N
0115720 e t D i r ( b u f f e r ) \r \r
0115740 / / I n s e r t n
0115760 a m e i n t o c a c h e .
0116000 N o t e t h a t w e d o
0116020 t h i s w h e t h e r o r
0116040 n o t \r 376 001 \0 031 9
0116060 / / i t w a s f o u n d
0116100 o n t h e d i s k . T h
0116120 i s i s s o t h a t r e
0116140 t r a n s m i s s i o n s o f
0116160 \r / / a f a i l
0116200 i n g l o o k u p r e q u e
0116220 s t w i l l n o t r e s u
0116240 l t i n r e p e a t e d d
0116260 i s k s e a r c h e s . \r
0116300 c n e = I n s e r t
0116320 N a m e I n C a c h e ( b u f f
0116340 e r ) \r \r / / I f
0116360 t h e n a m e w a s a c
0116400 t u a l l y f o u n d , i n
0116420 s e r t t h e c o r r e s p
0116440 o n d i n g \r / / 376
0116460 001 \0 \f 224 a d d r e s s e n t
0116500 r i e s i n t o t h e c a
0116520 c h e a l s o . \r
0116540 i f n a m e n e 0 t h e
0116560 n \r [ \r
0116600 l e t a d d r P o
0116620 s = R e a d D i r ( n a m e
0116640 > > N a m e . e n t r y + a d d
0116660 r O f f s e t ) \r
0116700 w h i l e a d d r P o s
0116720 n e 0 d o \r
0116740 [ \r
0116760 S e t D i r P o s ( a d d r
0117000 P o s ) \r
0117020 l e t a d d r = v e c
0117040 l e n A d d r \r
0117060 376 001 \0 1 227 R e a d B l o
0117100 c k ( n s > > N S . s t r e a m
0117120 , a d d r , l e n A d d r )
0117140 \r I n s
0117160 e r t A d d r I n C a c h e ( c
0117200 n e , l v a d d r > > A d d
0117220 r . p o r t ) \r
0117240 a d d r P o s = a d
0117260 d r > > A d d r . l i n k \r
0117300 ] \r
0117320 ] \r ] \r \r
0117340 / / c n e n o w p o
0117360 i n t s t o c a c h e e n
0117400 t r y f o r m a t c h i n g
0117420 n a m e . \r l e t c a
0117440 e = c n e > > C N E . c a e
0117460 \r i f c a 376 001 \0 365 005 e
0117500 e q 0 t h e n \r
0117520 [ R e t u r n E r r o r ( p b
0117540 i , " N a m e n o t f o u
0117560 n d " ) ; r e t u r n ] \r \r
0117600 / / C o m p u t e i n
0117620 t e r s e c t i o n o f n e
0117640 w e n t r y w i t h p r e
0117660 c e d i n g t e r m s o f \r
0117700 / / t h e n a m e e
0117720 x p r e s s i o n . \r w h
0117740 i l e c a e n e 0 d o \r
0117760 [ \r C r
0120000 o s s P o r t ( l v c a e > >
0120020 C A E . p o r t ) \r
0120040 c a e = c a e > > C A E . l
0120060 i n k \r ] \r 376 001
0120100 \0 264 W R e s e t A d d r Q u e
0120120 u e s ( ) \r ] \r \r / / R
0120140 e a c h e d e n d o f r e
0120160 q u e s t s t r i n g . I
0120200 f q u e u e i s e m p t y
0120220 , t h e i n t e r s e c t i
0120240 o n \r / / o f t e r m s i
0120260 n t h e e x p r e s s i o n
0120300 w a s e m p t y . T h i
0120320 s i s a n e r r o r . \r i
0120340 f n s > > N S . o l d A d d r
0120360 Q . h e a d e q 0 t h e n
0120400 \r [ R e t u r n E r r o
0120420 r ( p b i , " I n c o n s i s
0120440 t e n t e x p r e s s i o n "
0120460 ) ; r e t u r n ] \r \r / /
0120500 C o n 376 001 \0 360 214 s t r u c t r
0120520 e p l y p a c k e t \r i =
0120540 1 \r [ \r l e t a d
0120560 d r = D e q u e u e ( l v
0120600 n s > > N S . o l d A d d r Q )
0120620 \r i f a d d r e q 0
0120640 b r e a k \r M o v e B l
0120660 o c k ( l v p b i > > P B I .
0120700 p u p . w o r d s ^ i , l v
0120720 a d d r > > A d d r . p o r t ,
0120740 l e n P o r t ) \r i =
0120760 i + l e n P o r t \r
0121000 ] r e p e a t \r C o m p l e t
0121020 e N a m e R e q ( p b i , p t
0121040 N e t D i r R e p l y , p u p
0121060 O v B y t e s + ( i - 1 ) * 2 )
0121100 \r ] \r \r / / - - 376 001 \0 025 311 - - -
0121120 - - - - - - - - - - - - - - - -
*
0121220 - - - - - - - \r a n d R e t u
0121240 r n E r r o r ( p b i , m e s
0121260 s a g e ) b e \r / / - - - - -
0121300 - - - - - - - - - - - - - - - -
*
0121400 - - - - - - - \r [ \r A p p e n d
0121420 S t r i n g T o P u p ( p b i ,
0121440 1 , m e s s a g e ) \r C o m
0121460 p l e t e N a m e R e q ( p b i
0121500 , p t N e t D i r E r r 376 001 \0
0121520 016 241 o r , p b i > > P B I . p
0121540 u p . l e n g t h ) \r ] \r \r / /
0121560 - - - - - - - - - - - - - - - -
*
0121660 - - - - - - - - - - - - \r a n d
0121700 C o m p l e t e N a m e R e q
0121720 ( p b i , t y p e , l e n g
0121740 t h ) b e \r / / - - - - - - -
0121760 - - - - - - - - - - - - - - - -
*
0122060 - - - - - \r [ \r C o m p l e t e
0122100 P u p ( p b i , t y p e , l
0122120 e n 376 001 \0 274 272 g t h ) \r R e l e
0122140 a s e P B I ( n s > > N S . f i
0122160 r s t P B I ) \r R e l e a s e P
0122200 B I ( n s > > N S . s e c o n d
0122220 P B I ) \r n s > > N S . l k u p
0122240 L o c k = f a l s e \r ] \r \f
0122260 \r / / - - - - - - - - - - - - -
0122300 - - - - - - - - - - - - - - - -
*
0122360 - - - - - - - - - - - - - \r a n
0122400 d S e a r c h N a m e C a c h
0122420 e ( n a m e ) = v a l o f \r
0122440 / / - - - - - - - - - - - - - -
0122460 - - - - - - - - - - - - - - - -
*
0122520 - - - - - - - 376 001 \0 S * - - - -
0122540 - - - - - - - - - - - - - - - -
0122560 - \r / / S e a r c h e s f o
0122600 r n a m e i n c a c h e .
0122620 I f f o u n d , r e t u
0122640 r n s p o i n t e r t o c
0122660 a c h e n a m e \r / / e n t
0122700 r y ( c n e ) . I f n o
0122720 t f o u n d , r e t u r n s
0122740 z e r o . \r / / A s s u m e
0122760 s n a m e h a s b e e n
0123000 c o n v e r t e d t o u p p
0123020 e r - c a s e a n d t h a t
0123040 t h e l e f t o v e r b y
0123060 t e \r / / a t t h e e n d
0123100 , i f p r e s e n t , i s
0123120 z e r o . \r [ \r l e t 376 001 \0 212
0123140 t l e n N a m e = n a m e
0123160 > > S t r i n g . l e n g t h
0123200 r s h i f t 1 + 1 \r l e t
0123220 c n e = n s > > N S . c n e
0123240 Q . h e a d ; w h i l e c n
0123260 e n e 0 d o \r [ \r
0123300 i f M u l t E q ( n a m e
0123320 , l v c n e > > C N E . s t
0123340 r i n g , l e n N a m e ) t
0123360 h e n \r [ / /
0123400 F o u n d , i n s e r t c a
0123420 c h e e n t r y a t f r o
0123440 n t o f q u e u e \r
0123460 U n q u e u e ( l v n s >
0123500 > N S . c n e Q , c n e ) \r
0123520 I n s e r t A f t e r
0123540 ( 376 001 \0 215 315 l v n s > > N S .
0123560 c n e Q , l v n s > > N S .
0123600 c n e Q , c n e ) \r
0123620 D o u b l e I n c r e m e n t
0123640 ( l v n s > > N S . s t a t s
0123660 . c a c h e H i t s ) \r
0123700 r e s u l t i s c n e \r
0123720 ] \r c n e =
0123740 c n e > > C N E . l i n k \r
0123760 ] \r D o u b l e I n c r e m e
0124000 n t ( l v n s > > N S . s t a
0124020 t s . c a c h e M i s s e s ) \r
0124040 r e s u l t i s 0 \r ] \r \r / /
0124060 - - - - - - - - - - - - - - - -
*
0124140 - - - - - - 376 001 \0 270 216 - - - - -
0124160 - - - - - - - - - - - - - - - \r
0124200 a n d I n s e r t N a m e I n
0124220 C a c h e ( n a m e ) = v a
0124240 l o f \r / / - - - - - - - - - -
0124260 - - - - - - - - - - - - - - - -
*
0124360 \r / / C r e a t e s a n d
0124400 r e t u r n s a c a c h e
0124420 n a m e e n t r y ( c n e )
0124440 c o n t a i n i n g t h e
0124460 s u p p l i e d \r / / n a m e
0124500 s t r i n g , w h i c h i
0124520 s a s s u m e d t o b e
0124540 a l l u p p e r - c 376 001 \0 d O
0124560 a s e w i t h t h e l e f
0124600 t o v e r \r / / b y t e z e
0124620 r o e d . \r [ \r l e t l e n N
0124640 a m e = n a m e > > S t r i
0124660 n g . l e n g t h r s h i f t
0124700 1 + 1 \r l e t c n e =
0124720 C a c h e A l l o c a t e ( l e
0124740 n C N E H e a d e r + l e n N a
0124760 m e ) \r c n e > > C N E . c a e
0125000 = 0 \r M o v e B l o c k ( l
0125020 v c n e > > C N E . s t r i n
0125040 g , n a m e , l e n N a m e
0125060 ) \r I n s e r t A f t e r ( l v
0125100 n s > > N S . c n e Q , l v
0125120 n s > > N S . c n e Q , c n
0125140 e ) / / I n s e r t a t
0125160 376 001 \0 347 314 f r o n t o f q
0125200 u e u e \r r e s u l t i s c n
0125220 e \r ] \r \r / / - - - - - - - - -
0125240 - - - - - - - - - - - - - - - -
*
0125340 - \r a n d I n s e r t A d d r
0125360 I n C a c h e ( c n e , p o r
0125400 t ) b e \r / / - - - - - - - -
0125420 - - - - - - - - - - - - - - - -
*
0125520 - - \r / / C r e a t e s a
0125540 c a c h e a d d r e s s e n
0125560 t r y ( 376 001 \0 G 316 c a e ) a
0125600 n d a p p e n d s i t t o
0125620 t h e q u e u e r o o t e
0125640 d \r / / i n t h e s u p p
0125660 l i e d c n e . \r [ \r l e t
0125700 c a e = C a c h e A l l o c
0125720 a t e ( l e n C A E ) \r M o v e
0125740 B l o c k ( l v c a e > > C A
0125760 E . p o r t , p o r t , l e
0126000 n P o r t ) \r c a e > > C A E .
0126020 l i n k = 0 \r l e t l v C
0126040 A E = l v c n e > > C N E
0126060 . c a e \r w h i l e l v C A E
0126100 ! 0 n e 0 d o l v C A E
0126120 = l v C A E ! 0 \r l v C A E
0126140 ! 0 = c a e \r ] \r \f \r / / -
0126160 - - - - - - - - - - 376 001 \0 312 025 -
0126200 - - - - - - - - - - - - - - - -
*
0126260 - - - - - - - - - - - - - - \r a
0126300 n d C a c h e A l l o c a t e
0126320 ( n W o r d s ) = v a l o f
0126340 \r / / - - - - - - - - - - - - -
0126360 - - - - - - - - - - - - - - - -
*
0126440 - - - - - - - - - - - - - \r / /
0126460 A l l o c a t e s n W o r d
0126500 s w o r d s i n t h e c
0126520 a c h e a n d r e t u r n s
0126540 p o i n t e r \r [ \r / / A t
0126560 t e m p t t o a l l o c a 376
0126600 001 \0 330 177 t e t h e b l o c k
0126620 \r l e t b l o c k = A l l
0126640 o c a t e ( n s > > N S . c a c
0126660 h e Z o n e , n W o r d s ,
0126700 t r u e ) \r i f b l o c k n
0126720 e 0 r e s u l t i s b l o
0126740 c k \r \r / / F a i l e d .
0126760 F l u s h o n e c a c h e
0127000 e n t r y f r o m t a i l
0127020 o f q u e u e a n d t r y
0127040 a g a i n \r i f n s > > N S
0127060 . c n e Q . h e a d e q 0
0127100 t h e n C a l l S w a t ( " [
0127120 C a c h e A l l o c a t e ] c
0127140 n e Q e m p t y " ) \r l e t
0127160 c n e = n s > > N S . c n e
0127200 Q . t a 376 001 \0 341 343 i l \r U n q u
0127220 e u e ( l v n s > > N S . c n
0127240 e Q , c n e ) \r l e t c a e
0127260 = c n e > > C N E . c a e \r
0127300 F r e e ( n s > > N S . c a c h
0127320 e Z o n e , c n e ) \r w h i l
0127340 e c a e n e 0 d o \r
0127360 [ \r l e t t = c a
0127400 e > > C A E . l i n k \r F
0127420 r e e ( n s > > N S . c a c h e
0127440 Z o n e , c a e ) \r c a
0127460 e = t \r ] \r B l o c k
0127500 ( ) \r ] r e p e a t \r \r / / -
0127520 - - - - - - - - - - - - - - - -
*
0127600 - - - - - - - - - 376 001 \0 { 023 - -
0127620 - - - - - - - - - - - - - - - -
0127640 \r a n d P a r s e A d d r e s
0127660 s C o n s t a n t ( s t r i n g
0127700 , p o r t ) = v a l o f \r
0127720 / / - - - - - - - - - - - - - -
0127740 - - - - - - - - - - - - - - - -
*
0130020 - - - - - - - - - - - - - - \r /
0130040 / P a r s e s a n e t w o
0130060 r k a d d r e s s c o n s t
0130100 a n t o f t h e f o r m \r
0130120 / / \t n e t # h o s t # s o c k
0130140 e t a n d s e t s p o r t
0130160 a c c o r d i n g l y \r / /
0130200 R e t u r n s : \r / / \t t r 376 001
0130220 \0 x 365 u e i f s t r i n g
0130240 h a d c o r r e c t s y n t
0130260 a x \r / / \t f a l s e o t h e
0130300 r w i s e \r [ \r Z e r o ( p o r
0130320 t , l e n P o r t ) \r l e t
0130340 c , l e n = 0 , s t r i
0130360 n g > > S t r i n g . l e n g t
0130400 h \r [ \r l e t c h
0130420 a r = n i l \r [
0130440 \r c = c + 1 ;
0130460 i f c g r l e n r e s u
0130500 l t i s t r u e \r
0130520 c h a r = s t r i n g > > S
0130540 t r i n g . c h a r ^ c \r
0130560 ] r e p e a t w h i l e
0130600 c h a r e q $ * s \r
0130620 w h i 376 001 \0 f < l e c h a r
0130640 g e $ 0 & c h a r l e
0130660 $ 7 d o \r [ \r
0130700 i f ( p o r t > > P o
0130720 r t . s o c k e t ^ 1 & # 1
0130740 6 0 0 0 0 ) n e 0 r e s u
0130760 l t i s f a l s e \r
0131000 p o r t > > P o r t . s o c k
0131020 e t ^ 1 = p o r t > > P o r
0131040 t . s o c k e t ^ 1 l s h i f
0131060 t 3 + \r p o r
0131100 t > > P o r t . s o c k e t ^ 2
0131120 r s h i f t 1 3 \r
0131140 p o r t > > P o r t . s o c k
0131160 e t ^ 2 = p o r t > > P o r
0131200 t . s o c k e t ^ 2 l s h i f
0131220 t 3 + c h 376 001 \0 306 @ a r -
0131240 $ 0 \r c = c + 1
0131260 ; i f c g r l e n r e
0131300 s u l t i s t r u e \r
0131320 c h a r = s t r i n g >
0131340 > S t r i n g . c h a r ^ c \r
0131360 ] \r w h i l e
0131400 c h a r e q $ * s d o \r
0131420 [ \r c =
0131440 c + 1 ; i f c g r l e
0131460 n r e s u l t i s t r u e \r
0131500 c h a r = s t r
0131520 i n g > > S t r i n g . c h a r
0131540 ^ c \r ] \r i f
0131560 c h a r n e $ # % p o
0131600 r t > > P o r t . n e t n e
0131620 0 % p o r t > > P o r 376 001 \0
0131640 P 342 t . s o c k e t ^ 1 n e
0131660 0 \r % ( p o r t > > P
0131700 o r t . s o c k e t ^ 2 & #
0131720 1 7 7 4 0 0 ) n e 0 r e s
0131740 u l t i s f a l s e \r p
0131760 o r t > > P o r t . n e t =
0132000 p o r t > > P o r t . h o s t \r
0132020 p o r t > > P o r t . h o
0132040 s t = p o r t > > P o r t .
0132060 s o c k e t ^ 2 \r p o r t
0132100 > > P o r t . s o c k e t ^ 1
0132120 = 0 ; p o r t > > P o r t .
0132140 s o c k e t ^ 2 = 0 \r
0132160 ] r e p e a t \r ] \r \f \r / / -
0132200 - - - - - - - - - - - - - - - -
*
0132240 - - 376 001 \0 m ~ - - - - - - - - -
0132260 - - - - - - - - - - - - - - - -
*
0132320 \r a n d C r o s s P o r t ( p
0132340 o r t ) b e \r / / - - - - - -
0132360 - - - - - - - - - - - - - - - -
*
0132460 - - - - - - \r [ \r l e t t =
0132500 n s > > N S . o l d A d d r Q
0132520 . h e a d ; w h i l e t n
0132540 e 0 d o \r [ \r u
0132560 n l e s s ( t > > A d d r . p
0132600 o r t . n e t n e 0 & p
0132620 o r t > > P o r t . n e t n e
0132640 0 & \r 376 001 \0 265 z
0132660 t > > A d d r . p o r
0132700 t . n e t n e p o r t > > P
0132720 o r t . n e t ) % \r
0132740 ( t > > A d d r . p
0132760 o r t . h o s t n e 0 &
0133000 p o r t > > P o r t . h o s t
0133020 n e 0 & \r
0133040 t > > A d d r . p o r t . h
0133060 o s t n e p o r t > > P o r
0133100 t . h o s t ) % \r
0133120 ( ( t > > A d d r . p
0133140 o r t . s o c k e t ^ 1 n e
0133160 0 % t > > A d d r . p o r t
0133200 . s o c k e t ^ 2 n e 0 )
0133220 & \r ( p o
0133240 r t > > P o r t . s o c 376 001 \0 `
0133260 345 k e t ^ 1 n e 0 % p o
0133300 r t > > P o r t . s o c k e t ^
0133320 2 n e 0 ) & \r
0133340 ( t > > A d d r . p o
0133360 r t . s o c k e t ^ 1 n e p
0133400 o r t > > P o r t . s o c k e t
0133420 ^ 1 % \r
0133440 t > > A d d r . p o r t . s o
0133460 c k e t ^ 2 n e p o r t > >
0133500 P o r t . s o c k e t ^ 2 ) )
0133520 d o \r [ \r
0133540 l e t i = G e t I t e m
0133560 ( ) \r i > > A d d r
0133600 . p o r t . n e t = t > > A
0133620 d d r . p o r t . n e t % p
0133640 o r t > > P o r t . n e t \r
0133660 376 001 \0 334 031 i > > A d d r
0133700 . p o r t . h o s t = t > >
0133720 A d d r . p o r t . h o s t %
0133740 p o r t > > P o r t . h o s t
0133760 \r i > > A d d r . p
0134000 o r t . s o c k e t ^ 1 = t
0134020 > > A d d r . p o r t . s o c k
0134040 e t ^ 1 % p o r t > > P o r
0134060 t . s o c k e t ^ 1 \r
0134100 i > > A d d r . p o r t . s o
0134120 c k e t ^ 2 = t > > A d d r
0134140 . p o r t . s o c k e t ^ 2 %
0134160 p o r t > > P o r t . s o c k
0134200 e t ^ 2 \r E n q u e
0134220 u e ( l v n s > > N S . n e w
0134240 A d d r Q , i ) \r
0134260 ] \r t 376 001 \0 323 025 = t >
0134300 > A d d r . l i n k \r ] \r
0134320 ] \r \r / / - - - - - - - - - - -
0134340 - - - - - - - - - - - - - - - -
*
0134440 - \r a n d R e s e t A d d r Q
0134460 u e u e s ( ) b e \r / / - - -
0134500 - - - - - - - - - - - - - - - -
*
0134600 - - - - - - - - - \r / / f l u s
0134620 h o l d A d d r Q a n d t
0134640 h e n m o v e c o n t e n t
0134660 s o f n e w A d d 376 001 \0 \f \r
0134700 r Q t o o l d A d d r Q \r [
0134720 \r w h i l e n s > > N S . o l
0134740 d A d d r Q . h e a d n e 0
0134760 d o \r E n q u e u e ( l
0135000 v n s > > N S . f r e e A d d
0135020 r Q , D e q u e u e ( l v n
0135040 s > > N S . o l d A d d r Q ) )
0135060 \r M o v e B l o c k ( l v n s
0135100 > > N S . o l d A d d r Q , l
0135120 v n s > > N S . n e w A d d r
0135140 Q , 2 ) \r n s > > N S . n e w
0135160 A d d r Q . h e a d = 0 \r ]
0135200 \r \r / / - - - - - - - - - - - -
0135220 - - - - - - - - - - - - - - - -
*
0135300 376 001 \0 277 266 - - - - - - - - - - -
0135320 - - - - - \r a n d G e t I t e
0135340 m ( ) = v a l o f \r / / - -
0135360 - - - - - - - - - - - - - - - -
*
0135460 - - - - - - - - - - \r [ \r l e t
0135500 i t e m = D e q u e u e (
0135520 l v n s > > N S . f r e e A d
0135540 d r Q ) \r i f i t e m e q
0135560 0 t h e n C a l l S w a t (
0135600 " [ G e t I t e m ] f r e e A
0135620 d d r Q e x h a u s t e d " )
0135640 \r Z e r o ( i t e m , l e n A
0135660 d d r ) \r r e s u l t i s i t
0135700 e m \r ] 376 001 \0 273 342 \r \r / / - -
0135720 - - - - - - - - - - - - - - - -
*
0136020 - - - - - - - - - - \r a n d R
0136040 e a d D i r ( p o s ; n u m a
0136060 r g s n a ) = v a l o f \r
0136100 / / - - - - - - - - - - - - - -
0136120 - - - - - - - - - - - - - - - -
*
0136200 - - - - - - - - - - - - - - \r [
0136220 \r i f n a n e 0 t h e n
0136240 S e t D i r P o s ( p o s ) \r
0136260 l e t t e m p = G e t s (
0136300 n s > > N S . s t r 376 001 \0 [ 375 e
0136320 a m ) \r r e s u l t i s t e m
0136340 p l s h i f t 8 + G e t
0136360 s ( n s > > N S . s t r e a m )
0136400 \r ] \r \r / / - - - - - - - - - -
0136420 - - - - - - - - - - - - - - - -
*
0136520 - - \r a n d S e t D i r P o s
0136540 ( p o s ) b e \r / / - - - - -
0136560 - - - - - - - - - - - - - - - -
*
0136660 - - - - - - - \r [ \r D i s m i s
0136700 s ( 1 ) \r / / a s s u m e 376
0136720 001 \0 243 S f i l e l e n g t h
0136740 i s l e s s t h a n 2 ^ 1
0136760 5 - 1 \r S e t F i l e P o s ( n
0137000 s > > N S . s t r e a m , 0 ,
0137020 p o s l s h i f t 1 ) \r ]
0137040 \r \f \r / / - - - - - - - - - - -
0137060 - - - - - - - - - - - - - - - -
*
0137140 - - - - - - - - - - - - - - - \r
0137160 a n d S e a r c h N e t D i r
0137200 ( k e y ) = v a l o f \r / /
0137220 - - - - - - - - - - - - - - - -
*
0137320 - - - - 376 001 \0 330 ` - - - - - - \r
0137340 / / S e a r c h e s t h e
0137360 n e t w o r k d i r e c t o r
0137400 y o n d i s k f o r t h
0137420 e s p e c i f i e d n a m e
0137440 . \r / / I f f o u n d , r
0137460 e t u r n s a p o i n t e r
0137500 t o a c o p y o f t h
0137520 e m a t c h i n g N a m e
0137540 b l o c k . \r / / I f n o t
0137560 f o u n d , r e t u r n s
0137600 z e r o . \r / / S u p p l i e
0137620 d k e y m u s t b e a l
0137640 l u p p e r - c a s e . \r [ \r
0137660 l e t n a m e B l o c k =
0137700 l v n s > > N S . s e c o n d
0137720 P B I > > P B I . 376 001 \0 240 222 p u
0137740 p \r \r / / P o s i t i o n t
0137760 o f i r s t n a m e b l o
0140000 c k i n f i l e \r l e t p
0140020 o s = n s > > N S . f i r s
0140040 t N a m e P o s / / c u r r
0140060 e n t d i s p l a c e m e n t
0140100 i n f i l e \r S e t D i r P
0140120 o s ( p o s ) \r l e t d i s p
0140140 = l e n P u p / / c u r
0140160 r e n t d i s p l a c e m e n
0140200 t i n n a m e B l o c k \r \r
0140220 / / D o l i n e a r s e a
0140240 r c h t h r o u g h n a m e
0140260 b l o c k p o r t i o n o
0140300 f f i l e \r w h i l e p o s
0140320 l e n s > > N S . l a s 376 001
0140340 \0 331 } t N a m e P o s d o \r
0140360 [ \r i f d i s p g
0140400 e l e n P u p - l e n S t r i
0140420 n g t h e n \r [ \r
0140440 / / N e e d t o
0140460 r e f i l l n a m e B l o c
0140500 k . \r / / M o v e
0140520 r e m a i n i n g s t u f f
0140540 d o w n t o b e g i n n i
0140560 n g o f b l o c k , t h e
0140600 n f i l l \r / /
0140620 r e m a i n d e r o f b l o
0140640 c k f r o m f i l e . \r
0140660 D i s m i s s ( 1 ) \r
0140700 l e t r e m a i n d
0140720 e r = l e n P u p - d i s p
0140740 \r 376 001 \0 300 031 i f r
0140760 e m a i n d e r g r 0 t h
0141000 e n \r M o v e
0141020 B l o c k ( n a m e B l o c k ,
0141040 n a m e B l o c k + d i s p ,
0141060 r e m a i n d e r ) \r
0141100 R e a d B l o c k ( n s > >
0141120 N S . s t r e a m , n a m e B
0141140 l o c k + r e m a i n d e r ,
0141160 d i s p ) \r d i s p
0141200 = 0 \r ] \r \r
0141220 / / G e t p o i n t e r
0141240 t o c u r r e n t n a m e
0141260 b l o c k a n d a d v a n c
0141300 e d i s p t o n e x t . \r
0141320 / / K n o w t h a t
0141340 n a m e b l o 376 001 \0 215 305 c k s
0141360 a r e c o n t i g u o u s
0141400 a n d a m u l t i p l e o
0141420 f 2 w o r d s l o n g . \r
0141440 l e t n a m e = n a
0141460 m e B l o c k + d i s p \r
0141500 l e t i n c = ( l e n
0141520