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