##// END OF EJS Templates
tests: followup on network related errors on Debian 9...
Boris Feld -
r41009:97484e1d default
parent child Browse files
Show More
@@ -1,556 +1,556 b''
1 #require no-reposimplestore no-chg
1 #require no-reposimplestore no-chg
2
2
3 Set up a server
3 Set up a server
4
4
5 $ hg init server
5 $ hg init server
6 $ cd server
6 $ cd server
7 $ cat >> .hg/hgrc << EOF
7 $ cat >> .hg/hgrc << EOF
8 > [extensions]
8 > [extensions]
9 > clonebundles =
9 > clonebundles =
10 > EOF
10 > EOF
11
11
12 $ touch foo
12 $ touch foo
13 $ hg -q commit -A -m 'add foo'
13 $ hg -q commit -A -m 'add foo'
14 $ touch bar
14 $ touch bar
15 $ hg -q commit -A -m 'add bar'
15 $ hg -q commit -A -m 'add bar'
16
16
17 $ hg serve -d -p $HGPORT --pid-file hg.pid --accesslog access.log
17 $ hg serve -d -p $HGPORT --pid-file hg.pid --accesslog access.log
18 $ cat hg.pid >> $DAEMON_PIDS
18 $ cat hg.pid >> $DAEMON_PIDS
19 $ cd ..
19 $ cd ..
20
20
21 Missing manifest should not result in server lookup
21 Missing manifest should not result in server lookup
22
22
23 $ hg --verbose clone -U http://localhost:$HGPORT no-manifest
23 $ hg --verbose clone -U http://localhost:$HGPORT no-manifest
24 requesting all changes
24 requesting all changes
25 adding changesets
25 adding changesets
26 adding manifests
26 adding manifests
27 adding file changes
27 adding file changes
28 added 2 changesets with 2 changes to 2 files
28 added 2 changesets with 2 changes to 2 files
29 new changesets 53245c60e682:aaff8d2ffbbf
29 new changesets 53245c60e682:aaff8d2ffbbf
30 (sent 3 HTTP requests and * bytes; received * bytes in responses) (glob)
30 (sent 3 HTTP requests and * bytes; received * bytes in responses) (glob)
31
31
32 $ cat server/access.log
32 $ cat server/access.log
33 * - - [*] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob)
33 * - - [*] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob)
34 $LOCALIP - - [$LOGDATE$] "GET /?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
34 $LOCALIP - - [$LOGDATE$] "GET /?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
35 $LOCALIP - - [$LOGDATE$] "GET /?cmd=getbundle HTTP/1.1" 200 - x-hgarg-1:bookmarks=1&$USUAL_BUNDLE_CAPS$&cg=1&common=0000000000000000000000000000000000000000&heads=aaff8d2ffbbf07a46dd1f05d8ae7877e3f56e2a2&listkeys=bookmarks&phases=1 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
35 $LOCALIP - - [$LOGDATE$] "GET /?cmd=getbundle HTTP/1.1" 200 - x-hgarg-1:bookmarks=1&$USUAL_BUNDLE_CAPS$&cg=1&common=0000000000000000000000000000000000000000&heads=aaff8d2ffbbf07a46dd1f05d8ae7877e3f56e2a2&listkeys=bookmarks&phases=1 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
36
36
37 Empty manifest file results in retrieval
37 Empty manifest file results in retrieval
38 (the extension only checks if the manifest file exists)
38 (the extension only checks if the manifest file exists)
39
39
40 $ touch server/.hg/clonebundles.manifest
40 $ touch server/.hg/clonebundles.manifest
41 $ hg --verbose clone -U http://localhost:$HGPORT empty-manifest
41 $ hg --verbose clone -U http://localhost:$HGPORT empty-manifest
42 no clone bundles available on remote; falling back to regular clone
42 no clone bundles available on remote; falling back to regular clone
43 requesting all changes
43 requesting all changes
44 adding changesets
44 adding changesets
45 adding manifests
45 adding manifests
46 adding file changes
46 adding file changes
47 added 2 changesets with 2 changes to 2 files
47 added 2 changesets with 2 changes to 2 files
48 new changesets 53245c60e682:aaff8d2ffbbf
48 new changesets 53245c60e682:aaff8d2ffbbf
49 (sent 4 HTTP requests and * bytes; received * bytes in responses) (glob)
49 (sent 4 HTTP requests and * bytes; received * bytes in responses) (glob)
50
50
51 Manifest file with invalid URL aborts
51 Manifest file with invalid URL aborts
52
52
53 $ echo 'http://does.not.exist/bundle.hg' > server/.hg/clonebundles.manifest
53 $ echo 'http://does.not.exist/bundle.hg' > server/.hg/clonebundles.manifest
54 $ hg clone http://localhost:$HGPORT 404-url
54 $ hg clone http://localhost:$HGPORT 404-url
55 applying clone bundle from http://does.not.exist/bundle.hg
55 applying clone bundle from http://does.not.exist/bundle.hg
56 error fetching bundle: (.* not known|(\[Errno -?\d+])? No address associated with hostname) (re) (no-windows !)
56 error fetching bundle: (.* not known|(\[Errno -?\d+])? No address associated with hostname) (re) (no-windows !)
57 error fetching bundle: [Errno 1100*] getaddrinfo failed (glob) (windows !)
57 error fetching bundle: [Errno 1100*] getaddrinfo failed (glob) (windows !)
58 abort: error applying bundle
58 abort: error applying bundle
59 (if this error persists, consider contacting the server operator or disable clone bundles via "--config ui.clonebundles=false")
59 (if this error persists, consider contacting the server operator or disable clone bundles via "--config ui.clonebundles=false")
60 [255]
60 [255]
61
61
62 Server is not running aborts
62 Server is not running aborts
63
63
64 $ echo "http://localhost:$HGPORT1/bundle.hg" > server/.hg/clonebundles.manifest
64 $ echo "http://localhost:$HGPORT1/bundle.hg" > server/.hg/clonebundles.manifest
65 $ hg clone http://localhost:$HGPORT server-not-runner
65 $ hg clone http://localhost:$HGPORT server-not-runner
66 applying clone bundle from http://localhost:$HGPORT1/bundle.hg
66 applying clone bundle from http://localhost:$HGPORT1/bundle.hg
67 error fetching bundle: (.* refused.*|Protocol not supported|(.* )?Cannot assign requested address) (re)
67 error fetching bundle: (.* refused.*|Protocol not supported|(.* )?\$EADDRNOTAVAIL\$) (re)
68 abort: error applying bundle
68 abort: error applying bundle
69 (if this error persists, consider contacting the server operator or disable clone bundles via "--config ui.clonebundles=false")
69 (if this error persists, consider contacting the server operator or disable clone bundles via "--config ui.clonebundles=false")
70 [255]
70 [255]
71
71
72 Server returns 404
72 Server returns 404
73
73
74 $ "$PYTHON" $TESTDIR/dumbhttp.py -p $HGPORT1 --pid http.pid
74 $ "$PYTHON" $TESTDIR/dumbhttp.py -p $HGPORT1 --pid http.pid
75 $ cat http.pid >> $DAEMON_PIDS
75 $ cat http.pid >> $DAEMON_PIDS
76 $ hg clone http://localhost:$HGPORT running-404
76 $ hg clone http://localhost:$HGPORT running-404
77 applying clone bundle from http://localhost:$HGPORT1/bundle.hg
77 applying clone bundle from http://localhost:$HGPORT1/bundle.hg
78 HTTP error fetching bundle: HTTP Error 404: File not found
78 HTTP error fetching bundle: HTTP Error 404: File not found
79 abort: error applying bundle
79 abort: error applying bundle
80 (if this error persists, consider contacting the server operator or disable clone bundles via "--config ui.clonebundles=false")
80 (if this error persists, consider contacting the server operator or disable clone bundles via "--config ui.clonebundles=false")
81 [255]
81 [255]
82
82
83 We can override failure to fall back to regular clone
83 We can override failure to fall back to regular clone
84
84
85 $ hg --config ui.clonebundlefallback=true clone -U http://localhost:$HGPORT 404-fallback
85 $ hg --config ui.clonebundlefallback=true clone -U http://localhost:$HGPORT 404-fallback
86 applying clone bundle from http://localhost:$HGPORT1/bundle.hg
86 applying clone bundle from http://localhost:$HGPORT1/bundle.hg
87 HTTP error fetching bundle: HTTP Error 404: File not found
87 HTTP error fetching bundle: HTTP Error 404: File not found
88 falling back to normal clone
88 falling back to normal clone
89 requesting all changes
89 requesting all changes
90 adding changesets
90 adding changesets
91 adding manifests
91 adding manifests
92 adding file changes
92 adding file changes
93 added 2 changesets with 2 changes to 2 files
93 added 2 changesets with 2 changes to 2 files
94 new changesets 53245c60e682:aaff8d2ffbbf
94 new changesets 53245c60e682:aaff8d2ffbbf
95
95
96 Bundle with partial content works
96 Bundle with partial content works
97
97
98 $ hg -R server bundle --type gzip-v1 --base null -r 53245c60e682 partial.hg
98 $ hg -R server bundle --type gzip-v1 --base null -r 53245c60e682 partial.hg
99 1 changesets found
99 1 changesets found
100
100
101 We verify exact bundle content as an extra check against accidental future
101 We verify exact bundle content as an extra check against accidental future
102 changes. If this output changes, we could break old clients.
102 changes. If this output changes, we could break old clients.
103
103
104 $ f --size --hexdump partial.hg
104 $ f --size --hexdump partial.hg
105 partial.hg: size=207
105 partial.hg: size=207
106 0000: 48 47 31 30 47 5a 78 9c 63 60 60 98 17 ac 12 93 |HG10GZx.c``.....|
106 0000: 48 47 31 30 47 5a 78 9c 63 60 60 98 17 ac 12 93 |HG10GZx.c``.....|
107 0010: f0 ac a9 23 45 70 cb bf 0d 5f 59 4e 4a 7f 79 21 |...#Ep..._YNJ.y!|
107 0010: f0 ac a9 23 45 70 cb bf 0d 5f 59 4e 4a 7f 79 21 |...#Ep..._YNJ.y!|
108 0020: 9b cc 40 24 20 a0 d7 ce 2c d1 38 25 cd 24 25 d5 |..@$ ...,.8%.$%.|
108 0020: 9b cc 40 24 20 a0 d7 ce 2c d1 38 25 cd 24 25 d5 |..@$ ...,.8%.$%.|
109 0030: d8 c2 22 cd 38 d9 24 cd 22 d5 c8 22 cd 24 cd 32 |..".8.$."..".$.2|
109 0030: d8 c2 22 cd 38 d9 24 cd 22 d5 c8 22 cd 24 cd 32 |..".8.$."..".$.2|
110 0040: d1 c2 d0 c4 c8 d2 32 d1 38 39 29 c9 34 cd d4 80 |......2.89).4...|
110 0040: d1 c2 d0 c4 c8 d2 32 d1 38 39 29 c9 34 cd d4 80 |......2.89).4...|
111 0050: ab 24 b5 b8 84 cb 40 c1 80 2b 2d 3f 9f 8b 2b 31 |.$....@..+-?..+1|
111 0050: ab 24 b5 b8 84 cb 40 c1 80 2b 2d 3f 9f 8b 2b 31 |.$....@..+-?..+1|
112 0060: 25 45 01 c8 80 9a d2 9b 65 fb e5 9e 45 bf 8d 7f |%E......e...E...|
112 0060: 25 45 01 c8 80 9a d2 9b 65 fb e5 9e 45 bf 8d 7f |%E......e...E...|
113 0070: 9f c6 97 9f 2b 44 34 67 d9 ec 8e 0f a0 92 0b 75 |....+D4g.......u|
113 0070: 9f c6 97 9f 2b 44 34 67 d9 ec 8e 0f a0 92 0b 75 |....+D4g.......u|
114 0080: 41 d6 24 59 18 a4 a4 9a a6 18 1a 5b 98 9b 5a 98 |A.$Y.......[..Z.|
114 0080: 41 d6 24 59 18 a4 a4 9a a6 18 1a 5b 98 9b 5a 98 |A.$Y.......[..Z.|
115 0090: 9a 18 26 9b a6 19 98 1a 99 99 26 a6 18 9a 98 24 |..&.......&....$|
115 0090: 9a 18 26 9b a6 19 98 1a 99 99 26 a6 18 9a 98 24 |..&.......&....$|
116 00a0: 26 59 a6 25 5a 98 a5 18 a6 24 71 41 35 b1 43 dc |&Y.%Z....$qA5.C.|
116 00a0: 26 59 a6 25 5a 98 a5 18 a6 24 71 41 35 b1 43 dc |&Y.%Z....$qA5.C.|
117 00b0: 16 b2 83 f7 e9 45 8b d2 56 c7 a3 1f 82 52 d7 8a |.....E..V....R..|
117 00b0: 16 b2 83 f7 e9 45 8b d2 56 c7 a3 1f 82 52 d7 8a |.....E..V....R..|
118 00c0: 78 ed fc d5 76 f1 36 35 dc 05 00 36 ed 5e c7 |x...v.65...6.^.|
118 00c0: 78 ed fc d5 76 f1 36 35 dc 05 00 36 ed 5e c7 |x...v.65...6.^.|
119
119
120 $ echo "http://localhost:$HGPORT1/partial.hg" > server/.hg/clonebundles.manifest
120 $ echo "http://localhost:$HGPORT1/partial.hg" > server/.hg/clonebundles.manifest
121 $ hg clone -U http://localhost:$HGPORT partial-bundle
121 $ hg clone -U http://localhost:$HGPORT partial-bundle
122 applying clone bundle from http://localhost:$HGPORT1/partial.hg
122 applying clone bundle from http://localhost:$HGPORT1/partial.hg
123 adding changesets
123 adding changesets
124 adding manifests
124 adding manifests
125 adding file changes
125 adding file changes
126 added 1 changesets with 1 changes to 1 files
126 added 1 changesets with 1 changes to 1 files
127 finished applying clone bundle
127 finished applying clone bundle
128 searching for changes
128 searching for changes
129 adding changesets
129 adding changesets
130 adding manifests
130 adding manifests
131 adding file changes
131 adding file changes
132 added 1 changesets with 1 changes to 1 files
132 added 1 changesets with 1 changes to 1 files
133 new changesets aaff8d2ffbbf
133 new changesets aaff8d2ffbbf
134 1 local changesets published
134 1 local changesets published
135
135
136 Incremental pull doesn't fetch bundle
136 Incremental pull doesn't fetch bundle
137
137
138 $ hg clone -r 53245c60e682 -U http://localhost:$HGPORT partial-clone
138 $ hg clone -r 53245c60e682 -U http://localhost:$HGPORT partial-clone
139 adding changesets
139 adding changesets
140 adding manifests
140 adding manifests
141 adding file changes
141 adding file changes
142 added 1 changesets with 1 changes to 1 files
142 added 1 changesets with 1 changes to 1 files
143 new changesets 53245c60e682
143 new changesets 53245c60e682
144
144
145 $ cd partial-clone
145 $ cd partial-clone
146 $ hg pull
146 $ hg pull
147 pulling from http://localhost:$HGPORT/
147 pulling from http://localhost:$HGPORT/
148 searching for changes
148 searching for changes
149 adding changesets
149 adding changesets
150 adding manifests
150 adding manifests
151 adding file changes
151 adding file changes
152 added 1 changesets with 1 changes to 1 files
152 added 1 changesets with 1 changes to 1 files
153 new changesets aaff8d2ffbbf
153 new changesets aaff8d2ffbbf
154 (run 'hg update' to get a working copy)
154 (run 'hg update' to get a working copy)
155 $ cd ..
155 $ cd ..
156
156
157 Bundle with full content works
157 Bundle with full content works
158
158
159 $ hg -R server bundle --type gzip-v2 --base null -r tip full.hg
159 $ hg -R server bundle --type gzip-v2 --base null -r tip full.hg
160 2 changesets found
160 2 changesets found
161
161
162 Again, we perform an extra check against bundle content changes. If this content
162 Again, we perform an extra check against bundle content changes. If this content
163 changes, clone bundles produced by new Mercurial versions may not be readable
163 changes, clone bundles produced by new Mercurial versions may not be readable
164 by old clients.
164 by old clients.
165
165
166 $ f --size --hexdump full.hg
166 $ f --size --hexdump full.hg
167 full.hg: size=442
167 full.hg: size=442
168 0000: 48 47 32 30 00 00 00 0e 43 6f 6d 70 72 65 73 73 |HG20....Compress|
168 0000: 48 47 32 30 00 00 00 0e 43 6f 6d 70 72 65 73 73 |HG20....Compress|
169 0010: 69 6f 6e 3d 47 5a 78 9c 63 60 60 d0 e4 76 f6 70 |ion=GZx.c``..v.p|
169 0010: 69 6f 6e 3d 47 5a 78 9c 63 60 60 d0 e4 76 f6 70 |ion=GZx.c``..v.p|
170 0020: f4 73 77 75 0f f2 0f 0d 60 00 02 46 46 76 26 4e |.swu....`..FFv&N|
170 0020: f4 73 77 75 0f f2 0f 0d 60 00 02 46 46 76 26 4e |.swu....`..FFv&N|
171 0030: c6 b2 d4 a2 e2 cc fc 3c 03 a3 bc a4 e4 8c c4 bc |.......<........|
171 0030: c6 b2 d4 a2 e2 cc fc 3c 03 a3 bc a4 e4 8c c4 bc |.......<........|
172 0040: f4 d4 62 23 06 06 e6 19 40 f9 4d c1 2a 31 09 cf |..b#....@.M.*1..|
172 0040: f4 d4 62 23 06 06 e6 19 40 f9 4d c1 2a 31 09 cf |..b#....@.M.*1..|
173 0050: 9a 3a 52 04 b7 fc db f0 95 e5 a4 f4 97 17 b2 c9 |.:R.............|
173 0050: 9a 3a 52 04 b7 fc db f0 95 e5 a4 f4 97 17 b2 c9 |.:R.............|
174 0060: 0c 14 00 02 e6 d9 99 25 1a a7 a4 99 a4 a4 1a 5b |.......%.......[|
174 0060: 0c 14 00 02 e6 d9 99 25 1a a7 a4 99 a4 a4 1a 5b |.......%.......[|
175 0070: 58 a4 19 27 9b a4 59 a4 1a 59 a4 99 a4 59 26 5a |X..'..Y..Y...Y&Z|
175 0070: 58 a4 19 27 9b a4 59 a4 1a 59 a4 99 a4 59 26 5a |X..'..Y..Y...Y&Z|
176 0080: 18 9a 18 59 5a 26 1a 27 27 25 99 a6 99 1a 70 95 |...YZ&.''%....p.|
176 0080: 18 9a 18 59 5a 26 1a 27 27 25 99 a6 99 1a 70 95 |...YZ&.''%....p.|
177 0090: a4 16 97 70 19 28 18 70 a5 e5 e7 73 71 25 a6 a4 |...p.(.p...sq%..|
177 0090: a4 16 97 70 19 28 18 70 a5 e5 e7 73 71 25 a6 a4 |...p.(.p...sq%..|
178 00a0: 28 00 19 20 17 af fa df ab ff 7b 3f fb 92 dc 8b |(.. ......{?....|
178 00a0: 28 00 19 20 17 af fa df ab ff 7b 3f fb 92 dc 8b |(.. ......{?....|
179 00b0: 1f 62 bb 9e b7 d7 d9 87 3d 5a 44 89 2f b0 99 87 |.b......=ZD./...|
179 00b0: 1f 62 bb 9e b7 d7 d9 87 3d 5a 44 89 2f b0 99 87 |.b......=ZD./...|
180 00c0: ec e2 54 63 43 e3 b4 64 43 73 23 33 43 53 0b 63 |..TcC..dCs#3CS.c|
180 00c0: ec e2 54 63 43 e3 b4 64 43 73 23 33 43 53 0b 63 |..TcC..dCs#3CS.c|
181 00d0: d3 14 23 03 a0 fb 2c 2c 0c d3 80 1e 30 49 49 b1 |..#...,,....0II.|
181 00d0: d3 14 23 03 a0 fb 2c 2c 0c d3 80 1e 30 49 49 b1 |..#...,,....0II.|
182 00e0: 4c 4a 32 48 33 30 b0 34 42 b8 38 29 b1 08 e2 62 |LJ2H30.4B.8)...b|
182 00e0: 4c 4a 32 48 33 30 b0 34 42 b8 38 29 b1 08 e2 62 |LJ2H30.4B.8)...b|
183 00f0: 20 03 6a ca c2 2c db 2f f7 2c fa 6d fc fb 34 be | .j..,./.,.m..4.|
183 00f0: 20 03 6a ca c2 2c db 2f f7 2c fa 6d fc fb 34 be | .j..,./.,.m..4.|
184 0100: fc 5c 21 a2 39 cb 66 77 7c 00 0d c3 59 17 14 58 |.\!.9.fw|...Y..X|
184 0100: fc 5c 21 a2 39 cb 66 77 7c 00 0d c3 59 17 14 58 |.\!.9.fw|...Y..X|
185 0110: 49 16 06 29 a9 a6 29 86 c6 16 e6 a6 16 a6 26 86 |I..)..).......&.|
185 0110: 49 16 06 29 a9 a6 29 86 c6 16 e6 a6 16 a6 26 86 |I..)..).......&.|
186 0120: c9 a6 69 06 a6 46 66 a6 89 29 86 26 26 89 49 96 |..i..Ff..).&&.I.|
186 0120: c9 a6 69 06 a6 46 66 a6 89 29 86 26 26 89 49 96 |..i..Ff..).&&.I.|
187 0130: 69 89 16 66 29 86 29 49 5c 20 07 3e 16 fe 23 ae |i..f).)I\ .>..#.|
187 0130: 69 89 16 66 29 86 29 49 5c 20 07 3e 16 fe 23 ae |i..f).)I\ .>..#.|
188 0140: 26 da 1c ab 10 1f d1 f8 e3 b3 ef cd dd fc 0c 93 |&...............|
188 0140: 26 da 1c ab 10 1f d1 f8 e3 b3 ef cd dd fc 0c 93 |&...............|
189 0150: 88 75 34 36 75 04 82 55 17 14 36 a4 38 10 04 d8 |.u46u..U..6.8...|
189 0150: 88 75 34 36 75 04 82 55 17 14 36 a4 38 10 04 d8 |.u46u..U..6.8...|
190 0160: 21 01 9a b1 83 f7 e9 45 8b d2 56 c7 a3 1f 82 52 |!......E..V....R|
190 0160: 21 01 9a b1 83 f7 e9 45 8b d2 56 c7 a3 1f 82 52 |!......E..V....R|
191 0170: d7 8a 78 ed fc d5 76 f1 36 25 81 89 c7 ad ec 90 |..x...v.6%......|
191 0170: d7 8a 78 ed fc d5 76 f1 36 25 81 89 c7 ad ec 90 |..x...v.6%......|
192 0180: 54 47 75 2b 89 48 b1 b2 62 c9 89 c9 19 a9 56 45 |TGu+.H..b.....VE|
192 0180: 54 47 75 2b 89 48 b1 b2 62 c9 89 c9 19 a9 56 45 |TGu+.H..b.....VE|
193 0190: a9 65 ba 49 45 89 79 c9 19 ba 60 01 a0 14 23 58 |.e.IE.y...`...#X|
193 0190: a9 65 ba 49 45 89 79 c9 19 ba 60 01 a0 14 23 58 |.e.IE.y...`...#X|
194 01a0: 81 35 c8 7d 40 cc 04 e2 a4 a4 a6 25 96 e6 94 60 |.5.}@......%...`|
194 01a0: 81 35 c8 7d 40 cc 04 e2 a4 a4 a6 25 96 e6 94 60 |.5.}@......%...`|
195 01b0: 33 17 5f 54 00 00 d3 1b 0d 4c |3._T.....L|
195 01b0: 33 17 5f 54 00 00 d3 1b 0d 4c |3._T.....L|
196
196
197 $ echo "http://localhost:$HGPORT1/full.hg" > server/.hg/clonebundles.manifest
197 $ echo "http://localhost:$HGPORT1/full.hg" > server/.hg/clonebundles.manifest
198 $ hg clone -U http://localhost:$HGPORT full-bundle
198 $ hg clone -U http://localhost:$HGPORT full-bundle
199 applying clone bundle from http://localhost:$HGPORT1/full.hg
199 applying clone bundle from http://localhost:$HGPORT1/full.hg
200 adding changesets
200 adding changesets
201 adding manifests
201 adding manifests
202 adding file changes
202 adding file changes
203 added 2 changesets with 2 changes to 2 files
203 added 2 changesets with 2 changes to 2 files
204 finished applying clone bundle
204 finished applying clone bundle
205 searching for changes
205 searching for changes
206 no changes found
206 no changes found
207 2 local changesets published
207 2 local changesets published
208
208
209 Feature works over SSH
209 Feature works over SSH
210
210
211 $ hg clone -U -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/server ssh-full-clone
211 $ hg clone -U -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/server ssh-full-clone
212 applying clone bundle from http://localhost:$HGPORT1/full.hg
212 applying clone bundle from http://localhost:$HGPORT1/full.hg
213 adding changesets
213 adding changesets
214 adding manifests
214 adding manifests
215 adding file changes
215 adding file changes
216 added 2 changesets with 2 changes to 2 files
216 added 2 changesets with 2 changes to 2 files
217 finished applying clone bundle
217 finished applying clone bundle
218 searching for changes
218 searching for changes
219 no changes found
219 no changes found
220 2 local changesets published
220 2 local changesets published
221
221
222 Entry with unknown BUNDLESPEC is filtered and not used
222 Entry with unknown BUNDLESPEC is filtered and not used
223
223
224 $ cat > server/.hg/clonebundles.manifest << EOF
224 $ cat > server/.hg/clonebundles.manifest << EOF
225 > http://bad.entry1 BUNDLESPEC=UNKNOWN
225 > http://bad.entry1 BUNDLESPEC=UNKNOWN
226 > http://bad.entry2 BUNDLESPEC=xz-v1
226 > http://bad.entry2 BUNDLESPEC=xz-v1
227 > http://bad.entry3 BUNDLESPEC=none-v100
227 > http://bad.entry3 BUNDLESPEC=none-v100
228 > http://localhost:$HGPORT1/full.hg BUNDLESPEC=gzip-v2
228 > http://localhost:$HGPORT1/full.hg BUNDLESPEC=gzip-v2
229 > EOF
229 > EOF
230
230
231 $ hg clone -U http://localhost:$HGPORT filter-unknown-type
231 $ hg clone -U http://localhost:$HGPORT filter-unknown-type
232 applying clone bundle from http://localhost:$HGPORT1/full.hg
232 applying clone bundle from http://localhost:$HGPORT1/full.hg
233 adding changesets
233 adding changesets
234 adding manifests
234 adding manifests
235 adding file changes
235 adding file changes
236 added 2 changesets with 2 changes to 2 files
236 added 2 changesets with 2 changes to 2 files
237 finished applying clone bundle
237 finished applying clone bundle
238 searching for changes
238 searching for changes
239 no changes found
239 no changes found
240 2 local changesets published
240 2 local changesets published
241
241
242 Automatic fallback when all entries are filtered
242 Automatic fallback when all entries are filtered
243
243
244 $ cat > server/.hg/clonebundles.manifest << EOF
244 $ cat > server/.hg/clonebundles.manifest << EOF
245 > http://bad.entry BUNDLESPEC=UNKNOWN
245 > http://bad.entry BUNDLESPEC=UNKNOWN
246 > EOF
246 > EOF
247
247
248 $ hg clone -U http://localhost:$HGPORT filter-all
248 $ hg clone -U http://localhost:$HGPORT filter-all
249 no compatible clone bundles available on server; falling back to regular clone
249 no compatible clone bundles available on server; falling back to regular clone
250 (you may want to report this to the server operator)
250 (you may want to report this to the server operator)
251 requesting all changes
251 requesting all changes
252 adding changesets
252 adding changesets
253 adding manifests
253 adding manifests
254 adding file changes
254 adding file changes
255 added 2 changesets with 2 changes to 2 files
255 added 2 changesets with 2 changes to 2 files
256 new changesets 53245c60e682:aaff8d2ffbbf
256 new changesets 53245c60e682:aaff8d2ffbbf
257
257
258 URLs requiring SNI are filtered in Python <2.7.9
258 URLs requiring SNI are filtered in Python <2.7.9
259
259
260 $ cp full.hg sni.hg
260 $ cp full.hg sni.hg
261 $ cat > server/.hg/clonebundles.manifest << EOF
261 $ cat > server/.hg/clonebundles.manifest << EOF
262 > http://localhost:$HGPORT1/sni.hg REQUIRESNI=true
262 > http://localhost:$HGPORT1/sni.hg REQUIRESNI=true
263 > http://localhost:$HGPORT1/full.hg
263 > http://localhost:$HGPORT1/full.hg
264 > EOF
264 > EOF
265
265
266 #if sslcontext
266 #if sslcontext
267 Python 2.7.9+ support SNI
267 Python 2.7.9+ support SNI
268
268
269 $ hg clone -U http://localhost:$HGPORT sni-supported
269 $ hg clone -U http://localhost:$HGPORT sni-supported
270 applying clone bundle from http://localhost:$HGPORT1/sni.hg
270 applying clone bundle from http://localhost:$HGPORT1/sni.hg
271 adding changesets
271 adding changesets
272 adding manifests
272 adding manifests
273 adding file changes
273 adding file changes
274 added 2 changesets with 2 changes to 2 files
274 added 2 changesets with 2 changes to 2 files
275 finished applying clone bundle
275 finished applying clone bundle
276 searching for changes
276 searching for changes
277 no changes found
277 no changes found
278 2 local changesets published
278 2 local changesets published
279 #else
279 #else
280 Python <2.7.9 will filter SNI URLs
280 Python <2.7.9 will filter SNI URLs
281
281
282 $ hg clone -U http://localhost:$HGPORT sni-unsupported
282 $ hg clone -U http://localhost:$HGPORT sni-unsupported
283 applying clone bundle from http://localhost:$HGPORT1/full.hg
283 applying clone bundle from http://localhost:$HGPORT1/full.hg
284 adding changesets
284 adding changesets
285 adding manifests
285 adding manifests
286 adding file changes
286 adding file changes
287 added 2 changesets with 2 changes to 2 files
287 added 2 changesets with 2 changes to 2 files
288 finished applying clone bundle
288 finished applying clone bundle
289 searching for changes
289 searching for changes
290 no changes found
290 no changes found
291 2 local changesets published
291 2 local changesets published
292 #endif
292 #endif
293
293
294 Stream clone bundles are supported
294 Stream clone bundles are supported
295
295
296 $ hg -R server debugcreatestreamclonebundle packed.hg
296 $ hg -R server debugcreatestreamclonebundle packed.hg
297 writing 613 bytes for 4 files
297 writing 613 bytes for 4 files
298 bundle requirements: generaldelta, revlogv1, sparserevlog
298 bundle requirements: generaldelta, revlogv1, sparserevlog
299
299
300 No bundle spec should work
300 No bundle spec should work
301
301
302 $ cat > server/.hg/clonebundles.manifest << EOF
302 $ cat > server/.hg/clonebundles.manifest << EOF
303 > http://localhost:$HGPORT1/packed.hg
303 > http://localhost:$HGPORT1/packed.hg
304 > EOF
304 > EOF
305
305
306 $ hg clone -U http://localhost:$HGPORT stream-clone-no-spec
306 $ hg clone -U http://localhost:$HGPORT stream-clone-no-spec
307 applying clone bundle from http://localhost:$HGPORT1/packed.hg
307 applying clone bundle from http://localhost:$HGPORT1/packed.hg
308 4 files to transfer, 613 bytes of data
308 4 files to transfer, 613 bytes of data
309 transferred 613 bytes in *.* seconds (*) (glob)
309 transferred 613 bytes in *.* seconds (*) (glob)
310 finished applying clone bundle
310 finished applying clone bundle
311 searching for changes
311 searching for changes
312 no changes found
312 no changes found
313
313
314 Bundle spec without parameters should work
314 Bundle spec without parameters should work
315
315
316 $ cat > server/.hg/clonebundles.manifest << EOF
316 $ cat > server/.hg/clonebundles.manifest << EOF
317 > http://localhost:$HGPORT1/packed.hg BUNDLESPEC=none-packed1
317 > http://localhost:$HGPORT1/packed.hg BUNDLESPEC=none-packed1
318 > EOF
318 > EOF
319
319
320 $ hg clone -U http://localhost:$HGPORT stream-clone-vanilla-spec
320 $ hg clone -U http://localhost:$HGPORT stream-clone-vanilla-spec
321 applying clone bundle from http://localhost:$HGPORT1/packed.hg
321 applying clone bundle from http://localhost:$HGPORT1/packed.hg
322 4 files to transfer, 613 bytes of data
322 4 files to transfer, 613 bytes of data
323 transferred 613 bytes in *.* seconds (*) (glob)
323 transferred 613 bytes in *.* seconds (*) (glob)
324 finished applying clone bundle
324 finished applying clone bundle
325 searching for changes
325 searching for changes
326 no changes found
326 no changes found
327
327
328 Bundle spec with format requirements should work
328 Bundle spec with format requirements should work
329
329
330 $ cat > server/.hg/clonebundles.manifest << EOF
330 $ cat > server/.hg/clonebundles.manifest << EOF
331 > http://localhost:$HGPORT1/packed.hg BUNDLESPEC=none-packed1;requirements%3Drevlogv1
331 > http://localhost:$HGPORT1/packed.hg BUNDLESPEC=none-packed1;requirements%3Drevlogv1
332 > EOF
332 > EOF
333
333
334 $ hg clone -U http://localhost:$HGPORT stream-clone-supported-requirements
334 $ hg clone -U http://localhost:$HGPORT stream-clone-supported-requirements
335 applying clone bundle from http://localhost:$HGPORT1/packed.hg
335 applying clone bundle from http://localhost:$HGPORT1/packed.hg
336 4 files to transfer, 613 bytes of data
336 4 files to transfer, 613 bytes of data
337 transferred 613 bytes in *.* seconds (*) (glob)
337 transferred 613 bytes in *.* seconds (*) (glob)
338 finished applying clone bundle
338 finished applying clone bundle
339 searching for changes
339 searching for changes
340 no changes found
340 no changes found
341
341
342 Stream bundle spec with unknown requirements should be filtered out
342 Stream bundle spec with unknown requirements should be filtered out
343
343
344 $ cat > server/.hg/clonebundles.manifest << EOF
344 $ cat > server/.hg/clonebundles.manifest << EOF
345 > http://localhost:$HGPORT1/packed.hg BUNDLESPEC=none-packed1;requirements%3Drevlogv42
345 > http://localhost:$HGPORT1/packed.hg BUNDLESPEC=none-packed1;requirements%3Drevlogv42
346 > EOF
346 > EOF
347
347
348 $ hg clone -U http://localhost:$HGPORT stream-clone-unsupported-requirements
348 $ hg clone -U http://localhost:$HGPORT stream-clone-unsupported-requirements
349 no compatible clone bundles available on server; falling back to regular clone
349 no compatible clone bundles available on server; falling back to regular clone
350 (you may want to report this to the server operator)
350 (you may want to report this to the server operator)
351 requesting all changes
351 requesting all changes
352 adding changesets
352 adding changesets
353 adding manifests
353 adding manifests
354 adding file changes
354 adding file changes
355 added 2 changesets with 2 changes to 2 files
355 added 2 changesets with 2 changes to 2 files
356 new changesets 53245c60e682:aaff8d2ffbbf
356 new changesets 53245c60e682:aaff8d2ffbbf
357
357
358 Set up manifest for testing preferences
358 Set up manifest for testing preferences
359 (Remember, the TYPE does not have to match reality - the URL is
359 (Remember, the TYPE does not have to match reality - the URL is
360 important)
360 important)
361
361
362 $ cp full.hg gz-a.hg
362 $ cp full.hg gz-a.hg
363 $ cp full.hg gz-b.hg
363 $ cp full.hg gz-b.hg
364 $ cp full.hg bz2-a.hg
364 $ cp full.hg bz2-a.hg
365 $ cp full.hg bz2-b.hg
365 $ cp full.hg bz2-b.hg
366 $ cat > server/.hg/clonebundles.manifest << EOF
366 $ cat > server/.hg/clonebundles.manifest << EOF
367 > http://localhost:$HGPORT1/gz-a.hg BUNDLESPEC=gzip-v2 extra=a
367 > http://localhost:$HGPORT1/gz-a.hg BUNDLESPEC=gzip-v2 extra=a
368 > http://localhost:$HGPORT1/bz2-a.hg BUNDLESPEC=bzip2-v2 extra=a
368 > http://localhost:$HGPORT1/bz2-a.hg BUNDLESPEC=bzip2-v2 extra=a
369 > http://localhost:$HGPORT1/gz-b.hg BUNDLESPEC=gzip-v2 extra=b
369 > http://localhost:$HGPORT1/gz-b.hg BUNDLESPEC=gzip-v2 extra=b
370 > http://localhost:$HGPORT1/bz2-b.hg BUNDLESPEC=bzip2-v2 extra=b
370 > http://localhost:$HGPORT1/bz2-b.hg BUNDLESPEC=bzip2-v2 extra=b
371 > EOF
371 > EOF
372
372
373 Preferring an undefined attribute will take first entry
373 Preferring an undefined attribute will take first entry
374
374
375 $ hg --config ui.clonebundleprefers=foo=bar clone -U http://localhost:$HGPORT prefer-foo
375 $ hg --config ui.clonebundleprefers=foo=bar clone -U http://localhost:$HGPORT prefer-foo
376 applying clone bundle from http://localhost:$HGPORT1/gz-a.hg
376 applying clone bundle from http://localhost:$HGPORT1/gz-a.hg
377 adding changesets
377 adding changesets
378 adding manifests
378 adding manifests
379 adding file changes
379 adding file changes
380 added 2 changesets with 2 changes to 2 files
380 added 2 changesets with 2 changes to 2 files
381 finished applying clone bundle
381 finished applying clone bundle
382 searching for changes
382 searching for changes
383 no changes found
383 no changes found
384 2 local changesets published
384 2 local changesets published
385
385
386 Preferring bz2 type will download first entry of that type
386 Preferring bz2 type will download first entry of that type
387
387
388 $ hg --config ui.clonebundleprefers=COMPRESSION=bzip2 clone -U http://localhost:$HGPORT prefer-bz
388 $ hg --config ui.clonebundleprefers=COMPRESSION=bzip2 clone -U http://localhost:$HGPORT prefer-bz
389 applying clone bundle from http://localhost:$HGPORT1/bz2-a.hg
389 applying clone bundle from http://localhost:$HGPORT1/bz2-a.hg
390 adding changesets
390 adding changesets
391 adding manifests
391 adding manifests
392 adding file changes
392 adding file changes
393 added 2 changesets with 2 changes to 2 files
393 added 2 changesets with 2 changes to 2 files
394 finished applying clone bundle
394 finished applying clone bundle
395 searching for changes
395 searching for changes
396 no changes found
396 no changes found
397 2 local changesets published
397 2 local changesets published
398
398
399 Preferring multiple values of an option works
399 Preferring multiple values of an option works
400
400
401 $ hg --config ui.clonebundleprefers=COMPRESSION=unknown,COMPRESSION=bzip2 clone -U http://localhost:$HGPORT prefer-multiple-bz
401 $ hg --config ui.clonebundleprefers=COMPRESSION=unknown,COMPRESSION=bzip2 clone -U http://localhost:$HGPORT prefer-multiple-bz
402 applying clone bundle from http://localhost:$HGPORT1/bz2-a.hg
402 applying clone bundle from http://localhost:$HGPORT1/bz2-a.hg
403 adding changesets
403 adding changesets
404 adding manifests
404 adding manifests
405 adding file changes
405 adding file changes
406 added 2 changesets with 2 changes to 2 files
406 added 2 changesets with 2 changes to 2 files
407 finished applying clone bundle
407 finished applying clone bundle
408 searching for changes
408 searching for changes
409 no changes found
409 no changes found
410 2 local changesets published
410 2 local changesets published
411
411
412 Sorting multiple values should get us back to original first entry
412 Sorting multiple values should get us back to original first entry
413
413
414 $ hg --config ui.clonebundleprefers=BUNDLESPEC=unknown,BUNDLESPEC=gzip-v2,BUNDLESPEC=bzip2-v2 clone -U http://localhost:$HGPORT prefer-multiple-gz
414 $ hg --config ui.clonebundleprefers=BUNDLESPEC=unknown,BUNDLESPEC=gzip-v2,BUNDLESPEC=bzip2-v2 clone -U http://localhost:$HGPORT prefer-multiple-gz
415 applying clone bundle from http://localhost:$HGPORT1/gz-a.hg
415 applying clone bundle from http://localhost:$HGPORT1/gz-a.hg
416 adding changesets
416 adding changesets
417 adding manifests
417 adding manifests
418 adding file changes
418 adding file changes
419 added 2 changesets with 2 changes to 2 files
419 added 2 changesets with 2 changes to 2 files
420 finished applying clone bundle
420 finished applying clone bundle
421 searching for changes
421 searching for changes
422 no changes found
422 no changes found
423 2 local changesets published
423 2 local changesets published
424
424
425 Preferring multiple attributes has correct order
425 Preferring multiple attributes has correct order
426
426
427 $ hg --config ui.clonebundleprefers=extra=b,BUNDLESPEC=bzip2-v2 clone -U http://localhost:$HGPORT prefer-separate-attributes
427 $ hg --config ui.clonebundleprefers=extra=b,BUNDLESPEC=bzip2-v2 clone -U http://localhost:$HGPORT prefer-separate-attributes
428 applying clone bundle from http://localhost:$HGPORT1/bz2-b.hg
428 applying clone bundle from http://localhost:$HGPORT1/bz2-b.hg
429 adding changesets
429 adding changesets
430 adding manifests
430 adding manifests
431 adding file changes
431 adding file changes
432 added 2 changesets with 2 changes to 2 files
432 added 2 changesets with 2 changes to 2 files
433 finished applying clone bundle
433 finished applying clone bundle
434 searching for changes
434 searching for changes
435 no changes found
435 no changes found
436 2 local changesets published
436 2 local changesets published
437
437
438 Test where attribute is missing from some entries
438 Test where attribute is missing from some entries
439
439
440 $ cat > server/.hg/clonebundles.manifest << EOF
440 $ cat > server/.hg/clonebundles.manifest << EOF
441 > http://localhost:$HGPORT1/gz-a.hg BUNDLESPEC=gzip-v2
441 > http://localhost:$HGPORT1/gz-a.hg BUNDLESPEC=gzip-v2
442 > http://localhost:$HGPORT1/bz2-a.hg BUNDLESPEC=bzip2-v2
442 > http://localhost:$HGPORT1/bz2-a.hg BUNDLESPEC=bzip2-v2
443 > http://localhost:$HGPORT1/gz-b.hg BUNDLESPEC=gzip-v2 extra=b
443 > http://localhost:$HGPORT1/gz-b.hg BUNDLESPEC=gzip-v2 extra=b
444 > http://localhost:$HGPORT1/bz2-b.hg BUNDLESPEC=bzip2-v2 extra=b
444 > http://localhost:$HGPORT1/bz2-b.hg BUNDLESPEC=bzip2-v2 extra=b
445 > EOF
445 > EOF
446
446
447 $ hg --config ui.clonebundleprefers=extra=b clone -U http://localhost:$HGPORT prefer-partially-defined-attribute
447 $ hg --config ui.clonebundleprefers=extra=b clone -U http://localhost:$HGPORT prefer-partially-defined-attribute
448 applying clone bundle from http://localhost:$HGPORT1/gz-b.hg
448 applying clone bundle from http://localhost:$HGPORT1/gz-b.hg
449 adding changesets
449 adding changesets
450 adding manifests
450 adding manifests
451 adding file changes
451 adding file changes
452 added 2 changesets with 2 changes to 2 files
452 added 2 changesets with 2 changes to 2 files
453 finished applying clone bundle
453 finished applying clone bundle
454 searching for changes
454 searching for changes
455 no changes found
455 no changes found
456 2 local changesets published
456 2 local changesets published
457
457
458 Test interaction between clone bundles and --stream
458 Test interaction between clone bundles and --stream
459
459
460 A manifest with just a gzip bundle
460 A manifest with just a gzip bundle
461
461
462 $ cat > server/.hg/clonebundles.manifest << EOF
462 $ cat > server/.hg/clonebundles.manifest << EOF
463 > http://localhost:$HGPORT1/gz-a.hg BUNDLESPEC=gzip-v2
463 > http://localhost:$HGPORT1/gz-a.hg BUNDLESPEC=gzip-v2
464 > EOF
464 > EOF
465
465
466 $ hg clone -U --stream http://localhost:$HGPORT uncompressed-gzip
466 $ hg clone -U --stream http://localhost:$HGPORT uncompressed-gzip
467 no compatible clone bundles available on server; falling back to regular clone
467 no compatible clone bundles available on server; falling back to regular clone
468 (you may want to report this to the server operator)
468 (you may want to report this to the server operator)
469 streaming all changes
469 streaming all changes
470 9 files to transfer, 816 bytes of data
470 9 files to transfer, 816 bytes of data
471 transferred 816 bytes in * seconds (*) (glob)
471 transferred 816 bytes in * seconds (*) (glob)
472
472
473 A manifest with a stream clone but no BUNDLESPEC
473 A manifest with a stream clone but no BUNDLESPEC
474
474
475 $ cat > server/.hg/clonebundles.manifest << EOF
475 $ cat > server/.hg/clonebundles.manifest << EOF
476 > http://localhost:$HGPORT1/packed.hg
476 > http://localhost:$HGPORT1/packed.hg
477 > EOF
477 > EOF
478
478
479 $ hg clone -U --stream http://localhost:$HGPORT uncompressed-no-bundlespec
479 $ hg clone -U --stream http://localhost:$HGPORT uncompressed-no-bundlespec
480 no compatible clone bundles available on server; falling back to regular clone
480 no compatible clone bundles available on server; falling back to regular clone
481 (you may want to report this to the server operator)
481 (you may want to report this to the server operator)
482 streaming all changes
482 streaming all changes
483 9 files to transfer, 816 bytes of data
483 9 files to transfer, 816 bytes of data
484 transferred 816 bytes in * seconds (*) (glob)
484 transferred 816 bytes in * seconds (*) (glob)
485
485
486 A manifest with a gzip bundle and a stream clone
486 A manifest with a gzip bundle and a stream clone
487
487
488 $ cat > server/.hg/clonebundles.manifest << EOF
488 $ cat > server/.hg/clonebundles.manifest << EOF
489 > http://localhost:$HGPORT1/gz-a.hg BUNDLESPEC=gzip-v2
489 > http://localhost:$HGPORT1/gz-a.hg BUNDLESPEC=gzip-v2
490 > http://localhost:$HGPORT1/packed.hg BUNDLESPEC=none-packed1
490 > http://localhost:$HGPORT1/packed.hg BUNDLESPEC=none-packed1
491 > EOF
491 > EOF
492
492
493 $ hg clone -U --stream http://localhost:$HGPORT uncompressed-gzip-packed
493 $ hg clone -U --stream http://localhost:$HGPORT uncompressed-gzip-packed
494 applying clone bundle from http://localhost:$HGPORT1/packed.hg
494 applying clone bundle from http://localhost:$HGPORT1/packed.hg
495 4 files to transfer, 613 bytes of data
495 4 files to transfer, 613 bytes of data
496 transferred 613 bytes in * seconds (*) (glob)
496 transferred 613 bytes in * seconds (*) (glob)
497 finished applying clone bundle
497 finished applying clone bundle
498 searching for changes
498 searching for changes
499 no changes found
499 no changes found
500
500
501 A manifest with a gzip bundle and stream clone with supported requirements
501 A manifest with a gzip bundle and stream clone with supported requirements
502
502
503 $ cat > server/.hg/clonebundles.manifest << EOF
503 $ cat > server/.hg/clonebundles.manifest << EOF
504 > http://localhost:$HGPORT1/gz-a.hg BUNDLESPEC=gzip-v2
504 > http://localhost:$HGPORT1/gz-a.hg BUNDLESPEC=gzip-v2
505 > http://localhost:$HGPORT1/packed.hg BUNDLESPEC=none-packed1;requirements%3Drevlogv1
505 > http://localhost:$HGPORT1/packed.hg BUNDLESPEC=none-packed1;requirements%3Drevlogv1
506 > EOF
506 > EOF
507
507
508 $ hg clone -U --stream http://localhost:$HGPORT uncompressed-gzip-packed-requirements
508 $ hg clone -U --stream http://localhost:$HGPORT uncompressed-gzip-packed-requirements
509 applying clone bundle from http://localhost:$HGPORT1/packed.hg
509 applying clone bundle from http://localhost:$HGPORT1/packed.hg
510 4 files to transfer, 613 bytes of data
510 4 files to transfer, 613 bytes of data
511 transferred 613 bytes in * seconds (*) (glob)
511 transferred 613 bytes in * seconds (*) (glob)
512 finished applying clone bundle
512 finished applying clone bundle
513 searching for changes
513 searching for changes
514 no changes found
514 no changes found
515
515
516 A manifest with a gzip bundle and a stream clone with unsupported requirements
516 A manifest with a gzip bundle and a stream clone with unsupported requirements
517
517
518 $ cat > server/.hg/clonebundles.manifest << EOF
518 $ cat > server/.hg/clonebundles.manifest << EOF
519 > http://localhost:$HGPORT1/gz-a.hg BUNDLESPEC=gzip-v2
519 > http://localhost:$HGPORT1/gz-a.hg BUNDLESPEC=gzip-v2
520 > http://localhost:$HGPORT1/packed.hg BUNDLESPEC=none-packed1;requirements%3Drevlogv42
520 > http://localhost:$HGPORT1/packed.hg BUNDLESPEC=none-packed1;requirements%3Drevlogv42
521 > EOF
521 > EOF
522
522
523 $ hg clone -U --stream http://localhost:$HGPORT uncompressed-gzip-packed-unsupported-requirements
523 $ hg clone -U --stream http://localhost:$HGPORT uncompressed-gzip-packed-unsupported-requirements
524 no compatible clone bundles available on server; falling back to regular clone
524 no compatible clone bundles available on server; falling back to regular clone
525 (you may want to report this to the server operator)
525 (you may want to report this to the server operator)
526 streaming all changes
526 streaming all changes
527 9 files to transfer, 816 bytes of data
527 9 files to transfer, 816 bytes of data
528 transferred 816 bytes in * seconds (*) (glob)
528 transferred 816 bytes in * seconds (*) (glob)
529
529
530 Test clone bundle retrieved through bundle2
530 Test clone bundle retrieved through bundle2
531
531
532 $ cat << EOF >> $HGRCPATH
532 $ cat << EOF >> $HGRCPATH
533 > [extensions]
533 > [extensions]
534 > largefiles=
534 > largefiles=
535 > EOF
535 > EOF
536 $ killdaemons.py
536 $ killdaemons.py
537 $ hg -R server serve -d -p $HGPORT --pid-file hg.pid --accesslog access.log
537 $ hg -R server serve -d -p $HGPORT --pid-file hg.pid --accesslog access.log
538 $ cat hg.pid >> $DAEMON_PIDS
538 $ cat hg.pid >> $DAEMON_PIDS
539
539
540 $ hg -R server debuglfput gz-a.hg
540 $ hg -R server debuglfput gz-a.hg
541 1f74b3d08286b9b3a16fb3fa185dd29219cbc6ae
541 1f74b3d08286b9b3a16fb3fa185dd29219cbc6ae
542
542
543 $ cat > server/.hg/clonebundles.manifest << EOF
543 $ cat > server/.hg/clonebundles.manifest << EOF
544 > largefile://1f74b3d08286b9b3a16fb3fa185dd29219cbc6ae BUNDLESPEC=gzip-v2
544 > largefile://1f74b3d08286b9b3a16fb3fa185dd29219cbc6ae BUNDLESPEC=gzip-v2
545 > EOF
545 > EOF
546
546
547 $ hg clone -U http://localhost:$HGPORT largefile-provided --traceback
547 $ hg clone -U http://localhost:$HGPORT largefile-provided --traceback
548 applying clone bundle from largefile://1f74b3d08286b9b3a16fb3fa185dd29219cbc6ae
548 applying clone bundle from largefile://1f74b3d08286b9b3a16fb3fa185dd29219cbc6ae
549 adding changesets
549 adding changesets
550 adding manifests
550 adding manifests
551 adding file changes
551 adding file changes
552 added 2 changesets with 2 changes to 2 files
552 added 2 changesets with 2 changes to 2 files
553 finished applying clone bundle
553 finished applying clone bundle
554 searching for changes
554 searching for changes
555 no changes found
555 no changes found
556 2 local changesets published
556 2 local changesets published
@@ -1,937 +1,936 b''
1 #require serve zstd
1 #require serve zstd
2
2
3 Client version is embedded in HTTP request and is effectively dynamic. Pin the
3 Client version is embedded in HTTP request and is effectively dynamic. Pin the
4 version so behavior is deterministic.
4 version so behavior is deterministic.
5
5
6 $ cat > fakeversion.py << EOF
6 $ cat > fakeversion.py << EOF
7 > from mercurial import util
7 > from mercurial import util
8 > util.version = lambda: '4.2'
8 > util.version = lambda: '4.2'
9 > EOF
9 > EOF
10
10
11 $ cat >> $HGRCPATH << EOF
11 $ cat >> $HGRCPATH << EOF
12 > [extensions]
12 > [extensions]
13 > fakeversion = `pwd`/fakeversion.py
13 > fakeversion = `pwd`/fakeversion.py
14 > [format]
14 > [format]
15 > sparse-revlog = no
15 > sparse-revlog = no
16 > [devel]
16 > [devel]
17 > legacy.exchange = phases
17 > legacy.exchange = phases
18 > EOF
18 > EOF
19
19
20 $ hg init server0
20 $ hg init server0
21 $ cd server0
21 $ cd server0
22 $ touch foo
22 $ touch foo
23 $ hg -q commit -A -m initial
23 $ hg -q commit -A -m initial
24
24
25 Also disable compression because zstd is optional and causes output to vary
25 Also disable compression because zstd is optional and causes output to vary
26 and because debugging partial responses is hard when compression is involved
26 and because debugging partial responses is hard when compression is involved
27
27
28 $ cat > .hg/hgrc << EOF
28 $ cat > .hg/hgrc << EOF
29 > [extensions]
29 > [extensions]
30 > badserver = $TESTDIR/badserverext.py
30 > badserver = $TESTDIR/badserverext.py
31 > [server]
31 > [server]
32 > compressionengines = none
32 > compressionengines = none
33 > EOF
33 > EOF
34
34
35 Failure to accept() socket should result in connection related error message
35 Failure to accept() socket should result in connection related error message
36
36
37 $ hg serve --config badserver.closebeforeaccept=true -p $HGPORT -d --pid-file=hg.pid
37 $ hg serve --config badserver.closebeforeaccept=true -p $HGPORT -d --pid-file=hg.pid
38 $ cat hg.pid > $DAEMON_PIDS
38 $ cat hg.pid > $DAEMON_PIDS
39
39
40 $ hg clone http://localhost:$HGPORT/ clone
40 $ hg clone http://localhost:$HGPORT/ clone
41 abort: error: $ECONNRESET$ (?)
41 abort: error: (\$ECONNRESET\$|\$EADDRNOTAVAIL\$) (re)
42 abort: error: $EADDRNOTAVAIL$ (?)
43 [255]
42 [255]
44
43
45 (The server exits on its own, but there is a race between that and starting a new server.
44 (The server exits on its own, but there is a race between that and starting a new server.
46 So ensure the process is dead.)
45 So ensure the process is dead.)
47
46
48 $ killdaemons.py $DAEMON_PIDS
47 $ killdaemons.py $DAEMON_PIDS
49
48
50 Failure immediately after accept() should yield connection related error message
49 Failure immediately after accept() should yield connection related error message
51
50
52 $ hg serve --config badserver.closeafteraccept=true -p $HGPORT -d --pid-file=hg.pid
51 $ hg serve --config badserver.closeafteraccept=true -p $HGPORT -d --pid-file=hg.pid
53 $ cat hg.pid > $DAEMON_PIDS
52 $ cat hg.pid > $DAEMON_PIDS
54
53
55 TODO: this usually outputs good results, but sometimes emits abort:
54 TODO: this usually outputs good results, but sometimes emits abort:
56 error: '' on FreeBSD and OS X.
55 error: '' on FreeBSD and OS X.
57 What we ideally want are:
56 What we ideally want are:
58
57
59 abort: error: $ECONNRESET$
58 abort: error: $ECONNRESET$
60
59
61 The flakiness in this output was observable easily with
60 The flakiness in this output was observable easily with
62 --runs-per-test=20 on macOS 10.12 during the freeze for 4.2.
61 --runs-per-test=20 on macOS 10.12 during the freeze for 4.2.
63 $ hg clone http://localhost:$HGPORT/ clone
62 $ hg clone http://localhost:$HGPORT/ clone
64 abort: error: * (glob)
63 abort: error: * (glob)
65 [255]
64 [255]
66
65
67 $ killdaemons.py $DAEMON_PIDS
66 $ killdaemons.py $DAEMON_PIDS
68
67
69 Failure to read all bytes in initial HTTP request should yield connection related error message
68 Failure to read all bytes in initial HTTP request should yield connection related error message
70
69
71 $ hg serve --config badserver.closeafterrecvbytes=1 -p $HGPORT -d --pid-file=hg.pid -E error.log
70 $ hg serve --config badserver.closeafterrecvbytes=1 -p $HGPORT -d --pid-file=hg.pid -E error.log
72 $ cat hg.pid > $DAEMON_PIDS
71 $ cat hg.pid > $DAEMON_PIDS
73
72
74 $ hg clone http://localhost:$HGPORT/ clone
73 $ hg clone http://localhost:$HGPORT/ clone
75 abort: error: bad HTTP status line: * (glob)
74 abort: error: bad HTTP status line: * (glob)
76 [255]
75 [255]
77
76
78 $ killdaemons.py $DAEMON_PIDS
77 $ killdaemons.py $DAEMON_PIDS
79
78
80 $ cat error.log
79 $ cat error.log
81 readline(1 from 65537) -> (1) G
80 readline(1 from 65537) -> (1) G
82 read limit reached; closing socket
81 read limit reached; closing socket
83
82
84 $ rm -f error.log
83 $ rm -f error.log
85
84
86 Same failure, but server reads full HTTP request line
85 Same failure, but server reads full HTTP request line
87
86
88 $ hg serve --config badserver.closeafterrecvbytes=40 -p $HGPORT -d --pid-file=hg.pid -E error.log
87 $ hg serve --config badserver.closeafterrecvbytes=40 -p $HGPORT -d --pid-file=hg.pid -E error.log
89 $ cat hg.pid > $DAEMON_PIDS
88 $ cat hg.pid > $DAEMON_PIDS
90 $ hg clone http://localhost:$HGPORT/ clone
89 $ hg clone http://localhost:$HGPORT/ clone
91 abort: error: bad HTTP status line: * (glob)
90 abort: error: bad HTTP status line: * (glob)
92 [255]
91 [255]
93
92
94 $ killdaemons.py $DAEMON_PIDS
93 $ killdaemons.py $DAEMON_PIDS
95
94
96 $ cat error.log
95 $ cat error.log
97 readline(40 from 65537) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
96 readline(40 from 65537) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
98 readline(7 from -1) -> (7) Accept-
97 readline(7 from -1) -> (7) Accept-
99 read limit reached; closing socket
98 read limit reached; closing socket
100
99
101 $ rm -f error.log
100 $ rm -f error.log
102
101
103 Failure on subsequent HTTP request on the same socket (cmd?batch)
102 Failure on subsequent HTTP request on the same socket (cmd?batch)
104
103
105 $ hg serve --config badserver.closeafterrecvbytes=210,223 -p $HGPORT -d --pid-file=hg.pid -E error.log
104 $ hg serve --config badserver.closeafterrecvbytes=210,223 -p $HGPORT -d --pid-file=hg.pid -E error.log
106 $ cat hg.pid > $DAEMON_PIDS
105 $ cat hg.pid > $DAEMON_PIDS
107 $ hg clone http://localhost:$HGPORT/ clone
106 $ hg clone http://localhost:$HGPORT/ clone
108 abort: error: bad HTTP status line: * (glob)
107 abort: error: bad HTTP status line: * (glob)
109 [255]
108 [255]
110
109
111 $ killdaemons.py $DAEMON_PIDS
110 $ killdaemons.py $DAEMON_PIDS
112
111
113 $ cat error.log
112 $ cat error.log
114 readline(210 from 65537) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
113 readline(210 from 65537) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
115 readline(177 from -1) -> (27) Accept-Encoding: identity\r\n
114 readline(177 from -1) -> (27) Accept-Encoding: identity\r\n
116 readline(150 from -1) -> (35) accept: application/mercurial-0.1\r\n
115 readline(150 from -1) -> (35) accept: application/mercurial-0.1\r\n
117 readline(115 from -1) -> (*) host: localhost:$HGPORT\r\n (glob)
116 readline(115 from -1) -> (*) host: localhost:$HGPORT\r\n (glob)
118 readline(* from -1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
117 readline(* from -1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
119 readline(* from -1) -> (2) \r\n (glob)
118 readline(* from -1) -> (2) \r\n (glob)
120 write(36) -> HTTP/1.1 200 Script output follows\r\n
119 write(36) -> HTTP/1.1 200 Script output follows\r\n
121 write(23) -> Server: badhttpserver\r\n
120 write(23) -> Server: badhttpserver\r\n
122 write(37) -> Date: $HTTP_DATE$\r\n
121 write(37) -> Date: $HTTP_DATE$\r\n
123 write(41) -> Content-Type: application/mercurial-0.1\r\n
122 write(41) -> Content-Type: application/mercurial-0.1\r\n
124 write(21) -> Content-Length: 450\r\n
123 write(21) -> Content-Length: 450\r\n
125 write(2) -> \r\n
124 write(2) -> \r\n
126 write(450) -> batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
125 write(450) -> batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
127 readline(4? from 65537) -> (26) GET /?cmd=batch HTTP/1.1\r\n (glob)
126 readline(4? from 65537) -> (26) GET /?cmd=batch HTTP/1.1\r\n (glob)
128 readline(1? from -1) -> (1?) Accept-Encoding* (glob)
127 readline(1? from -1) -> (1?) Accept-Encoding* (glob)
129 read limit reached; closing socket
128 read limit reached; closing socket
130 readline(223 from 65537) -> (26) GET /?cmd=batch HTTP/1.1\r\n
129 readline(223 from 65537) -> (26) GET /?cmd=batch HTTP/1.1\r\n
131 readline(197 from -1) -> (27) Accept-Encoding: identity\r\n
130 readline(197 from -1) -> (27) Accept-Encoding: identity\r\n
132 readline(170 from -1) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n
131 readline(170 from -1) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n
133 readline(141 from -1) -> (41) x-hgarg-1: cmds=heads+%3Bknown+nodes%3D\r\n
132 readline(141 from -1) -> (41) x-hgarg-1: cmds=heads+%3Bknown+nodes%3D\r\n
134 readline(100 from -1) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
133 readline(100 from -1) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
135 readline(39 from -1) -> (35) accept: application/mercurial-0.1\r\n
134 readline(39 from -1) -> (35) accept: application/mercurial-0.1\r\n
136 readline(4 from -1) -> (4) host
135 readline(4 from -1) -> (4) host
137 read limit reached; closing socket
136 read limit reached; closing socket
138
137
139 $ rm -f error.log
138 $ rm -f error.log
140
139
141 Failure to read getbundle HTTP request
140 Failure to read getbundle HTTP request
142
141
143 $ hg serve --config badserver.closeafterrecvbytes=308,317,304 -p $HGPORT -d --pid-file=hg.pid -E error.log
142 $ hg serve --config badserver.closeafterrecvbytes=308,317,304 -p $HGPORT -d --pid-file=hg.pid -E error.log
144 $ cat hg.pid > $DAEMON_PIDS
143 $ cat hg.pid > $DAEMON_PIDS
145 $ hg clone http://localhost:$HGPORT/ clone
144 $ hg clone http://localhost:$HGPORT/ clone
146 requesting all changes
145 requesting all changes
147 abort: error: bad HTTP status line: * (glob)
146 abort: error: bad HTTP status line: * (glob)
148 [255]
147 [255]
149
148
150 $ killdaemons.py $DAEMON_PIDS
149 $ killdaemons.py $DAEMON_PIDS
151
150
152 $ cat error.log
151 $ cat error.log
153 readline(1 from -1) -> (1) x (?)
152 readline(1 from -1) -> (1) x (?)
154 readline(1 from -1) -> (1) x (?)
153 readline(1 from -1) -> (1) x (?)
155 readline(308 from 65537) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
154 readline(308 from 65537) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
156 readline(275 from -1) -> (27) Accept-Encoding: identity\r\n
155 readline(275 from -1) -> (27) Accept-Encoding: identity\r\n
157 readline(248 from -1) -> (35) accept: application/mercurial-0.1\r\n
156 readline(248 from -1) -> (35) accept: application/mercurial-0.1\r\n
158 readline(213 from -1) -> (*) host: localhost:$HGPORT\r\n (glob)
157 readline(213 from -1) -> (*) host: localhost:$HGPORT\r\n (glob)
159 readline(* from -1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
158 readline(* from -1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
160 readline(* from -1) -> (2) \r\n (glob)
159 readline(* from -1) -> (2) \r\n (glob)
161 write(36) -> HTTP/1.1 200 Script output follows\r\n
160 write(36) -> HTTP/1.1 200 Script output follows\r\n
162 write(23) -> Server: badhttpserver\r\n
161 write(23) -> Server: badhttpserver\r\n
163 write(37) -> Date: $HTTP_DATE$\r\n
162 write(37) -> Date: $HTTP_DATE$\r\n
164 write(41) -> Content-Type: application/mercurial-0.1\r\n
163 write(41) -> Content-Type: application/mercurial-0.1\r\n
165 write(21) -> Content-Length: 450\r\n
164 write(21) -> Content-Length: 450\r\n
166 write(2) -> \r\n
165 write(2) -> \r\n
167 write(450) -> batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
166 write(450) -> batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
168 readline(13? from 65537) -> (26) GET /?cmd=batch HTTP/1.1\r\n (glob)
167 readline(13? from 65537) -> (26) GET /?cmd=batch HTTP/1.1\r\n (glob)
169 readline(1?? from -1) -> (27) Accept-Encoding: identity\r\n (glob)
168 readline(1?? from -1) -> (27) Accept-Encoding: identity\r\n (glob)
170 readline(8? from -1) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n (glob)
169 readline(8? from -1) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n (glob)
171 readline(5? from -1) -> (41) x-hgarg-1: cmds=heads+%3Bknown+nodes%3D\r\n (glob)
170 readline(5? from -1) -> (41) x-hgarg-1: cmds=heads+%3Bknown+nodes%3D\r\n (glob)
172 readline(1? from -1) -> (1?) x-hgproto-1:* (glob)
171 readline(1? from -1) -> (1?) x-hgproto-1:* (glob)
173 read limit reached; closing socket
172 read limit reached; closing socket
174 readline(317 from 65537) -> (26) GET /?cmd=batch HTTP/1.1\r\n
173 readline(317 from 65537) -> (26) GET /?cmd=batch HTTP/1.1\r\n
175 readline(291 from -1) -> (27) Accept-Encoding: identity\r\n
174 readline(291 from -1) -> (27) Accept-Encoding: identity\r\n
176 readline(264 from -1) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n
175 readline(264 from -1) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n
177 readline(235 from -1) -> (41) x-hgarg-1: cmds=heads+%3Bknown+nodes%3D\r\n
176 readline(235 from -1) -> (41) x-hgarg-1: cmds=heads+%3Bknown+nodes%3D\r\n
178 readline(194 from -1) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
177 readline(194 from -1) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
179 readline(133 from -1) -> (35) accept: application/mercurial-0.1\r\n
178 readline(133 from -1) -> (35) accept: application/mercurial-0.1\r\n
180 readline(98 from -1) -> (*) host: localhost:$HGPORT\r\n (glob)
179 readline(98 from -1) -> (*) host: localhost:$HGPORT\r\n (glob)
181 readline(* from -1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
180 readline(* from -1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
182 readline(* from -1) -> (2) \r\n (glob)
181 readline(* from -1) -> (2) \r\n (glob)
183 write(36) -> HTTP/1.1 200 Script output follows\r\n
182 write(36) -> HTTP/1.1 200 Script output follows\r\n
184 write(23) -> Server: badhttpserver\r\n
183 write(23) -> Server: badhttpserver\r\n
185 write(37) -> Date: $HTTP_DATE$\r\n
184 write(37) -> Date: $HTTP_DATE$\r\n
186 write(41) -> Content-Type: application/mercurial-0.1\r\n
185 write(41) -> Content-Type: application/mercurial-0.1\r\n
187 write(20) -> Content-Length: 42\r\n
186 write(20) -> Content-Length: 42\r\n
188 write(2) -> \r\n
187 write(2) -> \r\n
189 write(42) -> 96ee1d7354c4ad7372047672c36a1f561e3a6a4c\n;
188 write(42) -> 96ee1d7354c4ad7372047672c36a1f561e3a6a4c\n;
190 readline(* from 65537) -> (*) GET /?cmd=getbundle HTTP* (glob)
189 readline(* from 65537) -> (*) GET /?cmd=getbundle HTTP* (glob)
191 read limit reached; closing socket
190 read limit reached; closing socket
192 readline(304 from 65537) -> (30) GET /?cmd=getbundle HTTP/1.1\r\n
191 readline(304 from 65537) -> (30) GET /?cmd=getbundle HTTP/1.1\r\n
193 readline(274 from -1) -> (27) Accept-Encoding: identity\r\n
192 readline(274 from -1) -> (27) Accept-Encoding: identity\r\n
194 readline(247 from -1) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n
193 readline(247 from -1) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n
195 readline(218 from -1) -> (218) x-hgarg-1: bookmarks=1&bundlecaps=HG20%2Cbundle2%3DHG20%250Abookmarks%250Achangegroup%253D01%252C02%250Adigests%253Dmd5%252Csha1%252Csha512%250Aerror%253Dabort%252Cunsupportedcontent%252Cpushraced%252Cpushkey%250Ahgtag
194 readline(218 from -1) -> (218) x-hgarg-1: bookmarks=1&bundlecaps=HG20%2Cbundle2%3DHG20%250Abookmarks%250Achangegroup%253D01%252C02%250Adigests%253Dmd5%252Csha1%252Csha512%250Aerror%253Dabort%252Cunsupportedcontent%252Cpushraced%252Cpushkey%250Ahgtag
196 read limit reached; closing socket
195 read limit reached; closing socket
197
196
198 $ rm -f error.log
197 $ rm -f error.log
199
198
200 Now do a variation using POST to send arguments
199 Now do a variation using POST to send arguments
201
200
202 $ hg serve --config experimental.httppostargs=true --config badserver.closeafterrecvbytes=329,344 -p $HGPORT -d --pid-file=hg.pid -E error.log
201 $ hg serve --config experimental.httppostargs=true --config badserver.closeafterrecvbytes=329,344 -p $HGPORT -d --pid-file=hg.pid -E error.log
203 $ cat hg.pid > $DAEMON_PIDS
202 $ cat hg.pid > $DAEMON_PIDS
204
203
205 $ hg clone http://localhost:$HGPORT/ clone
204 $ hg clone http://localhost:$HGPORT/ clone
206 abort: error: bad HTTP status line: * (glob)
205 abort: error: bad HTTP status line: * (glob)
207 [255]
206 [255]
208
207
209 $ killdaemons.py $DAEMON_PIDS
208 $ killdaemons.py $DAEMON_PIDS
210
209
211 $ cat error.log
210 $ cat error.log
212 readline(329 from 65537) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
211 readline(329 from 65537) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
213 readline(296 from -1) -> (27) Accept-Encoding: identity\r\n
212 readline(296 from -1) -> (27) Accept-Encoding: identity\r\n
214 readline(269 from -1) -> (35) accept: application/mercurial-0.1\r\n
213 readline(269 from -1) -> (35) accept: application/mercurial-0.1\r\n
215 readline(234 from -1) -> (2?) host: localhost:$HGPORT\r\n (glob)
214 readline(234 from -1) -> (2?) host: localhost:$HGPORT\r\n (glob)
216 readline(* from -1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
215 readline(* from -1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
217 readline(* from -1) -> (2) \r\n (glob)
216 readline(* from -1) -> (2) \r\n (glob)
218 write(36) -> HTTP/1.1 200 Script output follows\r\n
217 write(36) -> HTTP/1.1 200 Script output follows\r\n
219 write(23) -> Server: badhttpserver\r\n
218 write(23) -> Server: badhttpserver\r\n
220 write(37) -> Date: $HTTP_DATE$\r\n
219 write(37) -> Date: $HTTP_DATE$\r\n
221 write(41) -> Content-Type: application/mercurial-0.1\r\n
220 write(41) -> Content-Type: application/mercurial-0.1\r\n
222 write(21) -> Content-Length: 463\r\n
221 write(21) -> Content-Length: 463\r\n
223 write(2) -> \r\n
222 write(2) -> \r\n
224 write(463) -> batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx httppostargs known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
223 write(463) -> batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx httppostargs known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
225 readline(1?? from 65537) -> (27) POST /?cmd=batch HTTP/1.1\r\n (glob)
224 readline(1?? from 65537) -> (27) POST /?cmd=batch HTTP/1.1\r\n (glob)
226 readline(1?? from -1) -> (27) Accept-Encoding: identity\r\n (glob)
225 readline(1?? from -1) -> (27) Accept-Encoding: identity\r\n (glob)
227 readline(1?? from -1) -> (41) content-type: application/mercurial-0.1\r\n (glob)
226 readline(1?? from -1) -> (41) content-type: application/mercurial-0.1\r\n (glob)
228 readline(6? from -1) -> (33) vary: X-HgArgs-Post,X-HgProto-1\r\n (glob)
227 readline(6? from -1) -> (33) vary: X-HgArgs-Post,X-HgProto-1\r\n (glob)
229 readline(3? from -1) -> (19) x-hgargs-post: 28\r\n (glob)
228 readline(3? from -1) -> (19) x-hgargs-post: 28\r\n (glob)
230 readline(1? from -1) -> (1?) x-hgproto-1: * (glob)
229 readline(1? from -1) -> (1?) x-hgproto-1: * (glob)
231 read limit reached; closing socket
230 read limit reached; closing socket
232 readline(344 from 65537) -> (27) POST /?cmd=batch HTTP/1.1\r\n
231 readline(344 from 65537) -> (27) POST /?cmd=batch HTTP/1.1\r\n
233 readline(317 from -1) -> (27) Accept-Encoding: identity\r\n
232 readline(317 from -1) -> (27) Accept-Encoding: identity\r\n
234 readline(290 from -1) -> (41) content-type: application/mercurial-0.1\r\n
233 readline(290 from -1) -> (41) content-type: application/mercurial-0.1\r\n
235 readline(249 from -1) -> (33) vary: X-HgArgs-Post,X-HgProto-1\r\n
234 readline(249 from -1) -> (33) vary: X-HgArgs-Post,X-HgProto-1\r\n
236 readline(216 from -1) -> (19) x-hgargs-post: 28\r\n
235 readline(216 from -1) -> (19) x-hgargs-post: 28\r\n
237 readline(197 from -1) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
236 readline(197 from -1) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
238 readline(136 from -1) -> (35) accept: application/mercurial-0.1\r\n
237 readline(136 from -1) -> (35) accept: application/mercurial-0.1\r\n
239 readline(101 from -1) -> (20) content-length: 28\r\n
238 readline(101 from -1) -> (20) content-length: 28\r\n
240 readline(81 from -1) -> (*) host: localhost:$HGPORT\r\n (glob)
239 readline(81 from -1) -> (*) host: localhost:$HGPORT\r\n (glob)
241 readline(* from -1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
240 readline(* from -1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n (glob)
242 readline(* from -1) -> (2) \r\n (glob)
241 readline(* from -1) -> (2) \r\n (glob)
243 read(* from 28) -> (*) cmds=* (glob)
242 read(* from 28) -> (*) cmds=* (glob)
244 read limit reached, closing socket
243 read limit reached, closing socket
245 write(36) -> HTTP/1.1 500 Internal Server Error\r\n
244 write(36) -> HTTP/1.1 500 Internal Server Error\r\n
246
245
247 $ rm -f error.log
246 $ rm -f error.log
248
247
249 Now move on to partial server responses
248 Now move on to partial server responses
250
249
251 Server sends a single character from the HTTP response line
250 Server sends a single character from the HTTP response line
252
251
253 $ hg serve --config badserver.closeaftersendbytes=1 -p $HGPORT -d --pid-file=hg.pid -E error.log
252 $ hg serve --config badserver.closeaftersendbytes=1 -p $HGPORT -d --pid-file=hg.pid -E error.log
254 $ cat hg.pid > $DAEMON_PIDS
253 $ cat hg.pid > $DAEMON_PIDS
255
254
256 $ hg clone http://localhost:$HGPORT/ clone
255 $ hg clone http://localhost:$HGPORT/ clone
257 abort: error: bad HTTP status line: H
256 abort: error: bad HTTP status line: H
258 [255]
257 [255]
259
258
260 $ killdaemons.py $DAEMON_PIDS
259 $ killdaemons.py $DAEMON_PIDS
261
260
262 $ cat error.log
261 $ cat error.log
263 readline(65537) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
262 readline(65537) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
264 readline(-1) -> (27) Accept-Encoding: identity\r\n
263 readline(-1) -> (27) Accept-Encoding: identity\r\n
265 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
264 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
266 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
265 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
267 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
266 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
268 readline(-1) -> (2) \r\n
267 readline(-1) -> (2) \r\n
269 write(1 from 36) -> (0) H
268 write(1 from 36) -> (0) H
270 write limit reached; closing socket
269 write limit reached; closing socket
271 write(36) -> HTTP/1.1 500 Internal Server Error\r\n
270 write(36) -> HTTP/1.1 500 Internal Server Error\r\n
272
271
273 $ rm -f error.log
272 $ rm -f error.log
274
273
275 Server sends an incomplete capabilities response body
274 Server sends an incomplete capabilities response body
276
275
277 $ hg serve --config badserver.closeaftersendbytes=180 -p $HGPORT -d --pid-file=hg.pid -E error.log
276 $ hg serve --config badserver.closeaftersendbytes=180 -p $HGPORT -d --pid-file=hg.pid -E error.log
278 $ cat hg.pid > $DAEMON_PIDS
277 $ cat hg.pid > $DAEMON_PIDS
279
278
280 $ hg clone http://localhost:$HGPORT/ clone
279 $ hg clone http://localhost:$HGPORT/ clone
281 abort: HTTP request error (incomplete response; expected 450 bytes got 20)
280 abort: HTTP request error (incomplete response; expected 450 bytes got 20)
282 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
281 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
283 [255]
282 [255]
284
283
285 $ killdaemons.py $DAEMON_PIDS
284 $ killdaemons.py $DAEMON_PIDS
286
285
287 $ cat error.log
286 $ cat error.log
288 readline(65537) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
287 readline(65537) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
289 readline(-1) -> (27) Accept-Encoding: identity\r\n
288 readline(-1) -> (27) Accept-Encoding: identity\r\n
290 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
289 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
291 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
290 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
292 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
291 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
293 readline(-1) -> (2) \r\n
292 readline(-1) -> (2) \r\n
294 write(36 from 36) -> (144) HTTP/1.1 200 Script output follows\r\n
293 write(36 from 36) -> (144) HTTP/1.1 200 Script output follows\r\n
295 write(23 from 23) -> (121) Server: badhttpserver\r\n
294 write(23 from 23) -> (121) Server: badhttpserver\r\n
296 write(37 from 37) -> (84) Date: $HTTP_DATE$\r\n
295 write(37 from 37) -> (84) Date: $HTTP_DATE$\r\n
297 write(41 from 41) -> (43) Content-Type: application/mercurial-0.1\r\n
296 write(41 from 41) -> (43) Content-Type: application/mercurial-0.1\r\n
298 write(21 from 21) -> (22) Content-Length: 450\r\n
297 write(21 from 21) -> (22) Content-Length: 450\r\n
299 write(2 from 2) -> (20) \r\n
298 write(2 from 2) -> (20) \r\n
300 write(20 from 450) -> (0) batch branchmap bund
299 write(20 from 450) -> (0) batch branchmap bund
301 write limit reached; closing socket
300 write limit reached; closing socket
302
301
303 $ rm -f error.log
302 $ rm -f error.log
304
303
305 Server sends incomplete headers for batch request
304 Server sends incomplete headers for batch request
306
305
307 $ hg serve --config badserver.closeaftersendbytes=728 -p $HGPORT -d --pid-file=hg.pid -E error.log
306 $ hg serve --config badserver.closeaftersendbytes=728 -p $HGPORT -d --pid-file=hg.pid -E error.log
308 $ cat hg.pid > $DAEMON_PIDS
307 $ cat hg.pid > $DAEMON_PIDS
309
308
310 TODO this output is horrible
309 TODO this output is horrible
311
310
312 $ hg clone http://localhost:$HGPORT/ clone
311 $ hg clone http://localhost:$HGPORT/ clone
313 abort: 'http://localhost:$HGPORT/' does not appear to be an hg repository:
312 abort: 'http://localhost:$HGPORT/' does not appear to be an hg repository:
314 ---%<--- (applicat)
313 ---%<--- (applicat)
315
314
316 ---%<---
315 ---%<---
317 !
316 !
318 [255]
317 [255]
319
318
320 $ killdaemons.py $DAEMON_PIDS
319 $ killdaemons.py $DAEMON_PIDS
321
320
322 $ cat error.log
321 $ cat error.log
323 readline(65537) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
322 readline(65537) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
324 readline(-1) -> (27) Accept-Encoding: identity\r\n
323 readline(-1) -> (27) Accept-Encoding: identity\r\n
325 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
324 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
326 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
325 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
327 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
326 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
328 readline(-1) -> (2) \r\n
327 readline(-1) -> (2) \r\n
329 write(36 from 36) -> (692) HTTP/1.1 200 Script output follows\r\n
328 write(36 from 36) -> (692) HTTP/1.1 200 Script output follows\r\n
330 write(23 from 23) -> (669) Server: badhttpserver\r\n
329 write(23 from 23) -> (669) Server: badhttpserver\r\n
331 write(37 from 37) -> (632) Date: $HTTP_DATE$\r\n
330 write(37 from 37) -> (632) Date: $HTTP_DATE$\r\n
332 write(41 from 41) -> (591) Content-Type: application/mercurial-0.1\r\n
331 write(41 from 41) -> (591) Content-Type: application/mercurial-0.1\r\n
333 write(21 from 21) -> (570) Content-Length: 450\r\n
332 write(21 from 21) -> (570) Content-Length: 450\r\n
334 write(2 from 2) -> (568) \r\n
333 write(2 from 2) -> (568) \r\n
335 write(450 from 450) -> (118) batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
334 write(450 from 450) -> (118) batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
336 readline(65537) -> (26) GET /?cmd=batch HTTP/1.1\r\n
335 readline(65537) -> (26) GET /?cmd=batch HTTP/1.1\r\n
337 readline(-1) -> (27) Accept-Encoding: identity\r\n
336 readline(-1) -> (27) Accept-Encoding: identity\r\n
338 readline(-1) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n
337 readline(-1) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n
339 readline(-1) -> (41) x-hgarg-1: cmds=heads+%3Bknown+nodes%3D\r\n
338 readline(-1) -> (41) x-hgarg-1: cmds=heads+%3Bknown+nodes%3D\r\n
340 readline(-1) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
339 readline(-1) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
341 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
340 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
342 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
341 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
343 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
342 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
344 readline(-1) -> (2) \r\n
343 readline(-1) -> (2) \r\n
345 write(36 from 36) -> (82) HTTP/1.1 200 Script output follows\r\n
344 write(36 from 36) -> (82) HTTP/1.1 200 Script output follows\r\n
346 write(23 from 23) -> (59) Server: badhttpserver\r\n
345 write(23 from 23) -> (59) Server: badhttpserver\r\n
347 write(37 from 37) -> (22) Date: $HTTP_DATE$\r\n
346 write(37 from 37) -> (22) Date: $HTTP_DATE$\r\n
348 write(22 from 41) -> (0) Content-Type: applicat
347 write(22 from 41) -> (0) Content-Type: applicat
349 write limit reached; closing socket
348 write limit reached; closing socket
350 write(36) -> HTTP/1.1 500 Internal Server Error\r\n
349 write(36) -> HTTP/1.1 500 Internal Server Error\r\n
351
350
352 $ rm -f error.log
351 $ rm -f error.log
353
352
354 Server sends an incomplete HTTP response body to batch request
353 Server sends an incomplete HTTP response body to batch request
355
354
356 $ hg serve --config badserver.closeaftersendbytes=793 -p $HGPORT -d --pid-file=hg.pid -E error.log
355 $ hg serve --config badserver.closeaftersendbytes=793 -p $HGPORT -d --pid-file=hg.pid -E error.log
357 $ cat hg.pid > $DAEMON_PIDS
356 $ cat hg.pid > $DAEMON_PIDS
358
357
359 TODO client spews a stack due to uncaught ValueError in batch.results()
358 TODO client spews a stack due to uncaught ValueError in batch.results()
360 #if no-chg
359 #if no-chg
361 $ hg clone http://localhost:$HGPORT/ clone 2> /dev/null
360 $ hg clone http://localhost:$HGPORT/ clone 2> /dev/null
362 [1]
361 [1]
363 #else
362 #else
364 $ hg clone http://localhost:$HGPORT/ clone 2> /dev/null
363 $ hg clone http://localhost:$HGPORT/ clone 2> /dev/null
365 [255]
364 [255]
366 #endif
365 #endif
367
366
368 $ killdaemons.py $DAEMON_PIDS
367 $ killdaemons.py $DAEMON_PIDS
369
368
370 $ cat error.log
369 $ cat error.log
371 readline(65537) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
370 readline(65537) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
372 readline(-1) -> (27) Accept-Encoding: identity\r\n
371 readline(-1) -> (27) Accept-Encoding: identity\r\n
373 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
372 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
374 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
373 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
375 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
374 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
376 readline(-1) -> (2) \r\n
375 readline(-1) -> (2) \r\n
377 write(36 from 36) -> (757) HTTP/1.1 200 Script output follows\r\n
376 write(36 from 36) -> (757) HTTP/1.1 200 Script output follows\r\n
378 write(23 from 23) -> (734) Server: badhttpserver\r\n
377 write(23 from 23) -> (734) Server: badhttpserver\r\n
379 write(37 from 37) -> (697) Date: $HTTP_DATE$\r\n
378 write(37 from 37) -> (697) Date: $HTTP_DATE$\r\n
380 write(41 from 41) -> (656) Content-Type: application/mercurial-0.1\r\n
379 write(41 from 41) -> (656) Content-Type: application/mercurial-0.1\r\n
381 write(21 from 21) -> (635) Content-Length: 450\r\n
380 write(21 from 21) -> (635) Content-Length: 450\r\n
382 write(2 from 2) -> (633) \r\n
381 write(2 from 2) -> (633) \r\n
383 write(450 from 450) -> (183) batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
382 write(450 from 450) -> (183) batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
384 readline(65537) -> (26) GET /?cmd=batch HTTP/1.1\r\n
383 readline(65537) -> (26) GET /?cmd=batch HTTP/1.1\r\n
385 readline(-1) -> (27) Accept-Encoding: identity\r\n
384 readline(-1) -> (27) Accept-Encoding: identity\r\n
386 readline(-1) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n
385 readline(-1) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n
387 readline(-1) -> (41) x-hgarg-1: cmds=heads+%3Bknown+nodes%3D\r\n
386 readline(-1) -> (41) x-hgarg-1: cmds=heads+%3Bknown+nodes%3D\r\n
388 readline(-1) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
387 readline(-1) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
389 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
388 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
390 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
389 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
391 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
390 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
392 readline(-1) -> (2) \r\n
391 readline(-1) -> (2) \r\n
393 write(36 from 36) -> (147) HTTP/1.1 200 Script output follows\r\n
392 write(36 from 36) -> (147) HTTP/1.1 200 Script output follows\r\n
394 write(23 from 23) -> (124) Server: badhttpserver\r\n
393 write(23 from 23) -> (124) Server: badhttpserver\r\n
395 write(37 from 37) -> (87) Date: $HTTP_DATE$\r\n
394 write(37 from 37) -> (87) Date: $HTTP_DATE$\r\n
396 write(41 from 41) -> (46) Content-Type: application/mercurial-0.1\r\n
395 write(41 from 41) -> (46) Content-Type: application/mercurial-0.1\r\n
397 write(20 from 20) -> (26) Content-Length: 42\r\n
396 write(20 from 20) -> (26) Content-Length: 42\r\n
398 write(2 from 2) -> (24) \r\n
397 write(2 from 2) -> (24) \r\n
399 write(24 from 42) -> (0) 96ee1d7354c4ad7372047672
398 write(24 from 42) -> (0) 96ee1d7354c4ad7372047672
400 write limit reached; closing socket
399 write limit reached; closing socket
401
400
402 $ rm -f error.log
401 $ rm -f error.log
403
402
404 Server sends incomplete headers for getbundle response
403 Server sends incomplete headers for getbundle response
405
404
406 $ hg serve --config badserver.closeaftersendbytes=940 -p $HGPORT -d --pid-file=hg.pid -E error.log
405 $ hg serve --config badserver.closeaftersendbytes=940 -p $HGPORT -d --pid-file=hg.pid -E error.log
407 $ cat hg.pid > $DAEMON_PIDS
406 $ cat hg.pid > $DAEMON_PIDS
408
407
409 TODO this output is terrible
408 TODO this output is terrible
410
409
411 $ hg clone http://localhost:$HGPORT/ clone
410 $ hg clone http://localhost:$HGPORT/ clone
412 requesting all changes
411 requesting all changes
413 abort: 'http://localhost:$HGPORT/' does not appear to be an hg repository:
412 abort: 'http://localhost:$HGPORT/' does not appear to be an hg repository:
414 ---%<--- (application/mercuri)
413 ---%<--- (application/mercuri)
415
414
416 ---%<---
415 ---%<---
417 !
416 !
418 [255]
417 [255]
419
418
420 $ killdaemons.py $DAEMON_PIDS
419 $ killdaemons.py $DAEMON_PIDS
421
420
422 $ cat error.log
421 $ cat error.log
423 readline(65537) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
422 readline(65537) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
424 readline(-1) -> (27) Accept-Encoding: identity\r\n
423 readline(-1) -> (27) Accept-Encoding: identity\r\n
425 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
424 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
426 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
425 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
427 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
426 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
428 readline(-1) -> (2) \r\n
427 readline(-1) -> (2) \r\n
429 write(36 from 36) -> (904) HTTP/1.1 200 Script output follows\r\n
428 write(36 from 36) -> (904) HTTP/1.1 200 Script output follows\r\n
430 write(23 from 23) -> (881) Server: badhttpserver\r\n
429 write(23 from 23) -> (881) Server: badhttpserver\r\n
431 write(37 from 37) -> (844) Date: $HTTP_DATE$\r\n
430 write(37 from 37) -> (844) Date: $HTTP_DATE$\r\n
432 write(41 from 41) -> (803) Content-Type: application/mercurial-0.1\r\n
431 write(41 from 41) -> (803) Content-Type: application/mercurial-0.1\r\n
433 write(21 from 21) -> (782) Content-Length: 450\r\n
432 write(21 from 21) -> (782) Content-Length: 450\r\n
434 write(2 from 2) -> (780) \r\n
433 write(2 from 2) -> (780) \r\n
435 write(450 from 450) -> (330) batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
434 write(450 from 450) -> (330) batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
436 readline(65537) -> (26) GET /?cmd=batch HTTP/1.1\r\n
435 readline(65537) -> (26) GET /?cmd=batch HTTP/1.1\r\n
437 readline(-1) -> (27) Accept-Encoding: identity\r\n
436 readline(-1) -> (27) Accept-Encoding: identity\r\n
438 readline(-1) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n
437 readline(-1) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n
439 readline(-1) -> (41) x-hgarg-1: cmds=heads+%3Bknown+nodes%3D\r\n
438 readline(-1) -> (41) x-hgarg-1: cmds=heads+%3Bknown+nodes%3D\r\n
440 readline(-1) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
439 readline(-1) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
441 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
440 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
442 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
441 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
443 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
442 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
444 readline(-1) -> (2) \r\n
443 readline(-1) -> (2) \r\n
445 write(36 from 36) -> (294) HTTP/1.1 200 Script output follows\r\n
444 write(36 from 36) -> (294) HTTP/1.1 200 Script output follows\r\n
446 write(23 from 23) -> (271) Server: badhttpserver\r\n
445 write(23 from 23) -> (271) Server: badhttpserver\r\n
447 write(37 from 37) -> (234) Date: $HTTP_DATE$\r\n
446 write(37 from 37) -> (234) Date: $HTTP_DATE$\r\n
448 write(41 from 41) -> (193) Content-Type: application/mercurial-0.1\r\n
447 write(41 from 41) -> (193) Content-Type: application/mercurial-0.1\r\n
449 write(20 from 20) -> (173) Content-Length: 42\r\n
448 write(20 from 20) -> (173) Content-Length: 42\r\n
450 write(2 from 2) -> (171) \r\n
449 write(2 from 2) -> (171) \r\n
451 write(42 from 42) -> (129) 96ee1d7354c4ad7372047672c36a1f561e3a6a4c\n;
450 write(42 from 42) -> (129) 96ee1d7354c4ad7372047672c36a1f561e3a6a4c\n;
452 readline(65537) -> (30) GET /?cmd=getbundle HTTP/1.1\r\n
451 readline(65537) -> (30) GET /?cmd=getbundle HTTP/1.1\r\n
453 readline(-1) -> (27) Accept-Encoding: identity\r\n
452 readline(-1) -> (27) Accept-Encoding: identity\r\n
454 readline(-1) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n
453 readline(-1) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n
455 readline(-1) -> (461) x-hgarg-1: bookmarks=1&bundlecaps=HG20%2Cbundle2%3DHG20%250Abookmarks%250Achangegroup%253D01%252C02%250Adigests%253Dmd5%252Csha1%252Csha512%250Aerror%253Dabort%252Cunsupportedcontent%252Cpushraced%252Cpushkey%250Ahgtagsfnodes%250Alistkeys%250Apushkey%250Aremote-changegroup%253Dhttp%252Chttps%250Arev-branch-cache%250Astream%253Dv2&cg=1&common=0000000000000000000000000000000000000000&heads=96ee1d7354c4ad7372047672c36a1f561e3a6a4c&listkeys=phases%2Cbookmarks\r\n
454 readline(-1) -> (461) x-hgarg-1: bookmarks=1&bundlecaps=HG20%2Cbundle2%3DHG20%250Abookmarks%250Achangegroup%253D01%252C02%250Adigests%253Dmd5%252Csha1%252Csha512%250Aerror%253Dabort%252Cunsupportedcontent%252Cpushraced%252Cpushkey%250Ahgtagsfnodes%250Alistkeys%250Apushkey%250Aremote-changegroup%253Dhttp%252Chttps%250Arev-branch-cache%250Astream%253Dv2&cg=1&common=0000000000000000000000000000000000000000&heads=96ee1d7354c4ad7372047672c36a1f561e3a6a4c&listkeys=phases%2Cbookmarks\r\n
456 readline(-1) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
455 readline(-1) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
457 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
456 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
458 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
457 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
459 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
458 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
460 readline(-1) -> (2) \r\n
459 readline(-1) -> (2) \r\n
461 write(36 from 36) -> (93) HTTP/1.1 200 Script output follows\r\n
460 write(36 from 36) -> (93) HTTP/1.1 200 Script output follows\r\n
462 write(23 from 23) -> (70) Server: badhttpserver\r\n
461 write(23 from 23) -> (70) Server: badhttpserver\r\n
463 write(37 from 37) -> (33) Date: $HTTP_DATE$\r\n
462 write(37 from 37) -> (33) Date: $HTTP_DATE$\r\n
464 write(33 from 41) -> (0) Content-Type: application/mercuri
463 write(33 from 41) -> (0) Content-Type: application/mercuri
465 write limit reached; closing socket
464 write limit reached; closing socket
466 write(36) -> HTTP/1.1 500 Internal Server Error\r\n
465 write(36) -> HTTP/1.1 500 Internal Server Error\r\n
467
466
468 $ rm -f error.log
467 $ rm -f error.log
469
468
470 Server stops before it sends transfer encoding
469 Server stops before it sends transfer encoding
471
470
472 $ hg serve --config badserver.closeaftersendbytes=973 -p $HGPORT -d --pid-file=hg.pid -E error.log
471 $ hg serve --config badserver.closeaftersendbytes=973 -p $HGPORT -d --pid-file=hg.pid -E error.log
473 $ cat hg.pid > $DAEMON_PIDS
472 $ cat hg.pid > $DAEMON_PIDS
474
473
475 $ hg clone http://localhost:$HGPORT/ clone
474 $ hg clone http://localhost:$HGPORT/ clone
476 requesting all changes
475 requesting all changes
477 abort: stream ended unexpectedly (got 0 bytes, expected 1)
476 abort: stream ended unexpectedly (got 0 bytes, expected 1)
478 [255]
477 [255]
479
478
480 $ killdaemons.py $DAEMON_PIDS
479 $ killdaemons.py $DAEMON_PIDS
481
480
482 $ tail -4 error.log
481 $ tail -4 error.log
483 write(41 from 41) -> (25) Content-Type: application/mercurial-0.2\r\n
482 write(41 from 41) -> (25) Content-Type: application/mercurial-0.2\r\n
484 write(25 from 28) -> (0) Transfer-Encoding: chunke
483 write(25 from 28) -> (0) Transfer-Encoding: chunke
485 write limit reached; closing socket
484 write limit reached; closing socket
486 write(36) -> HTTP/1.1 500 Internal Server Error\r\n
485 write(36) -> HTTP/1.1 500 Internal Server Error\r\n
487
486
488 $ rm -f error.log
487 $ rm -f error.log
489
488
490 Server sends empty HTTP body for getbundle
489 Server sends empty HTTP body for getbundle
491
490
492 $ hg serve --config badserver.closeaftersendbytes=978 -p $HGPORT -d --pid-file=hg.pid -E error.log
491 $ hg serve --config badserver.closeaftersendbytes=978 -p $HGPORT -d --pid-file=hg.pid -E error.log
493 $ cat hg.pid > $DAEMON_PIDS
492 $ cat hg.pid > $DAEMON_PIDS
494
493
495 $ hg clone http://localhost:$HGPORT/ clone
494 $ hg clone http://localhost:$HGPORT/ clone
496 requesting all changes
495 requesting all changes
497 abort: HTTP request error (incomplete response)
496 abort: HTTP request error (incomplete response)
498 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
497 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
499 [255]
498 [255]
500
499
501 $ killdaemons.py $DAEMON_PIDS
500 $ killdaemons.py $DAEMON_PIDS
502
501
503 $ cat error.log
502 $ cat error.log
504 readline(65537) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
503 readline(65537) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
505 readline(-1) -> (27) Accept-Encoding: identity\r\n
504 readline(-1) -> (27) Accept-Encoding: identity\r\n
506 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
505 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
507 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
506 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
508 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
507 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
509 readline(-1) -> (2) \r\n
508 readline(-1) -> (2) \r\n
510 write(36 from 36) -> (942) HTTP/1.1 200 Script output follows\r\n
509 write(36 from 36) -> (942) HTTP/1.1 200 Script output follows\r\n
511 write(23 from 23) -> (919) Server: badhttpserver\r\n
510 write(23 from 23) -> (919) Server: badhttpserver\r\n
512 write(37 from 37) -> (882) Date: $HTTP_DATE$\r\n
511 write(37 from 37) -> (882) Date: $HTTP_DATE$\r\n
513 write(41 from 41) -> (841) Content-Type: application/mercurial-0.1\r\n
512 write(41 from 41) -> (841) Content-Type: application/mercurial-0.1\r\n
514 write(21 from 21) -> (820) Content-Length: 450\r\n
513 write(21 from 21) -> (820) Content-Length: 450\r\n
515 write(2 from 2) -> (818) \r\n
514 write(2 from 2) -> (818) \r\n
516 write(450 from 450) -> (368) batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
515 write(450 from 450) -> (368) batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
517 readline(65537) -> (26) GET /?cmd=batch HTTP/1.1\r\n
516 readline(65537) -> (26) GET /?cmd=batch HTTP/1.1\r\n
518 readline(-1) -> (27) Accept-Encoding: identity\r\n
517 readline(-1) -> (27) Accept-Encoding: identity\r\n
519 readline(-1) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n
518 readline(-1) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n
520 readline(-1) -> (41) x-hgarg-1: cmds=heads+%3Bknown+nodes%3D\r\n
519 readline(-1) -> (41) x-hgarg-1: cmds=heads+%3Bknown+nodes%3D\r\n
521 readline(-1) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
520 readline(-1) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
522 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
521 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
523 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
522 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
524 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
523 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
525 readline(-1) -> (2) \r\n
524 readline(-1) -> (2) \r\n
526 write(36 from 36) -> (332) HTTP/1.1 200 Script output follows\r\n
525 write(36 from 36) -> (332) HTTP/1.1 200 Script output follows\r\n
527 write(23 from 23) -> (309) Server: badhttpserver\r\n
526 write(23 from 23) -> (309) Server: badhttpserver\r\n
528 write(37 from 37) -> (272) Date: $HTTP_DATE$\r\n
527 write(37 from 37) -> (272) Date: $HTTP_DATE$\r\n
529 write(41 from 41) -> (231) Content-Type: application/mercurial-0.1\r\n
528 write(41 from 41) -> (231) Content-Type: application/mercurial-0.1\r\n
530 write(20 from 20) -> (211) Content-Length: 42\r\n
529 write(20 from 20) -> (211) Content-Length: 42\r\n
531 write(2 from 2) -> (209) \r\n
530 write(2 from 2) -> (209) \r\n
532 write(42 from 42) -> (167) 96ee1d7354c4ad7372047672c36a1f561e3a6a4c\n;
531 write(42 from 42) -> (167) 96ee1d7354c4ad7372047672c36a1f561e3a6a4c\n;
533 readline(65537) -> (30) GET /?cmd=getbundle HTTP/1.1\r\n
532 readline(65537) -> (30) GET /?cmd=getbundle HTTP/1.1\r\n
534 readline(-1) -> (27) Accept-Encoding: identity\r\n
533 readline(-1) -> (27) Accept-Encoding: identity\r\n
535 readline(-1) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n
534 readline(-1) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n
536 readline(-1) -> (461) x-hgarg-1: bookmarks=1&bundlecaps=HG20%2Cbundle2%3DHG20%250Abookmarks%250Achangegroup%253D01%252C02%250Adigests%253Dmd5%252Csha1%252Csha512%250Aerror%253Dabort%252Cunsupportedcontent%252Cpushraced%252Cpushkey%250Ahgtagsfnodes%250Alistkeys%250Apushkey%250Aremote-changegroup%253Dhttp%252Chttps%250Arev-branch-cache%250Astream%253Dv2&cg=1&common=0000000000000000000000000000000000000000&heads=96ee1d7354c4ad7372047672c36a1f561e3a6a4c&listkeys=phases%2Cbookmarks\r\n
535 readline(-1) -> (461) x-hgarg-1: bookmarks=1&bundlecaps=HG20%2Cbundle2%3DHG20%250Abookmarks%250Achangegroup%253D01%252C02%250Adigests%253Dmd5%252Csha1%252Csha512%250Aerror%253Dabort%252Cunsupportedcontent%252Cpushraced%252Cpushkey%250Ahgtagsfnodes%250Alistkeys%250Apushkey%250Aremote-changegroup%253Dhttp%252Chttps%250Arev-branch-cache%250Astream%253Dv2&cg=1&common=0000000000000000000000000000000000000000&heads=96ee1d7354c4ad7372047672c36a1f561e3a6a4c&listkeys=phases%2Cbookmarks\r\n
537 readline(-1) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
536 readline(-1) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
538 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
537 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
539 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
538 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
540 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
539 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
541 readline(-1) -> (2) \r\n
540 readline(-1) -> (2) \r\n
542 write(36 from 36) -> (131) HTTP/1.1 200 Script output follows\r\n
541 write(36 from 36) -> (131) HTTP/1.1 200 Script output follows\r\n
543 write(23 from 23) -> (108) Server: badhttpserver\r\n
542 write(23 from 23) -> (108) Server: badhttpserver\r\n
544 write(37 from 37) -> (71) Date: $HTTP_DATE$\r\n
543 write(37 from 37) -> (71) Date: $HTTP_DATE$\r\n
545 write(41 from 41) -> (30) Content-Type: application/mercurial-0.2\r\n
544 write(41 from 41) -> (30) Content-Type: application/mercurial-0.2\r\n
546 write(28 from 28) -> (2) Transfer-Encoding: chunked\r\n
545 write(28 from 28) -> (2) Transfer-Encoding: chunked\r\n
547 write(2 from 2) -> (0) \r\n
546 write(2 from 2) -> (0) \r\n
548 write limit reached; closing socket
547 write limit reached; closing socket
549 write(36) -> HTTP/1.1 500 Internal Server Error\r\n
548 write(36) -> HTTP/1.1 500 Internal Server Error\r\n
550
549
551 $ rm -f error.log
550 $ rm -f error.log
552
551
553 Server sends partial compression string
552 Server sends partial compression string
554
553
555 $ hg serve --config badserver.closeaftersendbytes=1002 -p $HGPORT -d --pid-file=hg.pid -E error.log
554 $ hg serve --config badserver.closeaftersendbytes=1002 -p $HGPORT -d --pid-file=hg.pid -E error.log
556 $ cat hg.pid > $DAEMON_PIDS
555 $ cat hg.pid > $DAEMON_PIDS
557
556
558 $ hg clone http://localhost:$HGPORT/ clone
557 $ hg clone http://localhost:$HGPORT/ clone
559 requesting all changes
558 requesting all changes
560 abort: HTTP request error (incomplete response)
559 abort: HTTP request error (incomplete response)
561 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
560 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
562 [255]
561 [255]
563
562
564 $ killdaemons.py $DAEMON_PIDS
563 $ killdaemons.py $DAEMON_PIDS
565
564
566 $ cat error.log
565 $ cat error.log
567 readline(65537) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
566 readline(65537) -> (33) GET /?cmd=capabilities HTTP/1.1\r\n
568 readline(-1) -> (27) Accept-Encoding: identity\r\n
567 readline(-1) -> (27) Accept-Encoding: identity\r\n
569 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
568 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
570 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
569 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
571 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
570 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
572 readline(-1) -> (2) \r\n
571 readline(-1) -> (2) \r\n
573 write(36 from 36) -> (966) HTTP/1.1 200 Script output follows\r\n
572 write(36 from 36) -> (966) HTTP/1.1 200 Script output follows\r\n
574 write(23 from 23) -> (943) Server: badhttpserver\r\n
573 write(23 from 23) -> (943) Server: badhttpserver\r\n
575 write(37 from 37) -> (906) Date: $HTTP_DATE$\r\n
574 write(37 from 37) -> (906) Date: $HTTP_DATE$\r\n
576 write(41 from 41) -> (865) Content-Type: application/mercurial-0.1\r\n
575 write(41 from 41) -> (865) Content-Type: application/mercurial-0.1\r\n
577 write(21 from 21) -> (844) Content-Length: 450\r\n
576 write(21 from 21) -> (844) Content-Length: 450\r\n
578 write(2 from 2) -> (842) \r\n
577 write(2 from 2) -> (842) \r\n
579 write(450 from 450) -> (392) batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
578 write(450 from 450) -> (392) batch branchmap $USUAL_BUNDLE2_CAPS_NO_PHASES$ changegroupsubset compression=none getbundle httpheader=1024 httpmediatype=0.1rx,0.1tx,0.2tx known lookup pushkey streamreqs=generaldelta,revlogv1 unbundle=HG10GZ,HG10BZ,HG10UN unbundlehash
580 readline(65537) -> (26) GET /?cmd=batch HTTP/1.1\r\n
579 readline(65537) -> (26) GET /?cmd=batch HTTP/1.1\r\n
581 readline(-1) -> (27) Accept-Encoding: identity\r\n
580 readline(-1) -> (27) Accept-Encoding: identity\r\n
582 readline(-1) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n
581 readline(-1) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n
583 readline(-1) -> (41) x-hgarg-1: cmds=heads+%3Bknown+nodes%3D\r\n
582 readline(-1) -> (41) x-hgarg-1: cmds=heads+%3Bknown+nodes%3D\r\n
584 readline(-1) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
583 readline(-1) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
585 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
584 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
586 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
585 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
587 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
586 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
588 readline(-1) -> (2) \r\n
587 readline(-1) -> (2) \r\n
589 write(36 from 36) -> (356) HTTP/1.1 200 Script output follows\r\n
588 write(36 from 36) -> (356) HTTP/1.1 200 Script output follows\r\n
590 write(23 from 23) -> (333) Server: badhttpserver\r\n
589 write(23 from 23) -> (333) Server: badhttpserver\r\n
591 write(37 from 37) -> (296) Date: $HTTP_DATE$\r\n
590 write(37 from 37) -> (296) Date: $HTTP_DATE$\r\n
592 write(41 from 41) -> (255) Content-Type: application/mercurial-0.1\r\n
591 write(41 from 41) -> (255) Content-Type: application/mercurial-0.1\r\n
593 write(20 from 20) -> (235) Content-Length: 42\r\n
592 write(20 from 20) -> (235) Content-Length: 42\r\n
594 write(2 from 2) -> (233) \r\n
593 write(2 from 2) -> (233) \r\n
595 write(42 from 42) -> (191) 96ee1d7354c4ad7372047672c36a1f561e3a6a4c\n;
594 write(42 from 42) -> (191) 96ee1d7354c4ad7372047672c36a1f561e3a6a4c\n;
596 readline(65537) -> (30) GET /?cmd=getbundle HTTP/1.1\r\n
595 readline(65537) -> (30) GET /?cmd=getbundle HTTP/1.1\r\n
597 readline(-1) -> (27) Accept-Encoding: identity\r\n
596 readline(-1) -> (27) Accept-Encoding: identity\r\n
598 readline(-1) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n
597 readline(-1) -> (29) vary: X-HgArg-1,X-HgProto-1\r\n
599 readline(-1) -> (461) x-hgarg-1: bookmarks=1&bundlecaps=HG20%2Cbundle2%3DHG20%250Abookmarks%250Achangegroup%253D01%252C02%250Adigests%253Dmd5%252Csha1%252Csha512%250Aerror%253Dabort%252Cunsupportedcontent%252Cpushraced%252Cpushkey%250Ahgtagsfnodes%250Alistkeys%250Apushkey%250Aremote-changegroup%253Dhttp%252Chttps%250Arev-branch-cache%250Astream%253Dv2&cg=1&common=0000000000000000000000000000000000000000&heads=96ee1d7354c4ad7372047672c36a1f561e3a6a4c&listkeys=phases%2Cbookmarks\r\n
598 readline(-1) -> (461) x-hgarg-1: bookmarks=1&bundlecaps=HG20%2Cbundle2%3DHG20%250Abookmarks%250Achangegroup%253D01%252C02%250Adigests%253Dmd5%252Csha1%252Csha512%250Aerror%253Dabort%252Cunsupportedcontent%252Cpushraced%252Cpushkey%250Ahgtagsfnodes%250Alistkeys%250Apushkey%250Aremote-changegroup%253Dhttp%252Chttps%250Arev-branch-cache%250Astream%253Dv2&cg=1&common=0000000000000000000000000000000000000000&heads=96ee1d7354c4ad7372047672c36a1f561e3a6a4c&listkeys=phases%2Cbookmarks\r\n
600 readline(-1) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
599 readline(-1) -> (61) x-hgproto-1: 0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull\r\n
601 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
600 readline(-1) -> (35) accept: application/mercurial-0.1\r\n
602 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
601 readline(-1) -> (2?) host: localhost:$HGPORT\r\n (glob)
603 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
602 readline(-1) -> (49) user-agent: mercurial/proto-1.0 (Mercurial 4.2)\r\n
604 readline(-1) -> (2) \r\n
603 readline(-1) -> (2) \r\n
605 write(36 from 36) -> (155) HTTP/1.1 200 Script output follows\r\n
604 write(36 from 36) -> (155) HTTP/1.1 200 Script output follows\r\n
606 write(23 from 23) -> (132) Server: badhttpserver\r\n
605 write(23 from 23) -> (132) Server: badhttpserver\r\n
607 write(37 from 37) -> (95) Date: $HTTP_DATE$\r\n
606 write(37 from 37) -> (95) Date: $HTTP_DATE$\r\n
608 write(41 from 41) -> (54) Content-Type: application/mercurial-0.2\r\n
607 write(41 from 41) -> (54) Content-Type: application/mercurial-0.2\r\n
609 write(28 from 28) -> (26) Transfer-Encoding: chunked\r\n
608 write(28 from 28) -> (26) Transfer-Encoding: chunked\r\n
610 write(2 from 2) -> (24) \r\n
609 write(2 from 2) -> (24) \r\n
611 write(6 from 6) -> (18) 1\\r\\n\x04\\r\\n (esc)
610 write(6 from 6) -> (18) 1\\r\\n\x04\\r\\n (esc)
612 write(9 from 9) -> (9) 4\r\nnone\r\n
611 write(9 from 9) -> (9) 4\r\nnone\r\n
613 write(9 from 9) -> (0) 4\r\nHG20\r\n
612 write(9 from 9) -> (0) 4\r\nHG20\r\n
614 write limit reached; closing socket
613 write limit reached; closing socket
615 write(27) -> 15\r\nInternal Server Error\r\n
614 write(27) -> 15\r\nInternal Server Error\r\n
616
615
617 $ rm -f error.log
616 $ rm -f error.log
618
617
619 Server sends partial bundle2 header magic
618 Server sends partial bundle2 header magic
620
619
621 $ hg serve --config badserver.closeaftersendbytes=999 -p $HGPORT -d --pid-file=hg.pid -E error.log
620 $ hg serve --config badserver.closeaftersendbytes=999 -p $HGPORT -d --pid-file=hg.pid -E error.log
622 $ cat hg.pid > $DAEMON_PIDS
621 $ cat hg.pid > $DAEMON_PIDS
623
622
624 $ hg clone http://localhost:$HGPORT/ clone
623 $ hg clone http://localhost:$HGPORT/ clone
625 requesting all changes
624 requesting all changes
626 abort: HTTP request error (incomplete response; expected 4 bytes got 3)
625 abort: HTTP request error (incomplete response; expected 4 bytes got 3)
627 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
626 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
628 [255]
627 [255]
629
628
630 $ killdaemons.py $DAEMON_PIDS
629 $ killdaemons.py $DAEMON_PIDS
631
630
632 $ tail -7 error.log
631 $ tail -7 error.log
633 write(28 from 28) -> (23) Transfer-Encoding: chunked\r\n
632 write(28 from 28) -> (23) Transfer-Encoding: chunked\r\n
634 write(2 from 2) -> (21) \r\n
633 write(2 from 2) -> (21) \r\n
635 write(6 from 6) -> (15) 1\\r\\n\x04\\r\\n (esc)
634 write(6 from 6) -> (15) 1\\r\\n\x04\\r\\n (esc)
636 write(9 from 9) -> (6) 4\r\nnone\r\n
635 write(9 from 9) -> (6) 4\r\nnone\r\n
637 write(6 from 9) -> (0) 4\r\nHG2
636 write(6 from 9) -> (0) 4\r\nHG2
638 write limit reached; closing socket
637 write limit reached; closing socket
639 write(27) -> 15\r\nInternal Server Error\r\n
638 write(27) -> 15\r\nInternal Server Error\r\n
640
639
641 $ rm -f error.log
640 $ rm -f error.log
642
641
643 Server sends incomplete bundle2 stream params length
642 Server sends incomplete bundle2 stream params length
644
643
645 $ hg serve --config badserver.closeaftersendbytes=1008 -p $HGPORT -d --pid-file=hg.pid -E error.log
644 $ hg serve --config badserver.closeaftersendbytes=1008 -p $HGPORT -d --pid-file=hg.pid -E error.log
646 $ cat hg.pid > $DAEMON_PIDS
645 $ cat hg.pid > $DAEMON_PIDS
647
646
648 $ hg clone http://localhost:$HGPORT/ clone
647 $ hg clone http://localhost:$HGPORT/ clone
649 requesting all changes
648 requesting all changes
650 abort: HTTP request error (incomplete response; expected 4 bytes got 3)
649 abort: HTTP request error (incomplete response; expected 4 bytes got 3)
651 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
650 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
652 [255]
651 [255]
653
652
654 $ killdaemons.py $DAEMON_PIDS
653 $ killdaemons.py $DAEMON_PIDS
655
654
656 $ tail -8 error.log
655 $ tail -8 error.log
657 write(28 from 28) -> (32) Transfer-Encoding: chunked\r\n
656 write(28 from 28) -> (32) Transfer-Encoding: chunked\r\n
658 write(2 from 2) -> (30) \r\n
657 write(2 from 2) -> (30) \r\n
659 write(6 from 6) -> (24) 1\\r\\n\x04\\r\\n (esc)
658 write(6 from 6) -> (24) 1\\r\\n\x04\\r\\n (esc)
660 write(9 from 9) -> (15) 4\r\nnone\r\n
659 write(9 from 9) -> (15) 4\r\nnone\r\n
661 write(9 from 9) -> (6) 4\r\nHG20\r\n
660 write(9 from 9) -> (6) 4\r\nHG20\r\n
662 write(6 from 9) -> (0) 4\\r\\n\x00\x00\x00 (esc)
661 write(6 from 9) -> (0) 4\\r\\n\x00\x00\x00 (esc)
663 write limit reached; closing socket
662 write limit reached; closing socket
664 write(27) -> 15\r\nInternal Server Error\r\n
663 write(27) -> 15\r\nInternal Server Error\r\n
665
664
666 $ rm -f error.log
665 $ rm -f error.log
667
666
668 Servers stops after bundle2 stream params header
667 Servers stops after bundle2 stream params header
669
668
670 $ hg serve --config badserver.closeaftersendbytes=1011 -p $HGPORT -d --pid-file=hg.pid -E error.log
669 $ hg serve --config badserver.closeaftersendbytes=1011 -p $HGPORT -d --pid-file=hg.pid -E error.log
671 $ cat hg.pid > $DAEMON_PIDS
670 $ cat hg.pid > $DAEMON_PIDS
672
671
673 $ hg clone http://localhost:$HGPORT/ clone
672 $ hg clone http://localhost:$HGPORT/ clone
674 requesting all changes
673 requesting all changes
675 abort: HTTP request error (incomplete response)
674 abort: HTTP request error (incomplete response)
676 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
675 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
677 [255]
676 [255]
678
677
679 $ killdaemons.py $DAEMON_PIDS
678 $ killdaemons.py $DAEMON_PIDS
680
679
681 $ tail -8 error.log
680 $ tail -8 error.log
682 write(28 from 28) -> (35) Transfer-Encoding: chunked\r\n
681 write(28 from 28) -> (35) Transfer-Encoding: chunked\r\n
683 write(2 from 2) -> (33) \r\n
682 write(2 from 2) -> (33) \r\n
684 write(6 from 6) -> (27) 1\\r\\n\x04\\r\\n (esc)
683 write(6 from 6) -> (27) 1\\r\\n\x04\\r\\n (esc)
685 write(9 from 9) -> (18) 4\r\nnone\r\n
684 write(9 from 9) -> (18) 4\r\nnone\r\n
686 write(9 from 9) -> (9) 4\r\nHG20\r\n
685 write(9 from 9) -> (9) 4\r\nHG20\r\n
687 write(9 from 9) -> (0) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
686 write(9 from 9) -> (0) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
688 write limit reached; closing socket
687 write limit reached; closing socket
689 write(27) -> 15\r\nInternal Server Error\r\n
688 write(27) -> 15\r\nInternal Server Error\r\n
690
689
691 $ rm -f error.log
690 $ rm -f error.log
692
691
693 Server stops sending after bundle2 part header length
692 Server stops sending after bundle2 part header length
694
693
695 $ hg serve --config badserver.closeaftersendbytes=1020 -p $HGPORT -d --pid-file=hg.pid -E error.log
694 $ hg serve --config badserver.closeaftersendbytes=1020 -p $HGPORT -d --pid-file=hg.pid -E error.log
696 $ cat hg.pid > $DAEMON_PIDS
695 $ cat hg.pid > $DAEMON_PIDS
697
696
698 $ hg clone http://localhost:$HGPORT/ clone
697 $ hg clone http://localhost:$HGPORT/ clone
699 requesting all changes
698 requesting all changes
700 abort: HTTP request error (incomplete response)
699 abort: HTTP request error (incomplete response)
701 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
700 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
702 [255]
701 [255]
703
702
704 $ killdaemons.py $DAEMON_PIDS
703 $ killdaemons.py $DAEMON_PIDS
705
704
706 $ tail -9 error.log
705 $ tail -9 error.log
707 write(28 from 28) -> (44) Transfer-Encoding: chunked\r\n
706 write(28 from 28) -> (44) Transfer-Encoding: chunked\r\n
708 write(2 from 2) -> (42) \r\n
707 write(2 from 2) -> (42) \r\n
709 write(6 from 6) -> (36) 1\\r\\n\x04\\r\\n (esc)
708 write(6 from 6) -> (36) 1\\r\\n\x04\\r\\n (esc)
710 write(9 from 9) -> (27) 4\r\nnone\r\n
709 write(9 from 9) -> (27) 4\r\nnone\r\n
711 write(9 from 9) -> (18) 4\r\nHG20\r\n
710 write(9 from 9) -> (18) 4\r\nHG20\r\n
712 write(9 from 9) -> (9) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
711 write(9 from 9) -> (9) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
713 write(9 from 9) -> (0) 4\\r\\n\x00\x00\x00)\\r\\n (esc)
712 write(9 from 9) -> (0) 4\\r\\n\x00\x00\x00)\\r\\n (esc)
714 write limit reached; closing socket
713 write limit reached; closing socket
715 write(27) -> 15\r\nInternal Server Error\r\n
714 write(27) -> 15\r\nInternal Server Error\r\n
716
715
717 $ rm -f error.log
716 $ rm -f error.log
718
717
719 Server stops sending after bundle2 part header
718 Server stops sending after bundle2 part header
720
719
721 $ hg serve --config badserver.closeaftersendbytes=1067 -p $HGPORT -d --pid-file=hg.pid -E error.log
720 $ hg serve --config badserver.closeaftersendbytes=1067 -p $HGPORT -d --pid-file=hg.pid -E error.log
722 $ cat hg.pid > $DAEMON_PIDS
721 $ cat hg.pid > $DAEMON_PIDS
723
722
724 $ hg clone http://localhost:$HGPORT/ clone
723 $ hg clone http://localhost:$HGPORT/ clone
725 requesting all changes
724 requesting all changes
726 adding changesets
725 adding changesets
727 transaction abort!
726 transaction abort!
728 rollback completed
727 rollback completed
729 abort: HTTP request error (incomplete response)
728 abort: HTTP request error (incomplete response)
730 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
729 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
731 [255]
730 [255]
732
731
733 $ killdaemons.py $DAEMON_PIDS
732 $ killdaemons.py $DAEMON_PIDS
734
733
735 $ tail -10 error.log
734 $ tail -10 error.log
736 write(28 from 28) -> (91) Transfer-Encoding: chunked\r\n
735 write(28 from 28) -> (91) Transfer-Encoding: chunked\r\n
737 write(2 from 2) -> (89) \r\n
736 write(2 from 2) -> (89) \r\n
738 write(6 from 6) -> (83) 1\\r\\n\x04\\r\\n (esc)
737 write(6 from 6) -> (83) 1\\r\\n\x04\\r\\n (esc)
739 write(9 from 9) -> (74) 4\r\nnone\r\n
738 write(9 from 9) -> (74) 4\r\nnone\r\n
740 write(9 from 9) -> (65) 4\r\nHG20\r\n
739 write(9 from 9) -> (65) 4\r\nHG20\r\n
741 write(9 from 9) -> (56) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
740 write(9 from 9) -> (56) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
742 write(9 from 9) -> (47) 4\\r\\n\x00\x00\x00)\\r\\n (esc)
741 write(9 from 9) -> (47) 4\\r\\n\x00\x00\x00)\\r\\n (esc)
743 write(47 from 47) -> (0) 29\\r\\n\x0bCHANGEGROUP\x00\x00\x00\x00\x01\x01\x07\x02 \x01version02nbchanges1\\r\\n (esc)
742 write(47 from 47) -> (0) 29\\r\\n\x0bCHANGEGROUP\x00\x00\x00\x00\x01\x01\x07\x02 \x01version02nbchanges1\\r\\n (esc)
744 write limit reached; closing socket
743 write limit reached; closing socket
745 write(27) -> 15\r\nInternal Server Error\r\n
744 write(27) -> 15\r\nInternal Server Error\r\n
746
745
747 $ rm -f error.log
746 $ rm -f error.log
748
747
749 Server stops after bundle2 part payload chunk size
748 Server stops after bundle2 part payload chunk size
750
749
751 $ hg serve --config badserver.closeaftersendbytes=1088 -p $HGPORT -d --pid-file=hg.pid -E error.log
750 $ hg serve --config badserver.closeaftersendbytes=1088 -p $HGPORT -d --pid-file=hg.pid -E error.log
752 $ cat hg.pid > $DAEMON_PIDS
751 $ cat hg.pid > $DAEMON_PIDS
753
752
754 $ hg clone http://localhost:$HGPORT/ clone
753 $ hg clone http://localhost:$HGPORT/ clone
755 requesting all changes
754 requesting all changes
756 adding changesets
755 adding changesets
757 transaction abort!
756 transaction abort!
758 rollback completed
757 rollback completed
759 abort: HTTP request error (incomplete response; expected 466 bytes got 7)
758 abort: HTTP request error (incomplete response; expected 466 bytes got 7)
760 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
759 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
761 [255]
760 [255]
762
761
763 $ killdaemons.py $DAEMON_PIDS
762 $ killdaemons.py $DAEMON_PIDS
764
763
765 $ tail -11 error.log
764 $ tail -11 error.log
766 write(2 from 2) -> (110) \r\n
765 write(2 from 2) -> (110) \r\n
767 write(6 from 6) -> (104) 1\\r\\n\x04\\r\\n (esc)
766 write(6 from 6) -> (104) 1\\r\\n\x04\\r\\n (esc)
768 write(9 from 9) -> (95) 4\r\nnone\r\n
767 write(9 from 9) -> (95) 4\r\nnone\r\n
769 write(9 from 9) -> (86) 4\r\nHG20\r\n
768 write(9 from 9) -> (86) 4\r\nHG20\r\n
770 write(9 from 9) -> (77) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
769 write(9 from 9) -> (77) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
771 write(9 from 9) -> (68) 4\\r\\n\x00\x00\x00)\\r\\n (esc)
770 write(9 from 9) -> (68) 4\\r\\n\x00\x00\x00)\\r\\n (esc)
772 write(47 from 47) -> (21) 29\\r\\n\x0bCHANGEGROUP\x00\x00\x00\x00\x01\x01\x07\x02 \x01version02nbchanges1\\r\\n (esc)
771 write(47 from 47) -> (21) 29\\r\\n\x0bCHANGEGROUP\x00\x00\x00\x00\x01\x01\x07\x02 \x01version02nbchanges1\\r\\n (esc)
773 write(9 from 9) -> (12) 4\\r\\n\x00\x00\x01\xd2\\r\\n (esc)
772 write(9 from 9) -> (12) 4\\r\\n\x00\x00\x01\xd2\\r\\n (esc)
774 write(12 from 473) -> (0) 1d2\\r\\n\x00\x00\x00\xb2\x96\xee\x1d (esc)
773 write(12 from 473) -> (0) 1d2\\r\\n\x00\x00\x00\xb2\x96\xee\x1d (esc)
775 write limit reached; closing socket
774 write limit reached; closing socket
776 write(27) -> 15\r\nInternal Server Error\r\n
775 write(27) -> 15\r\nInternal Server Error\r\n
777
776
778 $ rm -f error.log
777 $ rm -f error.log
779
778
780 Server stops sending in middle of bundle2 payload chunk
779 Server stops sending in middle of bundle2 payload chunk
781
780
782 $ hg serve --config badserver.closeaftersendbytes=1549 -p $HGPORT -d --pid-file=hg.pid -E error.log
781 $ hg serve --config badserver.closeaftersendbytes=1549 -p $HGPORT -d --pid-file=hg.pid -E error.log
783 $ cat hg.pid > $DAEMON_PIDS
782 $ cat hg.pid > $DAEMON_PIDS
784
783
785 $ hg clone http://localhost:$HGPORT/ clone
784 $ hg clone http://localhost:$HGPORT/ clone
786 requesting all changes
785 requesting all changes
787 adding changesets
786 adding changesets
788 transaction abort!
787 transaction abort!
789 rollback completed
788 rollback completed
790 abort: HTTP request error (incomplete response)
789 abort: HTTP request error (incomplete response)
791 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
790 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
792 [255]
791 [255]
793
792
794 $ killdaemons.py $DAEMON_PIDS
793 $ killdaemons.py $DAEMON_PIDS
795
794
796 $ tail -12 error.log
795 $ tail -12 error.log
797 write(28 from 28) -> (573) Transfer-Encoding: chunked\r\n
796 write(28 from 28) -> (573) Transfer-Encoding: chunked\r\n
798 write(2 from 2) -> (571) \r\n
797 write(2 from 2) -> (571) \r\n
799 write(6 from 6) -> (565) 1\\r\\n\x04\\r\\n (esc)
798 write(6 from 6) -> (565) 1\\r\\n\x04\\r\\n (esc)
800 write(9 from 9) -> (556) 4\r\nnone\r\n
799 write(9 from 9) -> (556) 4\r\nnone\r\n
801 write(9 from 9) -> (547) 4\r\nHG20\r\n
800 write(9 from 9) -> (547) 4\r\nHG20\r\n
802 write(9 from 9) -> (538) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
801 write(9 from 9) -> (538) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
803 write(9 from 9) -> (529) 4\\r\\n\x00\x00\x00)\\r\\n (esc)
802 write(9 from 9) -> (529) 4\\r\\n\x00\x00\x00)\\r\\n (esc)
804 write(47 from 47) -> (482) 29\\r\\n\x0bCHANGEGROUP\x00\x00\x00\x00\x01\x01\x07\x02 \x01version02nbchanges1\\r\\n (esc)
803 write(47 from 47) -> (482) 29\\r\\n\x0bCHANGEGROUP\x00\x00\x00\x00\x01\x01\x07\x02 \x01version02nbchanges1\\r\\n (esc)
805 write(9 from 9) -> (473) 4\\r\\n\x00\x00\x01\xd2\\r\\n (esc)
804 write(9 from 9) -> (473) 4\\r\\n\x00\x00\x01\xd2\\r\\n (esc)
806 write(473 from 473) -> (0) 1d2\\r\\n\x00\x00\x00\xb2\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>6a3df4de388f3c4f8e28f4f9a814299a3cbb5f50\\ntest\\n0 0\\nfoo\\n\\ninitial\x00\x00\x00\x00\x00\x00\x00\xa1j=\xf4\xde8\x8f<O\x8e(\xf4\xf9\xa8\x14)\x9a<\xbb_P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-foo\x00b80de5d138758541c5f05265ad144ab9fa86d1db\\n\x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00h\xb8\\r\xe5\xd18u\x85A\xc5\xf0Re\xad\x14J\xb9\xfa\x86\xd1\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\\r\\n (esc)
805 write(473 from 473) -> (0) 1d2\\r\\n\x00\x00\x00\xb2\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>6a3df4de388f3c4f8e28f4f9a814299a3cbb5f50\\ntest\\n0 0\\nfoo\\n\\ninitial\x00\x00\x00\x00\x00\x00\x00\xa1j=\xf4\xde8\x8f<O\x8e(\xf4\xf9\xa8\x14)\x9a<\xbb_P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-foo\x00b80de5d138758541c5f05265ad144ab9fa86d1db\\n\x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00h\xb8\\r\xe5\xd18u\x85A\xc5\xf0Re\xad\x14J\xb9\xfa\x86\xd1\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\\r\\n (esc)
807 write limit reached; closing socket
806 write limit reached; closing socket
808 write(27) -> 15\r\nInternal Server Error\r\n
807 write(27) -> 15\r\nInternal Server Error\r\n
809
808
810 $ rm -f error.log
809 $ rm -f error.log
811
810
812 Server stops sending after 0 length payload chunk size
811 Server stops sending after 0 length payload chunk size
813
812
814 $ hg serve --config badserver.closeaftersendbytes=1580 -p $HGPORT -d --pid-file=hg.pid -E error.log
813 $ hg serve --config badserver.closeaftersendbytes=1580 -p $HGPORT -d --pid-file=hg.pid -E error.log
815 $ cat hg.pid > $DAEMON_PIDS
814 $ cat hg.pid > $DAEMON_PIDS
816
815
817 $ hg clone http://localhost:$HGPORT/ clone
816 $ hg clone http://localhost:$HGPORT/ clone
818 requesting all changes
817 requesting all changes
819 adding changesets
818 adding changesets
820 adding manifests
819 adding manifests
821 adding file changes
820 adding file changes
822 added 1 changesets with 1 changes to 1 files
821 added 1 changesets with 1 changes to 1 files
823 transaction abort!
822 transaction abort!
824 rollback completed
823 rollback completed
825 abort: HTTP request error (incomplete response; expected 32 bytes got 9)
824 abort: HTTP request error (incomplete response; expected 32 bytes got 9)
826 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
825 (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator)
827 [255]
826 [255]
828
827
829 $ killdaemons.py $DAEMON_PIDS
828 $ killdaemons.py $DAEMON_PIDS
830
829
831 $ tail -13 error.log
830 $ tail -13 error.log
832 write(6 from 6) -> (596) 1\\r\\n\x04\\r\\n (esc)
831 write(6 from 6) -> (596) 1\\r\\n\x04\\r\\n (esc)
833 write(9 from 9) -> (587) 4\r\nnone\r\n
832 write(9 from 9) -> (587) 4\r\nnone\r\n
834 write(9 from 9) -> (578) 4\r\nHG20\r\n
833 write(9 from 9) -> (578) 4\r\nHG20\r\n
835 write(9 from 9) -> (569) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
834 write(9 from 9) -> (569) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
836 write(9 from 9) -> (560) 4\\r\\n\x00\x00\x00)\\r\\n (esc)
835 write(9 from 9) -> (560) 4\\r\\n\x00\x00\x00)\\r\\n (esc)
837 write(47 from 47) -> (513) 29\\r\\n\x0bCHANGEGROUP\x00\x00\x00\x00\x01\x01\x07\x02 \x01version02nbchanges1\\r\\n (esc)
836 write(47 from 47) -> (513) 29\\r\\n\x0bCHANGEGROUP\x00\x00\x00\x00\x01\x01\x07\x02 \x01version02nbchanges1\\r\\n (esc)
838 write(9 from 9) -> (504) 4\\r\\n\x00\x00\x01\xd2\\r\\n (esc)
837 write(9 from 9) -> (504) 4\\r\\n\x00\x00\x01\xd2\\r\\n (esc)
839 write(473 from 473) -> (31) 1d2\\r\\n\x00\x00\x00\xb2\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>6a3df4de388f3c4f8e28f4f9a814299a3cbb5f50\\ntest\\n0 0\\nfoo\\n\\ninitial\x00\x00\x00\x00\x00\x00\x00\xa1j=\xf4\xde8\x8f<O\x8e(\xf4\xf9\xa8\x14)\x9a<\xbb_P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-foo\x00b80de5d138758541c5f05265ad144ab9fa86d1db\\n\x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00h\xb8\\r\xe5\xd18u\x85A\xc5\xf0Re\xad\x14J\xb9\xfa\x86\xd1\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\\r\\n (esc)
838 write(473 from 473) -> (31) 1d2\\r\\n\x00\x00\x00\xb2\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>6a3df4de388f3c4f8e28f4f9a814299a3cbb5f50\\ntest\\n0 0\\nfoo\\n\\ninitial\x00\x00\x00\x00\x00\x00\x00\xa1j=\xf4\xde8\x8f<O\x8e(\xf4\xf9\xa8\x14)\x9a<\xbb_P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-foo\x00b80de5d138758541c5f05265ad144ab9fa86d1db\\n\x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00h\xb8\\r\xe5\xd18u\x85A\xc5\xf0Re\xad\x14J\xb9\xfa\x86\xd1\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\\r\\n (esc)
840 write(9 from 9) -> (22) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
839 write(9 from 9) -> (22) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
841 write(9 from 9) -> (13) 4\\r\\n\x00\x00\x00 \\r\\n (esc)
840 write(9 from 9) -> (13) 4\\r\\n\x00\x00\x00 \\r\\n (esc)
842 write(13 from 38) -> (0) 20\\r\\n\x08LISTKEYS (esc)
841 write(13 from 38) -> (0) 20\\r\\n\x08LISTKEYS (esc)
843 write limit reached; closing socket
842 write limit reached; closing socket
844 write(27) -> 15\r\nInternal Server Error\r\n
843 write(27) -> 15\r\nInternal Server Error\r\n
845
844
846 $ rm -f error.log
845 $ rm -f error.log
847
846
848 Server stops sending after 0 part bundle part header (indicating end of bundle2 payload)
847 Server stops sending after 0 part bundle part header (indicating end of bundle2 payload)
849 This is before the 0 size chunked transfer part that signals end of HTTP response.
848 This is before the 0 size chunked transfer part that signals end of HTTP response.
850
849
851 # $ hg serve --config badserver.closeaftersendbytes=1755 -p $HGPORT -d --pid-file=hg.pid -E error.log
850 # $ hg serve --config badserver.closeaftersendbytes=1755 -p $HGPORT -d --pid-file=hg.pid -E error.log
852 $ hg serve --config badserver.closeaftersendbytes=1862 -p $HGPORT -d --pid-file=hg.pid -E error.log
851 $ hg serve --config badserver.closeaftersendbytes=1862 -p $HGPORT -d --pid-file=hg.pid -E error.log
853 $ cat hg.pid > $DAEMON_PIDS
852 $ cat hg.pid > $DAEMON_PIDS
854
853
855 $ hg clone http://localhost:$HGPORT/ clone
854 $ hg clone http://localhost:$HGPORT/ clone
856 requesting all changes
855 requesting all changes
857 adding changesets
856 adding changesets
858 adding manifests
857 adding manifests
859 adding file changes
858 adding file changes
860 added 1 changesets with 1 changes to 1 files
859 added 1 changesets with 1 changes to 1 files
861 new changesets 96ee1d7354c4
860 new changesets 96ee1d7354c4
862 updating to branch default
861 updating to branch default
863 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
862 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
864
863
865 $ killdaemons.py $DAEMON_PIDS
864 $ killdaemons.py $DAEMON_PIDS
866
865
867 $ tail -22 error.log
866 $ tail -22 error.log
868 write(9 from 9) -> (851) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
867 write(9 from 9) -> (851) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
869 write(9 from 9) -> (842) 4\\r\\n\x00\x00\x00)\\r\\n (esc)
868 write(9 from 9) -> (842) 4\\r\\n\x00\x00\x00)\\r\\n (esc)
870 write(47 from 47) -> (795) 29\\r\\n\x0bCHANGEGROUP\x00\x00\x00\x00\x01\x01\x07\x02 \x01version02nbchanges1\\r\\n (esc)
869 write(47 from 47) -> (795) 29\\r\\n\x0bCHANGEGROUP\x00\x00\x00\x00\x01\x01\x07\x02 \x01version02nbchanges1\\r\\n (esc)
871 write(9 from 9) -> (786) 4\\r\\n\x00\x00\x01\xd2\\r\\n (esc)
870 write(9 from 9) -> (786) 4\\r\\n\x00\x00\x01\xd2\\r\\n (esc)
872 write(473 from 473) -> (313) 1d2\\r\\n\x00\x00\x00\xb2\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>6a3df4de388f3c4f8e28f4f9a814299a3cbb5f50\\ntest\\n0 0\\nfoo\\n\\ninitial\x00\x00\x00\x00\x00\x00\x00\xa1j=\xf4\xde8\x8f<O\x8e(\xf4\xf9\xa8\x14)\x9a<\xbb_P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-foo\x00b80de5d138758541c5f05265ad144ab9fa86d1db\\n\x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00h\xb8\\r\xe5\xd18u\x85A\xc5\xf0Re\xad\x14J\xb9\xfa\x86\xd1\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\\r\\n (esc)
871 write(473 from 473) -> (313) 1d2\\r\\n\x00\x00\x00\xb2\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>6a3df4de388f3c4f8e28f4f9a814299a3cbb5f50\\ntest\\n0 0\\nfoo\\n\\ninitial\x00\x00\x00\x00\x00\x00\x00\xa1j=\xf4\xde8\x8f<O\x8e(\xf4\xf9\xa8\x14)\x9a<\xbb_P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-foo\x00b80de5d138758541c5f05265ad144ab9fa86d1db\\n\x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00h\xb8\\r\xe5\xd18u\x85A\xc5\xf0Re\xad\x14J\xb9\xfa\x86\xd1\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\\r\\n (esc)
873 write(9 from 9) -> (304) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
872 write(9 from 9) -> (304) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
874 write(9 from 9) -> (295) 4\\r\\n\x00\x00\x00 \\r\\n (esc)
873 write(9 from 9) -> (295) 4\\r\\n\x00\x00\x00 \\r\\n (esc)
875 write(38 from 38) -> (257) 20\\r\\n\x08LISTKEYS\x00\x00\x00\x01\x01\x00 \x06namespacephases\\r\\n (esc)
874 write(38 from 38) -> (257) 20\\r\\n\x08LISTKEYS\x00\x00\x00\x01\x01\x00 \x06namespacephases\\r\\n (esc)
876 write(9 from 9) -> (248) 4\\r\\n\x00\x00\x00:\\r\\n (esc)
875 write(9 from 9) -> (248) 4\\r\\n\x00\x00\x00:\\r\\n (esc)
877 write(64 from 64) -> (184) 3a\r\n96ee1d7354c4ad7372047672c36a1f561e3a6a4c 1\npublishing True\r\n
876 write(64 from 64) -> (184) 3a\r\n96ee1d7354c4ad7372047672c36a1f561e3a6a4c 1\npublishing True\r\n
878 write(9 from 9) -> (175) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
877 write(9 from 9) -> (175) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
879 write(9 from 9) -> (166) 4\\r\\n\x00\x00\x00#\\r\\n (esc)
878 write(9 from 9) -> (166) 4\\r\\n\x00\x00\x00#\\r\\n (esc)
880 write(41 from 41) -> (125) 23\\r\\n\x08LISTKEYS\x00\x00\x00\x02\x01\x00 namespacebookmarks\\r\\n (esc)
879 write(41 from 41) -> (125) 23\\r\\n\x08LISTKEYS\x00\x00\x00\x02\x01\x00 namespacebookmarks\\r\\n (esc)
881 write(9 from 9) -> (116) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
880 write(9 from 9) -> (116) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
882 write(9 from 9) -> (107) 4\\r\\n\x00\x00\x00\x1d\\r\\n (esc)
881 write(9 from 9) -> (107) 4\\r\\n\x00\x00\x00\x1d\\r\\n (esc)
883 write(35 from 35) -> (72) 1d\\r\\n\x16cache:rev-branch-cache\x00\x00\x00\x03\x00\x00\\r\\n (esc)
882 write(35 from 35) -> (72) 1d\\r\\n\x16cache:rev-branch-cache\x00\x00\x00\x03\x00\x00\\r\\n (esc)
884 write(9 from 9) -> (63) 4\\r\\n\x00\x00\x00'\\r\\n (esc)
883 write(9 from 9) -> (63) 4\\r\\n\x00\x00\x00'\\r\\n (esc)
885 write(45 from 45) -> (18) 27\\r\\n\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00default\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\\r\\n (esc)
884 write(45 from 45) -> (18) 27\\r\\n\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00default\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\\r\\n (esc)
886 write(9 from 9) -> (9) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
885 write(9 from 9) -> (9) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
887 write(9 from 9) -> (0) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
886 write(9 from 9) -> (0) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
888 write limit reached; closing socket
887 write limit reached; closing socket
889 write(27) -> 15\r\nInternal Server Error\r\n
888 write(27) -> 15\r\nInternal Server Error\r\n
890
889
891 $ rm -f error.log
890 $ rm -f error.log
892 $ rm -rf clone
891 $ rm -rf clone
893
892
894 Server sends a size 0 chunked-transfer size without terminating \r\n
893 Server sends a size 0 chunked-transfer size without terminating \r\n
895
894
896 $ hg serve --config badserver.closeaftersendbytes=1865 -p $HGPORT -d --pid-file=hg.pid -E error.log
895 $ hg serve --config badserver.closeaftersendbytes=1865 -p $HGPORT -d --pid-file=hg.pid -E error.log
897 $ cat hg.pid > $DAEMON_PIDS
896 $ cat hg.pid > $DAEMON_PIDS
898
897
899 $ hg clone http://localhost:$HGPORT/ clone
898 $ hg clone http://localhost:$HGPORT/ clone
900 requesting all changes
899 requesting all changes
901 adding changesets
900 adding changesets
902 adding manifests
901 adding manifests
903 adding file changes
902 adding file changes
904 added 1 changesets with 1 changes to 1 files
903 added 1 changesets with 1 changes to 1 files
905 new changesets 96ee1d7354c4
904 new changesets 96ee1d7354c4
906 updating to branch default
905 updating to branch default
907 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
906 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
908
907
909 $ killdaemons.py $DAEMON_PIDS
908 $ killdaemons.py $DAEMON_PIDS
910
909
911 $ tail -23 error.log
910 $ tail -23 error.log
912 write(9 from 9) -> (854) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
911 write(9 from 9) -> (854) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
913 write(9 from 9) -> (845) 4\\r\\n\x00\x00\x00)\\r\\n (esc)
912 write(9 from 9) -> (845) 4\\r\\n\x00\x00\x00)\\r\\n (esc)
914 write(47 from 47) -> (798) 29\\r\\n\x0bCHANGEGROUP\x00\x00\x00\x00\x01\x01\x07\x02 \x01version02nbchanges1\\r\\n (esc)
913 write(47 from 47) -> (798) 29\\r\\n\x0bCHANGEGROUP\x00\x00\x00\x00\x01\x01\x07\x02 \x01version02nbchanges1\\r\\n (esc)
915 write(9 from 9) -> (789) 4\\r\\n\x00\x00\x01\xd2\\r\\n (esc)
914 write(9 from 9) -> (789) 4\\r\\n\x00\x00\x01\xd2\\r\\n (esc)
916 write(473 from 473) -> (316) 1d2\\r\\n\x00\x00\x00\xb2\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>6a3df4de388f3c4f8e28f4f9a814299a3cbb5f50\\ntest\\n0 0\\nfoo\\n\\ninitial\x00\x00\x00\x00\x00\x00\x00\xa1j=\xf4\xde8\x8f<O\x8e(\xf4\xf9\xa8\x14)\x9a<\xbb_P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-foo\x00b80de5d138758541c5f05265ad144ab9fa86d1db\\n\x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00h\xb8\\r\xe5\xd18u\x85A\xc5\xf0Re\xad\x14J\xb9\xfa\x86\xd1\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\\r\\n (esc)
915 write(473 from 473) -> (316) 1d2\\r\\n\x00\x00\x00\xb2\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>6a3df4de388f3c4f8e28f4f9a814299a3cbb5f50\\ntest\\n0 0\\nfoo\\n\\ninitial\x00\x00\x00\x00\x00\x00\x00\xa1j=\xf4\xde8\x8f<O\x8e(\xf4\xf9\xa8\x14)\x9a<\xbb_P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00-foo\x00b80de5d138758541c5f05265ad144ab9fa86d1db\\n\x00\x00\x00\x00\x00\x00\x00\x07foo\x00\x00\x00h\xb8\\r\xe5\xd18u\x85A\xc5\xf0Re\xad\x14J\xb9\xfa\x86\xd1\xdb\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\x00\x00\x00\x00\x00\x00\x00\x00\\r\\n (esc)
917 write(9 from 9) -> (307) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
916 write(9 from 9) -> (307) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
918 write(9 from 9) -> (298) 4\\r\\n\x00\x00\x00 \\r\\n (esc)
917 write(9 from 9) -> (298) 4\\r\\n\x00\x00\x00 \\r\\n (esc)
919 write(38 from 38) -> (260) 20\\r\\n\x08LISTKEYS\x00\x00\x00\x01\x01\x00 \x06namespacephases\\r\\n (esc)
918 write(38 from 38) -> (260) 20\\r\\n\x08LISTKEYS\x00\x00\x00\x01\x01\x00 \x06namespacephases\\r\\n (esc)
920 write(9 from 9) -> (251) 4\\r\\n\x00\x00\x00:\\r\\n (esc)
919 write(9 from 9) -> (251) 4\\r\\n\x00\x00\x00:\\r\\n (esc)
921 write(64 from 64) -> (187) 3a\r\n96ee1d7354c4ad7372047672c36a1f561e3a6a4c 1\npublishing True\r\n
920 write(64 from 64) -> (187) 3a\r\n96ee1d7354c4ad7372047672c36a1f561e3a6a4c 1\npublishing True\r\n
922 write(9 from 9) -> (178) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
921 write(9 from 9) -> (178) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
923 write(9 from 9) -> (169) 4\\r\\n\x00\x00\x00#\\r\\n (esc)
922 write(9 from 9) -> (169) 4\\r\\n\x00\x00\x00#\\r\\n (esc)
924 write(41 from 41) -> (128) 23\\r\\n\x08LISTKEYS\x00\x00\x00\x02\x01\x00 namespacebookmarks\\r\\n (esc)
923 write(41 from 41) -> (128) 23\\r\\n\x08LISTKEYS\x00\x00\x00\x02\x01\x00 namespacebookmarks\\r\\n (esc)
925 write(9 from 9) -> (119) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
924 write(9 from 9) -> (119) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
926 write(9 from 9) -> (110) 4\\r\\n\x00\x00\x00\x1d\\r\\n (esc)
925 write(9 from 9) -> (110) 4\\r\\n\x00\x00\x00\x1d\\r\\n (esc)
927 write(35 from 35) -> (75) 1d\\r\\n\x16cache:rev-branch-cache\x00\x00\x00\x03\x00\x00\\r\\n (esc)
926 write(35 from 35) -> (75) 1d\\r\\n\x16cache:rev-branch-cache\x00\x00\x00\x03\x00\x00\\r\\n (esc)
928 write(9 from 9) -> (66) 4\\r\\n\x00\x00\x00'\\r\\n (esc)
927 write(9 from 9) -> (66) 4\\r\\n\x00\x00\x00'\\r\\n (esc)
929 write(45 from 45) -> (21) 27\\r\\n\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00default\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\\r\\n (esc)
928 write(45 from 45) -> (21) 27\\r\\n\x00\x00\x00\x07\x00\x00\x00\x01\x00\x00\x00\x00default\x96\xee\x1dsT\xc4\xadsr\x04vr\xc3j\x1fV\x1e:jL\\r\\n (esc)
930 write(9 from 9) -> (12) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
929 write(9 from 9) -> (12) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
931 write(9 from 9) -> (3) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
930 write(9 from 9) -> (3) 4\\r\\n\x00\x00\x00\x00\\r\\n (esc)
932 write(3 from 5) -> (0) 0\r\n
931 write(3 from 5) -> (0) 0\r\n
933 write limit reached; closing socket
932 write limit reached; closing socket
934 write(27) -> 15\r\nInternal Server Error\r\n
933 write(27) -> 15\r\nInternal Server Error\r\n
935
934
936 $ rm -f error.log
935 $ rm -f error.log
937 $ rm -rf clone
936 $ rm -rf clone
@@ -1,123 +1,122 b''
1 #require serve
1 #require serve
2
2
3 $ hg init a
3 $ hg init a
4 $ cd a
4 $ cd a
5 $ echo a > a
5 $ echo a > a
6 $ hg ci -Ama -d '1123456789 0'
6 $ hg ci -Ama -d '1123456789 0'
7 adding a
7 adding a
8 $ hg serve --config server.uncompressed=True -p $HGPORT -d --pid-file=hg.pid
8 $ hg serve --config server.uncompressed=True -p $HGPORT -d --pid-file=hg.pid
9 $ cat hg.pid >> $DAEMON_PIDS
9 $ cat hg.pid >> $DAEMON_PIDS
10 $ cd ..
10 $ cd ..
11 $ tinyproxy.py $HGPORT1 localhost 2>proxy.log >/dev/null </dev/null &
11 $ tinyproxy.py $HGPORT1 localhost 2>proxy.log >/dev/null </dev/null &
12 $ while [ ! -f proxy.pid ]; do sleep 0; done
12 $ while [ ! -f proxy.pid ]; do sleep 0; done
13 $ cat proxy.pid >> $DAEMON_PIDS
13 $ cat proxy.pid >> $DAEMON_PIDS
14
14
15 url for proxy, stream
15 url for proxy, stream
16
16
17 $ http_proxy=http://localhost:$HGPORT1/ hg --config http_proxy.always=True clone --stream http://localhost:$HGPORT/ b
17 $ http_proxy=http://localhost:$HGPORT1/ hg --config http_proxy.always=True clone --stream http://localhost:$HGPORT/ b
18 streaming all changes
18 streaming all changes
19 6 files to transfer, 412 bytes of data (reporevlogstore !)
19 6 files to transfer, 412 bytes of data (reporevlogstore !)
20 4 files to transfer, 330 bytes of data (reposimplestore !)
20 4 files to transfer, 330 bytes of data (reposimplestore !)
21 transferred * bytes in * seconds (*/sec) (glob)
21 transferred * bytes in * seconds (*/sec) (glob)
22 updating to branch default
22 updating to branch default
23 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
23 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
24 $ cd b
24 $ cd b
25 $ hg verify
25 $ hg verify
26 checking changesets
26 checking changesets
27 checking manifests
27 checking manifests
28 crosschecking files in changesets and manifests
28 crosschecking files in changesets and manifests
29 checking files
29 checking files
30 checked 1 changesets with 1 changes to 1 files
30 checked 1 changesets with 1 changes to 1 files
31 $ cd ..
31 $ cd ..
32
32
33 url for proxy, pull
33 url for proxy, pull
34
34
35 $ http_proxy=http://localhost:$HGPORT1/ hg --config http_proxy.always=True clone http://localhost:$HGPORT/ b-pull
35 $ http_proxy=http://localhost:$HGPORT1/ hg --config http_proxy.always=True clone http://localhost:$HGPORT/ b-pull
36 requesting all changes
36 requesting all changes
37 adding changesets
37 adding changesets
38 adding manifests
38 adding manifests
39 adding file changes
39 adding file changes
40 added 1 changesets with 1 changes to 1 files
40 added 1 changesets with 1 changes to 1 files
41 new changesets 83180e7845de
41 new changesets 83180e7845de
42 updating to branch default
42 updating to branch default
43 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
43 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
44 $ cd b-pull
44 $ cd b-pull
45 $ hg verify
45 $ hg verify
46 checking changesets
46 checking changesets
47 checking manifests
47 checking manifests
48 crosschecking files in changesets and manifests
48 crosschecking files in changesets and manifests
49 checking files
49 checking files
50 checked 1 changesets with 1 changes to 1 files
50 checked 1 changesets with 1 changes to 1 files
51 $ cd ..
51 $ cd ..
52
52
53 host:port for proxy
53 host:port for proxy
54
54
55 $ http_proxy=localhost:$HGPORT1 hg clone --config http_proxy.always=True http://localhost:$HGPORT/ c
55 $ http_proxy=localhost:$HGPORT1 hg clone --config http_proxy.always=True http://localhost:$HGPORT/ c
56 requesting all changes
56 requesting all changes
57 adding changesets
57 adding changesets
58 adding manifests
58 adding manifests
59 adding file changes
59 adding file changes
60 added 1 changesets with 1 changes to 1 files
60 added 1 changesets with 1 changes to 1 files
61 new changesets 83180e7845de
61 new changesets 83180e7845de
62 updating to branch default
62 updating to branch default
63 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
63 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
64
64
65 proxy url with user name and password
65 proxy url with user name and password
66
66
67 $ http_proxy=http://user:passwd@localhost:$HGPORT1 hg clone --config http_proxy.always=True http://localhost:$HGPORT/ d
67 $ http_proxy=http://user:passwd@localhost:$HGPORT1 hg clone --config http_proxy.always=True http://localhost:$HGPORT/ d
68 requesting all changes
68 requesting all changes
69 adding changesets
69 adding changesets
70 adding manifests
70 adding manifests
71 adding file changes
71 adding file changes
72 added 1 changesets with 1 changes to 1 files
72 added 1 changesets with 1 changes to 1 files
73 new changesets 83180e7845de
73 new changesets 83180e7845de
74 updating to branch default
74 updating to branch default
75 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
75 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
76
76
77 url with user name and password
77 url with user name and password
78
78
79 $ http_proxy=http://user:passwd@localhost:$HGPORT1 hg clone --config http_proxy.always=True http://user:passwd@localhost:$HGPORT/ e
79 $ http_proxy=http://user:passwd@localhost:$HGPORT1 hg clone --config http_proxy.always=True http://user:passwd@localhost:$HGPORT/ e
80 requesting all changes
80 requesting all changes
81 adding changesets
81 adding changesets
82 adding manifests
82 adding manifests
83 adding file changes
83 adding file changes
84 added 1 changesets with 1 changes to 1 files
84 added 1 changesets with 1 changes to 1 files
85 new changesets 83180e7845de
85 new changesets 83180e7845de
86 updating to branch default
86 updating to branch default
87 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
87 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
88
88
89 bad host:port for proxy ("Protocol not supported" can happen on
89 bad host:port for proxy ("Protocol not supported" can happen on
90 misconfigured hosts)
90 misconfigured hosts)
91
91
92 $ http_proxy=localhost:$HGPORT2 hg clone --config http_proxy.always=True http://localhost:$HGPORT/ f
92 $ http_proxy=localhost:$HGPORT2 hg clone --config http_proxy.always=True http://localhost:$HGPORT/ f
93 abort: error: (Connection refused|Protocol not supported|.* actively refused it) (re) (?)
93 abort: error: (Connection refused|Protocol not supported|.* actively refused it|\$EADDRNOTAVAIL\$) (re)
94 abort: error: $EADDRNOTAVAIL$ (?)
95 [255]
94 [255]
96
95
97 do not use the proxy if it is in the no list
96 do not use the proxy if it is in the no list
98
97
99 $ http_proxy=localhost:$HGPORT1 hg clone --config http_proxy.no=localhost http://localhost:$HGPORT/ g
98 $ http_proxy=localhost:$HGPORT1 hg clone --config http_proxy.no=localhost http://localhost:$HGPORT/ g
100 requesting all changes
99 requesting all changes
101 adding changesets
100 adding changesets
102 adding manifests
101 adding manifests
103 adding file changes
102 adding file changes
104 added 1 changesets with 1 changes to 1 files
103 added 1 changesets with 1 changes to 1 files
105 new changesets 83180e7845de
104 new changesets 83180e7845de
106 updating to branch default
105 updating to branch default
107 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
106 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
108 $ cat proxy.log
107 $ cat proxy.log
109 * - - [*] "GET http://localhost:$HGPORT/?cmd=capabilities HTTP/1.1" - - (glob)
108 * - - [*] "GET http://localhost:$HGPORT/?cmd=capabilities HTTP/1.1" - - (glob)
110 $LOCALIP - - [$LOGDATE$] "GET http://localhost:$HGPORT/?cmd=batch HTTP/1.1" - - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
109 $LOCALIP - - [$LOGDATE$] "GET http://localhost:$HGPORT/?cmd=batch HTTP/1.1" - - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
111 $LOCALIP - - [$LOGDATE$] "GET http://localhost:$HGPORT/?cmd=getbundle HTTP/1.1" - - x-hgarg-1:bookmarks=1&$USUAL_BUNDLE_CAPS$&cg=0&common=0000000000000000000000000000000000000000&heads=83180e7845de420a1bb46896fd5fe05294f8d629&listkeys=bookmarks&stream=1 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
110 $LOCALIP - - [$LOGDATE$] "GET http://localhost:$HGPORT/?cmd=getbundle HTTP/1.1" - - x-hgarg-1:bookmarks=1&$USUAL_BUNDLE_CAPS$&cg=0&common=0000000000000000000000000000000000000000&heads=83180e7845de420a1bb46896fd5fe05294f8d629&listkeys=bookmarks&stream=1 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
112 * - - [*] "GET http://localhost:$HGPORT/?cmd=capabilities HTTP/1.1" - - (glob)
111 * - - [*] "GET http://localhost:$HGPORT/?cmd=capabilities HTTP/1.1" - - (glob)
113 $LOCALIP - - [$LOGDATE$] "GET http://localhost:$HGPORT/?cmd=batch HTTP/1.1" - - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
112 $LOCALIP - - [$LOGDATE$] "GET http://localhost:$HGPORT/?cmd=batch HTTP/1.1" - - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
114 $LOCALIP - - [$LOGDATE$] "GET http://localhost:$HGPORT/?cmd=getbundle HTTP/1.1" - - x-hgarg-1:bookmarks=1&$USUAL_BUNDLE_CAPS$&cg=1&common=0000000000000000000000000000000000000000&heads=83180e7845de420a1bb46896fd5fe05294f8d629&listkeys=bookmarks&phases=1 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
113 $LOCALIP - - [$LOGDATE$] "GET http://localhost:$HGPORT/?cmd=getbundle HTTP/1.1" - - x-hgarg-1:bookmarks=1&$USUAL_BUNDLE_CAPS$&cg=1&common=0000000000000000000000000000000000000000&heads=83180e7845de420a1bb46896fd5fe05294f8d629&listkeys=bookmarks&phases=1 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
115 * - - [*] "GET http://localhost:$HGPORT/?cmd=capabilities HTTP/1.1" - - (glob)
114 * - - [*] "GET http://localhost:$HGPORT/?cmd=capabilities HTTP/1.1" - - (glob)
116 $LOCALIP - - [$LOGDATE$] "GET http://localhost:$HGPORT/?cmd=batch HTTP/1.1" - - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
115 $LOCALIP - - [$LOGDATE$] "GET http://localhost:$HGPORT/?cmd=batch HTTP/1.1" - - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
117 $LOCALIP - - [$LOGDATE$] "GET http://localhost:$HGPORT/?cmd=getbundle HTTP/1.1" - - x-hgarg-1:bookmarks=1&$USUAL_BUNDLE_CAPS$&cg=1&common=0000000000000000000000000000000000000000&heads=83180e7845de420a1bb46896fd5fe05294f8d629&listkeys=bookmarks&phases=1 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
116 $LOCALIP - - [$LOGDATE$] "GET http://localhost:$HGPORT/?cmd=getbundle HTTP/1.1" - - x-hgarg-1:bookmarks=1&$USUAL_BUNDLE_CAPS$&cg=1&common=0000000000000000000000000000000000000000&heads=83180e7845de420a1bb46896fd5fe05294f8d629&listkeys=bookmarks&phases=1 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
118 * - - [*] "GET http://localhost:$HGPORT/?cmd=capabilities HTTP/1.1" - - (glob)
117 * - - [*] "GET http://localhost:$HGPORT/?cmd=capabilities HTTP/1.1" - - (glob)
119 $LOCALIP - - [$LOGDATE$] "GET http://localhost:$HGPORT/?cmd=batch HTTP/1.1" - - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
118 $LOCALIP - - [$LOGDATE$] "GET http://localhost:$HGPORT/?cmd=batch HTTP/1.1" - - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
120 $LOCALIP - - [$LOGDATE$] "GET http://localhost:$HGPORT/?cmd=getbundle HTTP/1.1" - - x-hgarg-1:bookmarks=1&$USUAL_BUNDLE_CAPS$&cg=1&common=0000000000000000000000000000000000000000&heads=83180e7845de420a1bb46896fd5fe05294f8d629&listkeys=bookmarks&phases=1 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
119 $LOCALIP - - [$LOGDATE$] "GET http://localhost:$HGPORT/?cmd=getbundle HTTP/1.1" - - x-hgarg-1:bookmarks=1&$USUAL_BUNDLE_CAPS$&cg=1&common=0000000000000000000000000000000000000000&heads=83180e7845de420a1bb46896fd5fe05294f8d629&listkeys=bookmarks&phases=1 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
121 * - - [*] "GET http://localhost:$HGPORT/?cmd=capabilities HTTP/1.1" - - (glob)
120 * - - [*] "GET http://localhost:$HGPORT/?cmd=capabilities HTTP/1.1" - - (glob)
122 $LOCALIP - - [$LOGDATE$] "GET http://localhost:$HGPORT/?cmd=batch HTTP/1.1" - - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
121 $LOCALIP - - [$LOGDATE$] "GET http://localhost:$HGPORT/?cmd=batch HTTP/1.1" - - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
123 $LOCALIP - - [$LOGDATE$] "GET http://localhost:$HGPORT/?cmd=getbundle HTTP/1.1" - - x-hgarg-1:bookmarks=1&$USUAL_BUNDLE_CAPS$&cg=1&common=0000000000000000000000000000000000000000&heads=83180e7845de420a1bb46896fd5fe05294f8d629&listkeys=bookmarks&phases=1 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
122 $LOCALIP - - [$LOGDATE$] "GET http://localhost:$HGPORT/?cmd=getbundle HTTP/1.1" - - x-hgarg-1:bookmarks=1&$USUAL_BUNDLE_CAPS$&cg=1&common=0000000000000000000000000000000000000000&heads=83180e7845de420a1bb46896fd5fe05294f8d629&listkeys=bookmarks&phases=1 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
General Comments 0
You need to be logged in to leave comments. Login now