~statik/ubuntu/maverick/erlang/erlang-merge-testing

1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
1
<?xml version="1.0" encoding="latin1" ?>
2
<!DOCTYPE chapter SYSTEM "chapter.dtd">
3
4
<chapter>
5
  <header>
6
    <copyright>
1.2.5 by Sergei Golovan
Import upstream version 13.b.4-dfsg
7
      <year>2004</year><year>2010</year>
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
8
      <holder>Ericsson AB. All Rights Reserved.</holder>
9
    </copyright>
10
    <legalnotice>
11
      The contents of this file are subject to the Erlang Public License,
12
      Version 1.1, (the "License"); you may not use this file except in
13
      compliance with the License. You should have received a copy of the
14
      Erlang Public License along with this software. If not, it can be
15
      retrieved online at http://www.erlang.org/.
1.2.5 by Sergei Golovan
Import upstream version 13.b.4-dfsg
16
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
17
      Software distributed under the License is distributed on an "AS IS"
18
      basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
19
      the License for the specific language governing rights and limitations
20
      under the License.
1.2.5 by Sergei Golovan
Import upstream version 13.b.4-dfsg
21
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
22
    </legalnotice>
23
24
    <title>Inets Release Notes History</title>
25
    <prepared></prepared>
26
    <responsible></responsible>
27
    <docno></docno>
28
    <approved></approved>
29
    <checked></checked>
30
    <date>04-09-30</date>
31
    <rev>A</rev>
32
    <file>notes_history.sgml</file>
33
  </header>
34
  
35
  <section>
36
  <title>Inets 4.7.17</title>
37
  
38
  <section>
39
    <title>Fixed Bugs and Malfunctions</title>
40
    <list type="bulleted">
41
      <item>
42
	<p>[HTTP client] - Could fail in retry_pipeline/2 due to an
43
	  incorrect assumption of an internal returnvalue.</p>
44
	<p>Own Id: OTP-6791</p>
45
      </item>
46
      <item>
47
	<p>[HTTP client] - The check of the value of the transfer
48
	  encoding has been updated so that it is case insensitive.</p>
49
	<p>Own Id: OTP-6807</p>
50
      </item>
51
      <item>
52
	<p>[HTTP client] - When receiving a 304 "Not Modified"
53
	  reply, the httpc_handler will no longer expect to receive
54
	  a HTTP body.</p>
55
	<p>Own Id: OTP-6821</p>
56
      </item>
57
      <item>
58
	<p>[HTTP client] - Parsing of the HTTP response failed when
59
	  there was no headers fields in the response.</p>
60
	<p>Own Id: OTP-6830</p>
61
      </item>
62
    </list>
63
  </section>
64
  
65
  <section>
66
    <title>Improvements and New Features</title>
67
    <list type="bulleted">
68
      <item>
69
	<p>[HTTP server] - Started clean up of code so that it uses
70
	  stdlib functions instead of reinventing them.</p>
71
	<p>Own Id: OTP-6808</p>
72
      </item>
73
    </list>
74
  </section>
75
76
  </section>
77
78
  <section>
79
  <title>Inets 4.7.16</title>
80
81
  <section>
82
    <title>Improvements and New Features</title>
83
    <list type="bulleted">
84
      <item>
85
	<p>Minor Makefile changes.</p>
86
	<p>Own Id: OTP-6689</p>
87
      </item>
88
      <item>
89
	<p>http_base_64:encode/decode and
90
	  httpd_util:to_upper/to_lower are now deprecated, as these
91
	  functions has been moved to stdlib, using them will now
92
	  cause an compiler warning and the documentation of them
93
	  has been removed.</p>
94
	<p>Own Id: OTP-6716</p>
95
      </item>
96
      <item>
97
	<p>When making an asynchronous HTTP request and the
98
	  underlying gen_tcp:connect failed with timeout (not a
99
	  very common case) the return of the asynchronous HTTP
100
	  request was delayed for "timeout" seconds. This happened
101
	  due to the fact that when spawning a gen_server process
1.2.4 by Sergei Golovan
Import upstream version 13.b.3-dfsg
102
	  the spawn will wait for the init function to complete.
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
103
	  This is now avoided using proc_lib and
104
	  gen_server:enter_loop/3, hence the asynchronous HTTP
105
	  request return will not be delayed. Also the request
106
	  timeout value is now propagated to gen_tcp rather that
107
	  relying on the system default.</p>
108
	<p>Own Id: OTP-6735</p>
109
      </item>
110
    </list>
111
  </section>
112
  </section>
113
114
  <section>
115
  <title>Inets 4.7.15</title>
116
117
  <section>
118
    <title>Fixed Bugs and Malfunctions</title>
119
    <list type="bulleted">
120
      <item>
121
	<p>[tftp] The TFTP client/server implements now a more
122
	  relaxed interpretation of the RFC 1350 regarding
123
	  re-receive of acknowledgments. If multiple copies of the
124
	  same acknowledgments is received the spurious ones are
125
	  silently ignored. This fix was intended for inets-4.7.14
1.2.4 by Sergei Golovan
Import upstream version 13.b.3-dfsg
126
	  but accidentaly it was not included in that release.</p>
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
127
	<p>Own Id: OTP-6706 Aux Id: OTP-6691 </p>
128
      </item>
129
    </list>
130
  </section>
131
132
  <section>
133
    <title>Improvements and New Features</title>
134
    <list type="bulleted">
135
      <item>
136
	<p>Minor Makefile changes.</p>
137
	<p>Own Id: OTP-6689</p>
138
      </item>
139
    </list>
140
  </section>
141
  </section>
142
143
  <section>
144
  <title>Inets 4.7.14</title>
145
146
  <section>
147
    <title>Fixed Bugs and Malfunctions</title>
148
    <list type="bulleted">
149
      <item>
150
	<p>[tftp] The TFTP client/server implements now a more
151
	  relaxed interpretation of the RFC 1350 regarding
152
	  re-receive of acknowledgments. If multiple copies of the
153
	  same acknowledgments is received the spurious ones are
154
	  silently ignored.</p>
155
	<p>Own Id: OTP-6691</p>
156
      </item>
157
    </list>
158
  </section>
159
  </section>
160
161
  <section>
162
  <title>Inets 4.7.13</title>
163
164
  <section>
165
    <title>Improvements and New Features</title>
166
    <list type="bulleted">
167
      <item>
168
	<p>[tftp] The TFTP client/server implements now a more
169
	  relaxed interpretation of the RFC 1350 regarding
170
	  re-receive of data packets. If multiple copies of the
171
	  same data packet is received the spurious ones are
172
	  silently ignored.</p>
173
	<p>Own Id: OTP-6642</p>
174
      </item>
175
    </list>
176
  </section>
177
  </section>
178
179
  <section>
180
  <title>Inets 4.7.12</title>
181
182
  <section>
183
    <title>Improvements and New Features</title>
184
    <list type="bulleted">
185
      <item>
186
	<p>[httpd] - When calling httpd:restart there was a file
187
	  descriptor and ets table leek due to the fact that the
188
	  semantics of the function restart is not restart but
189
	  reload.</p>
190
	<p>Own Id: OTP-6573 Aux Id: seq10607 </p>
191
      </item>
192
      <item>
193
	<p>[tftp] Crash in tftp_engine:terminate/3 caused big crash
194
	  report. The file was however transferred as normal, but
195
	  the ugly printout is now gone.</p>
196
	<p>Own Id: OTP-6596 Aux Id: seq10618 </p>
197
      </item>
198
    </list>
199
  </section>
200
  </section>
201
202
  <section>
203
  <title>Inets 4.7.11</title>
204
205
  <section>
206
    <title>Fixed Bugs and Malfunctions</title>
207
    <list type="bulleted">
208
      <item>
209
	<p>[http] - Chunked encoding updated to handle the empty
210
	  chunk.</p>
211
	<p>Own Id: OTP-6511</p>
212
      </item>
213
      <item>
214
	<p>[http] - Removed minor bugs and dead code found by
215
	  dialyzer.</p>
216
	<p>Own Id: OTP-6522</p>
217
      </item>
218
    </list>
219
  </section>
220
  </section>
221
222
  <section>
223
  <title>Inets 4.7.10</title>
224
225
  <section>
226
    <title>Improvements and New Features</title>
227
    <list type="bulleted">
228
      <item>
229
	<p>[httpd] - The server no longer produces error messages
230
	  when the client resets the the connection. This is not an
231
	  error as far as the server is concerned.</p>
232
	<p>Own Id: OTP-6484 Aux Id: seq10568 </p>
233
      </item>
234
      <item>
235
	<p>[tftp] The server is now silent by default. Error
236
	  messages can however be displayed by setting the debug
237
	  level to 'error' (new) or higher.</p>
238
	<p>Own Id: OTP-6498</p>
239
      </item>
240
    </list>
241
  </section>
242
  </section>
243
244
  <section>
245
  <title>Inets 4.7.9</title>
246
247
  <section>
248
    <title>Fixed Bugs and Malfunctions</title>
249
    <list type="bulleted">
250
      <item>
251
	<p>Bug in in handling of request timers has been corrected.</p>
252
	<p>Own Id: OTP-6476</p>
253
      </item>
254
    </list>
255
  </section>
256
257
  <section>
258
    <title>Improvements and New Features</title>
259
    <list type="bulleted">
260
      <item>
261
	<p>[tftp] - Daemon was only able to process one request when
262
	  fd option was given.</p>
263
	<p>Own Id: OTP-6480</p>
264
      </item>
265
    </list>
266
  </section>
267
  </section>
268
269
  <section>
270
  <title>Inets 4.7.8</title>
271
272
  <section>
273
    <title>Fixed Bugs and Malfunctions</title>
274
    <list type="bulleted">
275
      <item>
276
	<p>[ftp, httpc] - Updated the internal ensure_started
277
	  functions to handle that inets was started as an included
278
	  application.</p>
279
	<p>Own Id: OTP-6409 Aux Id: seq10546 </p>
280
      </item>
281
    </list>
282
  </section>
283
284
  <section>
285
    <title>Improvements and New Features</title>
286
    <list type="bulleted">
287
      <item>
288
	<p>[httpd] - Guard added to API function
289
	  httpd_util:integer_to_hexlist/1.</p>
290
	<p>Own Id: OTP-6397</p>
291
      </item>
292
      <item>
293
	<p>[tftp] - Introduced ability to use prebound ports (see
294
	  the option {port, Port} for more info). Added peer info
295
	  (host and port) as new optional argument to prepare and
296
	  open functions in tftp callback modules.</p>
297
	<p>Own Id: OTP-6413</p>
298
      </item>
299
    </list>
300
  </section>
301
  </section>
302
303
  <section>
304
  <title>Inets 4.7.7</title>
305
306
  <section>
307
    <title>Fixed Bugs and Malfunctions</title>
308
    <list type="bulleted">
309
      <item>
1.2.4 by Sergei Golovan
Import upstream version 13.b.3-dfsg
310
	<p>[httpd] - The http server could throw away pipelined
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
311
	  requests leaving the client hanging.</p>
312
	<p>Own Id: OTP-6310</p>
313
      </item>
314
      <item>
315
	<p>[ftp] - Code for handling fallback to ipv4 was not
316
	  exhaustive.</p>
317
	<p>Own Id: OTP-6312</p>
318
      </item>
319
      <item>
320
	<p>[httpd] - Incorrect handling of ipv6 address would crash
321
	  the loading of the BindAddress parameter, which had the
322
	  consequence that you could not start more than one HTTP
323
	  server on an erlang node.</p>
324
	<p>Own Id: OTP-6323</p>
325
      </item>
326
      <item>
327
	<p>[httpc] - Some 30X codes, as for instance 302, should not
1.2.4 by Sergei Golovan
Import upstream version 13.b.3-dfsg
328
	  always be automatically redirected but in inets-4.7.6 some
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
329
	  restrictions where made too hard, never allowing an
330
	  automatic redirection. (Automatic redirect should be
331
	  allowed for get and head.)</p>
332
	<p>Own Id: OTP-6332</p>
333
      </item>
334
      <item>
335
	<p>[ftp] - The mode flag that could be used to force ftp
336
	  active mode was ignored. Only the deprecated function
337
	  force_active/1 works for prior releases to this one.</p>
338
	<p>Own Id: OTP-6342</p>
339
      </item>
340
    </list>
341
  </section>
342
343
  <section>
344
    <title>Improvements and New Features</title>
345
    <list type="bulleted">
346
      <item>
347
	<p>[httpc] - Added debug feature to turn on/off some basic
348
	  erlang tracing on client processes.</p>
349
	<p>Own Id: OTP-6326</p>
350
      </item>
351
    </list>
352
  </section>
353
  </section>
354
355
  <section>
356
  <title>Inets 4.7.6</title>
357
358
  <section>
359
    <title>Fixed Bugs and Malfunctions</title>
360
    <list type="bulleted">
361
      <item>
362
	<p>[httpc] - The parsing of uri's was rewritten so that it
363
	  should handle all types of uri's including ipv6 uri's.</p>
364
	<p>Own Id: OTP-5677</p>
365
      </item>
366
      <item>
367
	<p>[httpc, httpd] - Extensions and trailers where not
368
	  properly handled by the chunk decoding implementation.</p>
369
	<p>Own Id: OTP-6005 Aux Id: OTP-6264 </p>
370
      </item>
371
      <item>
372
	<p>[httpc] - A request resulting in an empty body is now
373
	  returned without any delays.</p>
374
	<p>Own Id: OTP-6243</p>
375
      </item>
376
      <item>
377
	<p>[httpc] - When http:request/4 was used with a configured
378
	  proxy, and the webserver returns 3XX code, http:request/4
379
	  entered an endless loop. Two problems was solved in this
380
	  area, the absolute uri is now updated when a redirect is
381
	  issued, so that the problem in this case will not arise,
382
	  and the redirection endless loop detection was fixed so
383
	  that will actually detect potential endless loops.</p>
384
	<p>Own Id: OTP-6244</p>
385
      </item>
386
      <item>
387
	<p>[httpc, httpd] - In some cases if a body contained the
1.2.5 by Sergei Golovan
Import upstream version 13.b.4-dfsg
388
	  sequence "\r\n0" and was chunked encoded this sequence
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
389
	  was incorrectly interpreted as the last chunk.</p>
390
	<p>Own Id: OTP-6264 Aux Id: OTP-6005 </p>
391
      </item>
392
      <item>
393
	<p>[httpc, httpd] - http_request.erl didn't handle https
394
	  URIs, which meant that redirects from ESI did not work.</p>
395
	<p>Own Id: OTP-6274</p>
396
      </item>
397
      <item>
398
	<p>[httpc, httpd] - The base 64 decoder was missing a guard
399
	  so that invalid input lead to an emulator crash instead
400
	  of a function clause as expected. Also the http server
401
	  has been improved to handle the function clause error
402
	  returning a bad credentials reply to the client.</p>
403
	<p>Own Id: OTP-6279</p>
404
      </item>
405
      <item>
406
	<p>[httpc] - Changed internal default value as it sometimes
407
	  would be interpreted incorrectly causing the client to
408
	  return an incomplete body.</p>
409
	<p>Own Id: OTP-6283</p>
410
      </item>
411
      <item>
412
	<p>[httpc] - Handling of 30X codes was changed so that it
413
	  works according to the documentation. For instance 301
414
	  and 302 codes will not be automatically redirected.</p>
415
	<p>Own Id: OTP-6297</p>
416
      </item>
417
      <item>
418
	<p>[httpc] - A bug in the pipeline-handling code could cause
419
	  a response to be sent to the client with an incorrect
420
	  request id.</p>
421
	<p>Own Id: OTP-6303</p>
422
      </item>
423
    </list>
424
  </section>
425
426
  <section>
427
    <title>Improvements and New Features</title>
428
    <list type="bulleted">
429
      <item>
430
	<p>[httpc] - Added feature to send header values as they
431
	  where typed by the user of the client. Note that the http
1.2.4 by Sergei Golovan
Import upstream version 13.b.3-dfsg
432
	  standard requires them to be case insensitive. This
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
433
	  feature should only be used if there is no other way to
434
	  communicate with the server or for testing purpose.</p>
435
	<p>Own Id: OTP-5527</p>
436
      </item>
437
      <item>
438
	<p>[httpc] - When using asynchronous HTTP-request it is now
439
	  possible to receive "200-responses" as streams instead of
440
	  having to wait until the whole response has been
441
	  delivered. It also possible to stream "200-response
442
	  bodys" to a file both for synchronous and asynchronous
443
	  requests.</p>
444
	<p>Own Id: OTP-6263</p>
445
      </item>
446
      <item>
447
	<p>[httpc] - Added option to generate Proxy-Authorization
448
	  header from provided proxy username and password.</p>
449
	<p>Own Id: OTP-6280</p>
450
      </item>
451
    </list>
452
  </section>
453
  </section>
454
455
  <section>
456
  <title>Inets 4.7.5</title>
457
458
  <section>
459
    <title>Fixed Bugs and Malfunctions</title>
460
    <list type="bulleted">
461
      <item>
462
	<p>[FTP] Change documentation so that it agrees with the
463
	  default behaviour of the code regarding the use of
464
	  transfer type, which is right according to rfc959.</p>
465
	<p>Own Id: OTP-6018</p>
466
      </item>
467
      <item>
468
	<p>[ftp] The application handles the case if the owning
469
	  process terminates with the reason 'shutdown'.</p>
470
	<p>Own Id: OTP-6035</p>
471
      </item>
472
      <item>
473
	<p>[ftp] Handle file errors from the FTP server.</p>
474
	<p>Own Id: OTP-6036</p>
475
      </item>
476
      <item>
477
	<p>[httpd] Header parsing of reply from cgi script incorrect.</p>
478
	<p>Own Id: OTP-6145</p>
479
      </item>
480
      <item>
481
	<p>[ftp] The timeout given in the ftp:open call was not
482
	  properly used, which could leave the caller hanging
483
	  forever.</p>
484
	<p>Own Id: OTP-6184</p>
485
	<p>Aux Id: seq10388</p>
486
      </item>
487
      <item>
488
	<p>[httpd] HTTPD request handler does not handle unexpected info
1.2.4 by Sergei Golovan
Import upstream version 13.b.3-dfsg
489
	  properly, which causes an unnecessarily obscure error 
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
490
	  message.</p>
491
	<p>Own Id: OTP-6189</p>
492
	<p>Aux Id: seq10395</p>
493
      </item>
494
      <item>
495
	<p>[http] Misc fixes in the URI parsing module.</p>
496
	<p>Igor Goryachev</p>
497
	<p>Own Id: OTP-6191</p>
498
      </item>
499
    </list>
500
  </section>
501
502
  <section>
503
    <title>Improvements and New Features</title>
504
    <list type="bulleted">
505
      <item>
506
	<p>Added application interface module: <c>inets</c>.</p>
507
	<p>Own Id: OTP-6135</p>
508
      </item>
509
    </list>
510
  </section>
511
  </section>
512
513
  <section>
514
  <title>Inets 4.7.4</title>
515
516
  <section>
517
    <title>Fixed Bugs and Malfunctions</title>
518
    <list type="bulleted">
519
      <item>
520
	<p>Removed code generating compiler warnings</p>
521
	<p>Own Id: OTP-6069</p>
522
      </item>
523
    </list>
524
  </section>
525
526
  <section>
527
    <title>Improvements and New Features</title>
528
    <list type="bulleted">
529
      <item>
530
	<p>[tftp] Added documentation (manual page) for 
531
	  <seealso marker="tftp">TFTP</seealso>.</p>
532
	<p>Own Id: OTP-6082</p>
533
      </item>
534
    </list>
535
  </section>
536
  </section>
537
538
  <section>
539
  <title>Inets 4.7.3</title>
540
541
  <section>
542
    <title>Fixed Bugs and Malfunctions</title>
543
    <list type="bulleted">
544
      <item>
545
	<p>[http,server] started dbg even though no debugging was
546
	  desired.</p>
547
	<p>Own Id: OTP-5984 Aux Id: seq10290 </p>
548
      </item>
549
      <item>
550
	<p>[http,server] request handler process died ugly due to a
551
	  parse error when validating a bad request.</p>
552
	<p>Own Id: OTP-6003 Aux Id: seq10260 </p>
553
      </item>
554
    </list>
555
  </section>
556
  </section>
557
558
  <section>
559
  <title>Inets 4.7.2</title>
560
561
  <section>
562
    <title>Fixed Bugs and Malfunctions</title>
563
    <list type="bulleted">
564
      <item>
565
	<p>[http,server] Server falsely sets ipv6 enabled when it
566
	  gets an ipv4-mapped ipv6 address.</p>
567
	<p>Own Id: OTP-5941 Aux Id: seq10221 </p>
568
      </item>
569
      <item>
570
	<p>[http,server] In case http version is unknown of client
571
	  use HTTP1.0 to send status.</p>
572
	<p>Own Id: OTP-5943 Aux Id: seq10198 </p>
573
      </item>
574
      <item>
1.2.4 by Sergei Golovan
Import upstream version 13.b.3-dfsg
575
	<p>[http,server] The process handling a request now ignores
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
576
	  garbage messages.</p>
577
	<p>Own Id: OTP-5961 Aux Id: seq10198 </p>
578
      </item>
579
      <item>
580
	<p>[http,server] Changed some actions taken if config data
581
	  in httpd services was faulty.</p>
582
	<p>Own Id: OTP-5962 Aux Id: seq10198 </p>
583
      </item>
584
    </list>
585
  </section>
586
  </section>
587
588
  <section>
589
  <title>inets 4.7.1</title>
590
591
  <section>
592
    <title>Fixed Bugs and Malfunctions</title>
593
    <list type="bulleted">
594
      <item>
595
	<p>[http,server] It was possible to read arbitrary files on
1.2.4 by Sergei Golovan
Import upstream version 13.b.3-dfsg
596
	  server by prepending ././ and ../../ in front of the file
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
597
	  name.</p>
598
	<p>Own Id: OTP-5938</p>
599
      </item>
600
    </list>
601
  </section>
602
  </section>
603
604
  <section>
605
  <title>Inets 4.7</title>
606
607
  <section>
608
    <title>Fixed Bugs and Malfunctions</title>
609
    <list type="bulleted">
610
      <item>
611
	<p>[http,server] Handling of undefined file times (e.g.
612
	  modification time: the mtime field on the file_info
613
	  record).</p>
614
	<p>Own Id: OTP-5865 Aux Id: OTP-5844 </p>
615
      </item>
616
    </list>
617
  </section>
618
619
  <section>
620
    <title>Improvements and New Features</title>
621
    <list type="bulleted">
622
      <item>
623
	<p>[http,server]It is now possible to set the wanted timeout
624
	  for the server to setup a request connection. A new
625
	  syntax for inets.config is provided in the users guide
626
	  documentation. This syntax also allows to set tracing of
627
	  the server for debug purposes.</p>
628
	<p>Own Id: OTP-5913 Aux Id: seq10198 </p>
629
      </item>
630
    </list>
631
  </section>
632
  </section>
633
634
  <section>
635
  <title>Inets 4.6.2</title>
636
637
  <section>
638
    <title>Fixed Bugs and Malfunctions</title>
639
    <list type="bulleted">
640
      <item>
641
	<p>[http,server] Had earlier forgot to convert a value in
642
	  entity_body to a binary.</p>
643
	<p>Own Id: OTP-5796</p>
644
      </item>
645
      <item>
646
	<p>[http,server] Now application checks whether the
647
	  necessary directives under directive Directory exist.</p>
648
	<p>Own Id: OTP-5821</p>
649
      </item>
650
    </list>
651
  </section>
652
  </section>
653
654
  <section>
655
  <title>Inets 4.6.1</title>
656
657
  <section>
658
    <title>Fixed Bugs and Malfunctions</title>
659
    <list type="bulleted">
660
      <item>
661
	<p>[http, client] If an Ipv4-mapped ipv6 address is used the
662
	  client now falls back on ipv4.</p>
663
	<p>Own Id: OTP-5773 Aux Id: OTP-5765, OTP-5764 </p>
664
      </item>
665
      <item>
666
	<p>[http,server] Content-length may got a too low value,
667
	  causing loss of data in clients.</p>
668
	<p>Own Id: OTP-5775 Aux Id: seq10110 </p>
669
      </item>
670
    </list>
671
  </section>
672
673
  <section>
674
    <title>Improvements and New Features</title>
675
    <list type="bulleted">
676
      <item>
677
	<p>[http, client] The verbose mode prints what was sent and
678
	  received during a request. Added a <c>verbose</c> option
679
	  that can be used by <c>http:set_options/1</c></p>
680
	<p>Own Id: OTP-5766</p>
681
      </item>
682
    </list>
683
  </section>
684
  </section>
685
686
  <section>
687
  <title>Inets 4.6</title>
688
689
  <section>
690
    <title>Fixed Bugs and Malfunctions</title>
691
    <list type="bulleted">
692
      <item>
693
	<p>[ftp, client] - Improvement of error handling if
694
	  something goes wrong while handling the option list in
695
	  ftp:open/[1,2,3].</p>
696
	<p>Own Id: OTP-5711</p>
697
      </item>
698
      <item>
699
	<p>[ftp, client] - Error when parsing a multiple FTP
700
	  response line. The last line in a multiple response must
701
	  be the response code followed by a space. A server may
1.2.4 by Sergei Golovan
Import upstream version 13.b.3-dfsg
702
	  have intermediate lines that start with the response code
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
703
	  even if this is not recommended. The parsing missed to
704
	  make sure that that space was present in what it
705
	  considered to be the last line.</p>
706
	<p>Own Id: OTP-5712</p>
707
      </item>
708
      <item>
709
	<p>[http, client] - The HTTP client will now retry a
710
	  pipelined request that was unsuccessful due to the fact
711
	  that the server unexpectedly closed the pipeline
712
	  connection.</p>
713
	<p>Own Id: OTP-5728</p>
714
      </item>
715
      <item>
716
	<p>[http, server, esi] - Under some circumstances mod_esi
717
	  would send a corrupted content-length header.</p>
718
	<p>Own Id: OTP-5735</p>
719
      </item>
720
      <item>
721
	<p>[http, server, get] - Removed debug printout which 
722
	  caused a confusing "Socket closed"-printout at high
723
	  load.</p>
724
	<p>Own Id: OTP-5762 Aux Id: seq10101 </p>
725
      </item>
726
      <item>
727
	<p>FTP: a data connection setup to the ftp server that
728
	  failed caused a crash of the client. Now it is handled
1.2.4 by Sergei Golovan
Import upstream version 13.b.3-dfsg
729
	  smoothly.</p>
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
730
	<p>Own Id: OTP-5738</p>
731
      </item>
732
      <item>
1.2.4 by Sergei Golovan
Import upstream version 13.b.3-dfsg
733
	<p>[ftp] If host name is a ipv4 tuple ftp erroneous tries to
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
734
	  connect as a ipv6 address with the ipv4 address.</p>
735
	<p>Own Id: OTP-5764</p>
736
      </item>
737
      <item>
738
	<p>[ftp] Handles connect to ipv6/ipv4 address differently
739
	  according to a change in <c>inet:getaddr</c>.</p>
740
	<p>Own Id: OTP-5765</p>
741
      </item>
742
    </list>
743
  </section>
744
745
  <section>
746
    <title>Improvements and New Features</title>
747
    <list type="bulleted">
748
      <item>
749
	<p>[http, server] - The HTTP request handling was remoduled
750
	  to have a more straight forward error-handling. And the
751
	  internal debug strategy was changed to use tracing
752
	  instead of debug macros, which means we do not have to
753
	  write special debug code.</p>
754
	<p>Own Id: OTP-5729</p>
755
      </item>
756
      <item>
757
	<p>ftp:ls towards different ftp servers resulted in
758
	  different return results. E.g. the solaris 9 default
759
	  server caused <c>{ok,[]}</c> while older servers caused
760
	  <c>{error,epath}</c> as the result. For backwards
761
	  compatibility the behaviour has been changed to the old
762
	  result.</p>
763
	<p>Own Id: OTP-5731</p>
764
      </item>
765
      <item>
766
	<p>[http, server] - The documentation for the HTTP server
767
	  has been partly rewritten and very restructured too
768
	  provide a better overall picture. Lots of information
769
	  provided by "semi manual pages" has been moved to the
770
	  Users Guide.</p>
771
	<p>Own Id: OTP-5752</p>
772
      </item>
773
      <item>
774
	<p>FTP: verbose mode now also prints what the client sends
775
	  on the control channel.</p>
776
	<p>Own Id: OTP-5753</p>
777
      </item>
778
    </list>
779
  </section>
780
  </section>
781
782
  <section>
783
  <title>Inets 4.5.4</title>
784
785
  <section>
786
    <title>Fixed Bugs and Malfunctions</title>
787
    <list type="bulleted">
788
      <item>
789
	<p>[ftp, client] - Timing related issues could sometimes
790
	  cause the ftp response to be delayed.</p>
791
	<p>Own Id: OTP-5705 Aux Id: seq10055 </p>
792
      </item>
793
      <item>
794
	<p>[http, server, esi] - The dispatching of the post body to
1.2.4 by Sergei Golovan
Import upstream version 13.b.3-dfsg
795
	  the esi callback function was broken.</p>
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
796
	<p>Own Id: OTP-5706</p>
797
      </item>
798
    </list>
799
  </section>
800
  </section>
801
802
  <section>
803
  <title>Inets 4.5.3</title>
804
805
  <section>
806
    <title>Fixed Bugs and Malfunctions</title>
807
    <list type="bulleted">
808
      <item>
809
	<p>[ftp, client] - The FTP error code 550 was handled in an
810
	  unexpected way. Some earlier versions of inets had a
811
	  workaround for this in ftp:recv_bin/2 that was eliminated
812
	  during restructuring of the ftp module while implementing
813
	  ipv6 capabilities. The problem is now fixed.</p>
814
	<p>Own Id: OTP-5682 Aux Id: seq10048 </p>
815
      </item>
816
      <item>
817
	<p>[http, client] Post request with a body in binary format
818
	  failed as length was used instead of size.</p>
819
	<p>Own Id: OTP-5686</p>
820
      </item>
821
      <item>
822
	<p>[ftp, client] - For some FTP commands the FTP server will
823
	  send more than one reply on the FTP control channel. In
824
	  the case of a fast FTP server the client would sometimes
825
	  wrongly disregard the second answer as trailing garbage
826
	  attached to the first reply.</p>
827
	<p>Own Id: OTP-5690 Aux Id: seq10055 </p>
828
      </item>
829
    </list>
830
  </section>
831
832
  <section>
833
    <title>Improvements and New Features</title>
834
    <list type="bulleted">
835
      <item>
836
	<p>[ftp, client] - A new option {progress, {CBmodule,
837
	  CBFunction, InitProgressTerm} has been added to allow
838
	  users to create things such as progress bars in there
839
	  GUI's. The option affects ftp:send/[3,4] and
840
	  ftp:recv/[3,4].</p>
841
	<p>Own Id: OTP-5680</p>
842
      </item>
843
      <item>
844
	<p>[http, client] - Added new API function http:request/1</p>
845
	<p>Own Id: OTP-5691</p>
846
      </item>
847
      <item>
848
	<p>[httpd, server] - mod_cgi is implemented according to
849
	  CGI-1.1 RFC 3875, an early implementation was based on
850
	  some draft that is not totally compliant to the RFC.
851
	  Documentation was updated. Also some code was
852
	  restructured to facilitate testing and maintenance of the
853
	  server.</p>
854
	<p>Own Id: OTP-5694</p>
855
      </item>
856
    </list>
857
  </section>
858
  </section>
859
860
  <section>
861
  <title>Inets 4.5.2</title>
862
863
  <section>
864
    <title>Fixed Bugs and Malfunctions</title>
865
    <list type="bulleted">
866
      <item>
867
	<p>[ftp, client] Calling ftp:recv/2 twice on the same
868
	  connection failed due to that the last message on the
869
	  ctrl channel was not appropriately taken care of. This
870
	  could potentially cause a problem for any operation
871
	  performed on the same connection where there had
872
	  previously been an ftp:recv/2 call. Also, in some cases,
873
	  when the process tries to close the data connection, it
874
	  does not take into account that the data connection may
875
	  actually not have been established.</p>
876
	<p>Own Id: OTP-5662 Aux Id: seq10004, seq9988 </p>
877
      </item>
878
      <item>
879
	<p>[ftp, client] Enhanced error handling, mainly so the ftp
880
	  client behaves gracefully when the user does strange
881
	  things such as violate the user API.</p>
882
	<p>Own Id: OTP-5665</p>
883
      </item>
884
    </list>
885
  </section>
886
887
  <section>
888
    <title>Improvements and New Features</title>
889
    <list type="bulleted">
890
      <item>
891
	<p>[ftp, client] Added open option: mode.Deprecates
892
	  function force_active/1.</p>
893
	<p>Own Id: OTP-5663</p>
894
      </item>
895
    </list>
896
  </section>
897
  </section>
898
899
  <section>
900
  <title>Inets 4.5.1</title>
901
902
  <section>
903
    <title>Fixed Bugs and Malfunctions</title>
904
    <list type="bulleted">
905
      <item>
906
	<p>[http, server] The server did not handle the config 
907
	  directive BindAddress value "*" properly. 
908
	  When creating the option list for the listen call, 
909
	  everything beside the atom undefined (if BindAddress 
910
	  was never given) and an 4-tuple (e.g. BindAddress
911
	  value is 192.168.0.30) was incorrectly assumed to be 
912
	  an ipv6 address. 
913
	  For undefined (no BindAddress), Inets attempts to 
914
	  figure out if it is running on a ipv6-machine, and if
915
	  so, add the inet6 option when calling listen. The 
916
	  same approach should be used when BindAddress is 
917
	  assigned the value "*".</p>
918
	<p>Own Id: OTP-5642</p>
919
      </item>
920
      <item>
921
	<p>Some data doesn't pass through http_base_64:decode/1 correctly.
922
	  The decoding routine fails whenever a 4-character group of the 
923
	  encoding ends with "9" or "99". If it ends with 99, two bytes 
924
	  will be lost in the decode routine. If it ends with a single 9, 
925
	  one byte will be lost in the decode.</p>
926
	<p>Own Id: OTP-5635 Aux Id: seq9971</p>
927
      </item>
928
      <item>
929
	<p>[http, server,esi] Web server does not handle status-code 
930
	  returned by an esi function. I.e. the esi-function 
931
	  can no longer control the status code.</p>
932
	<p>Own Id: OTP-5648 Aux Id: seq9982</p>
933
      </item>
934
      <item>
935
	<p>[http, server,esi] Corrected header format. First character 
936
	  was lower case, and there where no space after the ":"
937
	  character, example: content-length:0. Now, first character 
938
	  was upper case, and a space after the ":" character, 
939
	  example: Content-Length: 0 (To preserve
940
	  backward compatibility with the de-facto standard as the
941
	  new way does not break the HTTP standard!)</p>
942
	<p>Own Id: OTP-5649 Aux Id: seq9982</p>
943
      </item>
944
      <item>
945
	<p>[http, server, cgi] Parsing of the status header field could
946
	  cause a crash.</p>
947
	<p>Own Id: OTP-5650 Aux Id: seq9982</p>
948
      </item>
949
    </list>
950
  </section>
951
  </section>
952
953
  <section>
954
  <title>Inets 4.5</title>
955
956
  <section>
957
    <title>Fixed Bugs and Malfunctions</title>
958
    <list type="bulleted">
959
      <item>
960
	<p>The internal design of using blocking gen_tcp:recv with a
961
	  timeout and retries resulted in code that was hard to get
962
	  a good overview of, and ultimate led to situations where
963
	  the client got the wrong answer or no answer at all. The
964
	  errors where many times very timing dependent and mainly
965
	  effected the chunk-related functions, so if you where
1.2.4 by Sergei Golovan
Import upstream version 13.b.3-dfsg
966
	  lucky you probably would not have noticed. The internal
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
967
	  design was changed to use gen_tcp active once semantics.
968
	  The API is not effected except for the function
969
	  ftp:quote/2 which now returns a list of strings (ftp
1.2.5 by Sergei Golovan
Import upstream version 13.b.4-dfsg
970
	  result lines) where the line endings "\r\n" has been
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
971
	  removed. This was the original intention for the return
972
	  value of ftp:quote/2 but it was non trivial to make a
973
	  good such solution with the old design and a compromise
974
	  was made.</p>
975
	<p>*** POTENTIAL INCOMPATIBILITY ***</p>
976
	<p>Own Id: OTP-5623</p>
977
      </item>
978
      <item>
979
	<p>The new implementation of pipelining in inets-4.1 alas
980
	  was slightly broken and unfortunately not caught by the
981
	  test suite that apparently needs some additions. The
982
	  result was that requests that ought to have been
983
	  pipelined where not, this has now been fixed.</p>
984
	<p>Own Id: OTP-5624</p>
985
      </item>
986
      <item>
987
	<p>When using the latest esi interface with the callback
988
	  interface of arity 3, HTTP Content-Type headers where
989
	  ignored, this due to a subtle difference between this
990
	  interface and the old one in how they viewed HTTP
991
	  delimiters.</p>
992
	<p>Own Id: OTP-5627</p>
993
      </item>
994
    </list>
995
  </section>
996
997
  <section>
998
    <title>Improvements and New Features</title>
999
    <list type="bulleted">
1000
      <item>
1001
	<p>The HTTP server now supports ipv6 in the case that the
1002
	  underlying mechanisms also do so. (ssl does not yet
1003
	  support ipv6.)</p>
1004
	<p>Own Id: OTP-5141</p>
1005
      </item>
1006
      <item>
1007
	<p>The FTP client now supports ipv6 in the case that the
1008
	  underlying mechanisms also do so.</p>
1009
	<p>Own Id: OTP-5142</p>
1010
      </item>
1011
      <item>
1012
	<p>An option was added to disable the ipv6 support in the
1013
	  HTTP client. This to provide a workaround possibility for
1014
	  buggy ipv6-stacks.</p>
1015
	<p>Own Id: OTP-5625 Aux Id: seq9872</p>
1016
      </item>
1017
      <item>
1018
	<p>When generating dynamic HTTP response bodies the the
1019
	  default content-type is now set to "text/html" instead of
1020
	  "text/plain" which is more intuitive.</p>
1021
	<p>*** POTENTIAL INCOMPATIBILITY ***</p>
1022
	<p>Own Id: OTP-5626</p>
1023
      </item>
1024
    </list>
1025
  </section>
1026
  </section>
1027
1028
  <section>
1029
  <title>Inets 4.4.1</title>
1030
1031
  <section>
1032
    <title>Fixed Bugs and Malfunctions</title>
1033
    <list type="bulleted">
1034
      <item>
1035
	<p>Wrapper function http_transport:accept/3 did
1036
	  error-handling that it should not do because only the
1037
	  caller of the wrapper can determine what action to take.
1038
	  So timeouts where handled twice, once in http_transport
1039
	  and once in httpd_acceptor. Clean up of the wrapper
1040
	  module http_transport changed the action of the wrapper
1041
	  module and made the unwanted behavior noticeable in in
1042
	  OTP error logs. And now the unwanted error handling has
1043
	  been removed. The cleanup helped us find bad code but
1044
	  alas it also generates a lot of log printouts that are
1045
	  quite disturbing to the user of the HTTP-server.</p>
1046
	<p>Own Id: OTP-5549 Aux Id: seq9851 </p>
1047
      </item>
1048
      <item>
1049
	<p>In the rewrite for 4.4 some mod_esi-environment values
1050
	  where mistaken for ordinary header values and where
1051
	  incorrectly transformed to strings. They are now atoms
1052
	  again.</p>
1053
	<p>Own Id: OTP-5551 Aux Id: seq9854 </p>
1054
      </item>
1055
      <item>
1.2.5 by Sergei Golovan
Import upstream version 13.b.4-dfsg
1056
	<p>The HTTP server now handles 
1057
          "GET /\r\n\r\n"
1058
	  as well as
1059
	  "GET / \r\n\r\n". 
1060
          According to the RFC the whitespace is not needed.</p>
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
1061
	<p>Own Id: OTP-5552 Aux Id: seq8426 </p>
1062
      </item>
1063
    </list>
1064
  </section>
1065
1066
  <section>
1067
    <title>Improvements and New Features</title>
1068
    <list type="bulleted">
1069
      <item>
1070
	<p>The ftp client now supports passive mode. Actually the
1071
	  ftp client will always try to use passive mode and if it
1072
	  fails it will use active mode instead. It is also
1073
	  possible to force the ftp-client to use active mode, if
1074
	  that is desired, by calling ftp:force_active/1 this way
1075
	  you can get the old behavior.</p>
1076
	<p>*** POTENTIAL INCOMPATIBILITY ***</p>
1077
	<p>Own Id: OTP-5148</p>
1078
      </item>
1079
    </list>
1080
  </section>
1081
  </section>
1082
1083
  <section>
1084
  <title>Inets 4.4</title>
1085
1086
  <section>
1087
    <title>Fixed Bugs and Malfunctions</title>
1088
    <list type="bulleted">
1089
      <item>
1090
	<p>The server did not handle HTTP-0.9 messages with an
1091
	  implicit version.</p>
1092
	<p>Own Id: OTP-5513</p>
1093
      </item>
1094
      <item>
1095
	<p>An internal server timeout killed the request handling
1096
	  process without sending a message back to the client. As
1097
	  this timeout only affects a single request it has been
1098
	  set to infinity (if the main server process dies the
1099
	  request handling process will also die and the client
1100
	  will receive an error). This might make a client that
1101
	  does not use a timeout hang for a longer period of time,
1102
	  but that is an expected behavior!</p>
1103
	<p>Own Id: OTP-5514 Aux Id: seq9806 </p>
1104
      </item>
1105
      <item>
1106
	<p>That a third party closes the http servers accept socket
1.2.4 by Sergei Golovan
Import upstream version 13.b.3-dfsg
1107
	  is recoverable for inets, hence inets will only produce
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
1108
	  an info report as there was no error in Inets but
1109
	  measures where taken to avoid failure due to errors
1110
	  elsewhere.</p>
1111
	<p>Own Id: OTP-5516 Aux Id: seq9806 </p>
1112
      </item>
1113
      <item>
1114
	<p>The HTTP client proxy settings where ignored. Bug
1115
	  introduced in inets-4.3.</p>
1116
	<p>Own Id: OTP-5517</p>
1117
      </item>
1118
      <item>
1119
	<p>Inets only sent the "WWW-Authenticate" header at the
1120
	  first attempt to get a page, if the user supplied the
1121
	  wrong user/password combination the header was not sent
1122
	  again. This forces the user to kill the browser entirely
1123
	  after a failed login attempt, before the user may try to
1124
	  login again. Inets now always send the authentication
1125
	  header.</p>
1126
	<p>Own Id: OTP-5521</p>
1127
      </item>
1128
      <item>
1129
	<p>A major rewrite of big parts of the HTTP server code was
1130
	  performed. There where many things that did not work
1131
	  satisfactory. Cgi script handling can never have worked
1132
	  properly and the cases when it did sort of work, a big
1133
	  unnecessary delay was enforced. Headers where not always
1134
	  treated as expected and HTTP version handling did not
1135
	  work, all responses where sent as version HTTP/1.1 no
1136
	  matter what.</p>
1137
	<p>Own Id: OTP-5537</p>
1138
      </item>
1139
    </list>
1140
  </section>
1141
  </section>
1142
1143
  <section>
1144
  <title>Inets 4.3.1</title>
1145
1146
  <section>
1147
    <title>Fixed Bugs and Malfunctions</title>
1148
    <list type="bulleted">
1149
      <item>
1150
	<p>When further testing the functionality of https requests
1151
	  that goes through a proxy. We realised that alas this can
1152
	  not currently be supported as it requires features from
1153
	  the ssl implementation that is not currently available.
1154
	  So for now an error message will be returned when trying
1155
	  to use this functionality.</p>
1156
	<p>Own Id: OTP-5453</p>
1157
      </item>
1158
      <item>
1159
	<p>When trying to get a url from a server that does not
1160
	  exist the client hanged instead of returning an error
1161
	  message. Bug introduced in inets-4.3.</p>
1162
	<p>Own Id: OTP-5454</p>
1163
      </item>
1164
    </list>
1165
  </section>
1166
  </section>
1167
1168
  <section>
1169
  <title>Inets 4.3</title>
1170
1171
  <section>
1172
    <title>Fixed Bugs and Malfunctions</title>
1173
    <list type="bulleted">
1174
      <item>
1175
	<p>Tunneling of SSL through a proxy has now been
1176
	  implemented. However due to lack of test sites this has only
1177
	  partially been verified, it is likely that there will
1.2.4 by Sergei Golovan
Import upstream version 13.b.3-dfsg
1178
	  have to be future improvements in this area.</p>
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
1179
	<p>Own Id: OTP-5443</p>
1180
      </item>
1181
    </list>
1182
  </section>
1183
1184
  <section>
1185
    <title>Improvements and New Features</title>
1186
    <list type="bulleted">
1187
      <item>
1188
	<p>The pipeline timeout was changed to be zero by default to
1189
	  avoid that people by accident would create connection
1190
	  processes that never dies and eats up the socket
1191
	  resources.</p>
1192
	<p>*** POTENTIAL INCOMPATIBILITY ***</p>
1193
	<p>Own Id: OTP-5442</p>
1194
      </item>
1195
      <item>
1196
	<p>Altered the way spawn_link is used in mod_esi to avoid
1.2.4 by Sergei Golovan
Import upstream version 13.b.3-dfsg
1197
	  getting, in this scenario unwanted error reports, from
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
1198
	  spawn_link. (The behavior of spawn_link was altered in a
1199
	  not backwards compatible way.)</p>
1200
	<p>Own Id: OTP-5444</p>
1201
      </item>
1202
    </list>
1203
  </section>
1204
  </section>
1205
1206
  <section>
1207
  <title>Inets 4.2.1</title>
1208
1209
  <section>
1210
    <title>Fixed Bugs and Malfunctions</title>
1211
    <list type="bulleted">
1212
      <item>
1213
	<p>Sometimes EWS modules where called with an Info record
1214
	  where the peername field was {-1, "unknown"}. This could
1215
	  happen when a client was making a lot of requests which
1216
	  it discards before they where answered by the server. The
1217
	  server now ignores such requests and does not call the
1218
	  EWS modules in this case.</p>
1219
	<p>Own Id: OTP-5380 Aux Id: seq9739 </p>
1220
      </item>
1221
      <item>
1222
	<p>The HTTP-server now returns the 408 status code upon a
1223
	  request timeout as expected instead of the previous
1224
	  faulty behavior of sending a 500 status code.</p>
1225
	<p>Own Id: OTP-5409</p>
1226
      </item>
1227
      <item>
1228
	<p>The content length was put in to the HTTP-headers as an
1229
	  integer instead of as a string.</p>
1230
	<p>Own Id: OTP-5410</p>
1231
      </item>
1232
      <item>
1233
	<p>It was wrongly presumed that code:priv_dir would always
1234
	  be writable due to how the test-server works. The
1235
	  directory is now a configuration parameter in the
1236
	  inets-application configuration file. Failing to
1237
	  configure it will result in that all cookies are treated
1238
	  as session cookies.</p>
1239
	<p>Own Id: OTP-5411</p>
1240
      </item>
1241
    </list>
1242
  </section>
1243
1244
  <section>
1245
    <title>Improvements and New Features</title>
1246
    <list type="bulleted">
1247
      <item>
1248
	<p>An undocumented beta version of tftp is included.</p>
1249
	<p>Own Id: OTP-5419</p>
1250
      </item>
1251
    </list>
1252
  </section>
1253
  </section>
1254
1255
  <section>
1256
  <title>Inets 4.2</title>
1257
1258
  <section>
1259
    <title>Fixed Bugs and Malfunctions</title>
1260
    <list type="bulleted">
1261
      <item>
1262
	<p>When sending a request through a proxy the absolute URI
1263
	  must be used.</p>
1264
	<p>Own Id: OTP-5368</p>
1265
      </item>
1266
    </list>
1267
  </section>
1268
1269
  <section>
1270
    <title>Improvements and New Features</title>
1271
    <list type="bulleted">
1272
      <item>
1273
	<p>Basic support for cookies was implemented. Later some
1274
	  more functions to inspect cookies may be added.</p>
1275
	<p>Own Id: OTP-5331</p>
1276
      </item>
1277
      <item>
1278
	<p>A top tftp supervisor was added in preparation for adding
1279
	  a tftp service in a future Inets release.</p>
1280
	<p>Own Id: OTP-5379</p>
1281
      </item>
1282
    </list>
1283
  </section>
1284
  </section>
1285
1286
  <section>
1287
  <title>Inets 4.1</title>
1288
1289
  <section>
1290
    <title>Fixed Bugs and Malfunctions</title>
1291
    <list type="bulleted">
1292
      <item>
1293
	<p>The URI check that disables relative links that goes
1294
	  outside the server-root still missed a few cases, in
1295
	  spite of the improvement in OTP-5140.</p>
1296
	<p>Own Id: OTP-5249</p>
1297
      </item>
1298
      <item>
1299
	<p>The http client pipelining implementation has been
1300
	  rewritten as the old implementation was too optimistic
1301
	  about when to pipeline. In the process of doing this also
1302
	  the error handling was improved, better clean up is
1303
	  performed when the request handling process terminates
1304
	  and better handling of the case that the httpc_manager
1305
	  process dies and is restarted.</p>
1306
	<p>Own Id: OTP-5303</p>
1307
      </item>
1308
      <item>
1309
	<p>Improved handling of status codes 30X and 50X.</p>
1310
	<p>Own Id: OTP-5309</p>
1311
      </item>
1312
    </list>
1313
  </section>
1314
1315
  <section>
1316
    <title>Improvements and New Features</title>
1317
    <list type="bulleted">
1318
      <item>
1319
	<p>The Inets supervision tree has been reorganized to create
1320
	  a better balance between the Inets services. Preferably
1321
	  they should not effect each other. The ftp service has
1322
	  also been included in the Inets supervision tree, it was
1323
	  for reasons unknown, not included before.</p>
1324
	<p>Own Id: OTP-5188</p>
1325
      </item>
1326
      <item>
1327
	<p>The service concept in Inets is now better documented.</p>
1328
	<p>Own Id: OTP-5189</p>
1329
      </item>
1330
      <item>
1331
	<p>The Inets shutdown times have proven to be too short
1332
	  under some circumstances, as a heavy load, therefore they
1333
	  have been prolonged.</p>
1334
	<p>Own Id: OTP-5261 Aux Id: seq9624</p>
1335
      </item>
1336
      <item>
1337
	<p>Options for automatic redirection and pipelining is now
1338
	  available in the http client API.</p>
1339
	<p>Own Id: OTP-5304</p>
1340
      </item>
1341
    </list>
1342
  </section>
1343
  </section>
1344
1345
  <section>
1346
  <title>Inets 4.0.1</title>
1347
1348
  <section>
1349
    <title>Fixed Bugs and Malfunctions</title>
1350
    <list type="bulleted">
1351
      <item>
1352
	<p>A programming error could cause a badmatch in the
1353
	  http-client when the http response was chunk decoded.</p>
1354
	<p>Own Id: OTP-5101</p>
1355
      </item>
1356
      <item>
1357
	<p>The parsing of HTTP messages was missing a base case.
1358
	  This caused unexpected behavior when the separator CR and
1359
	  LF where received in different tcp packets.</p>
1360
	<p>Own Id: OTP-5239</p>
1361
      </item>
1362
    </list>
1363
  </section>
1364
  </section>
1365
1366
  <section>
1367
  <title>Inets 4.0</title>
1368
1369
  <section>
1370
    <title>Fixed Bugs and Malfunctions</title>
1371
    <list type="bulleted">
1372
      <item>
1373
	<p>When receiving a status 100 code, the client should only
1374
	  respond by sending the message body, if the client sent
1375
	  an expect header in the first place. Failing to do so may
1376
	  result in that the server receives the body twice.</p>
1377
	<p>Own Id: OTP-4848</p>
1378
      </item>
1379
      <item>
1380
	<p>mod_get now also handles http version HTTP/0.9</p>
1381
	<p>Own Id: OTP-4935 Aux Id: seq8426 </p>
1382
      </item>
1383
      <item>
1384
	<p>"Last-modified" field was incorrectly set to local time
1385
	  with the tag GMT, it is now corrected so that the time
1386
	  reflected is in fact GMT.</p>
1387
	<p>Own Id: OTP-4936</p>
1388
      </item>
1389
      <item>
1390
	<p>The client will only add a host-field to the request if
1391
	  there is not one already present.</p>
1392
	<p>Own Id: OTP-4984</p>
1393
      </item>
1394
      <item>
1395
	<p>The Inets application tries to be compatible with
1396
	  Apache. To be more compatible the option
1397
	  'MaxKeepAliveRequest' is renamed 'MaxKeepAliveRequests'.
1398
	  The old name is kept for backward compatibility.</p>
1399
	<p>Own Id: OTP-5024</p>
1400
      </item>
1401
      <item>
1402
	<p>Changing the base 64 decoding to not accept invalid
1403
	  input, uncovered a logical error in mod_security.erl An
1404
	  already decoded string was sent as input to decode. In
1405
	  this case, as it so happened, the two errors worked
1.2.4 by Sergei Golovan
Import upstream version 13.b.3-dfsg
1406
	  together creating the illusion that everything was right.
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
1407
	  This has now been corrected.</p>
1408
	<p>Own Id: OTP-5083</p>
1409
      </item>
1410
      <item>
1411
	<p>URLs where not properly scrutinised for relative paths. A
1412
	  malicious user could exploit this to read files outside
1413
	  the document root. This is no longer the case.</p>
1414
	<p>Own Id: OTP-5140</p>
1415
      </item>
1416
    </list>
1417
  </section>
1418
1419
  <section>
1420
    <title>Improvements and New Features</title>
1421
    <list type="bulleted">
1422
      <item>
1423
	<p>A HTTP 1.1 client is officially included in Inets. It is
1424
	  loosely based on the previously unsupported code
1425
	  contributed by Johan Blom. In this first version only the
1426
	  most basic HTTP functionality is supported. The user API
1427
	  has been changed.</p>
1428
	<p>*** POTENTIAL INCOMPATIBILITY ***</p>
1429
	<p>Own Id: OTP-5047</p>
1430
      </item>
1431
      <item>
1432
	<p>Fixed erroneous link in documentation.</p>
1433
	<p>Own Id: OTP-5089 Aux Id: seq8887 </p>
1434
      </item>
1435
      <item>
1436
	<p>Added the function quote/2 that lets you send an
1437
	  arbitrary FTP command to the FTP client.</p>
1438
	<p>Own Id: OTP-5099 Aux Id: seq8961 </p>
1439
      </item>
1440
      <item>
1441
	<p>Started integration of the HTTP client and server code
1442
	  too facilitate maintenance and further development.</p>
1443
	<p>Own Id: OTP-5110</p>
1444
      </item>
1445
      <item>
1446
	<p>Due to several possibilities to interpret the ftp
1447
	  standard some newer ftp-servers have interpreted the
1448
	  standard in such a way that the documented return value
1449
	  of ftp:nlist/2 does not always match the actual return
1450
	  value. Some extra checks have now been added to ensure
1451
	  the documented return value. This will also result in
1452
	  that ftp:nlist is not bug compatible in the case that
1453
	  nlist is given a filename instead of a directory it will
1454
	  now return an error instead of {ok, FileName}.</p>
1455
	<p>*** POTENTIAL INCOMPATIBILITY ***</p>
1456
	<p>Own Id: OTP-5165</p>
1457
      </item>
1458
      <item>
1459
	<p>Created a Users Guide for Inets. Earlier there where some
1460
	  fake manual pages and information was scattered
1461
	  everywhere and hard to find.</p>
1462
	<p>Own Id: OTP-5180</p>
1463
      </item>
1464
    </list>
1465
  </section>
1466
  </section>
1467
  
1468
  <section>
1469
    <title>Inets 3.0.10</title>
1470
    
1471
    <section>
1472
      <title>Fixed Bugs and Malfunctions</title>
1473
      <list type="bulleted">
1474
        <item>
1475
          <p>[httpd] - When calling httpd:restart there was a file
1476
            descriptor and ets table leek due to the fact that the
1477
            semantics of the function restart is not restart but
1478
            reload. This is solved in inets-4.7.12 and this special
1479
            inets-3.0.10 release is intended for old systems only.</p>
1480
          <p>Own Id: OTP-6579 Aux Id: OTP-6573, seq10607 </p>
1481
        </item>
1482
      </list>
1483
    </section>
1484
  </section>
1485
    
1486
  <section>
1487
    <title>Inets 3.0.9</title>
1488
    
1489
    <section>
1490
      <title>Fixed Bugs and Malfunctions</title>
1491
      <list type="bulleted">
1492
	<item>
1493
	  <p>[http,server] Illegal hexadecimal code in URL was not
1494
	    handled. The validation of URI:s are therefore updated.</p>
1495
	  <p>Own Id: OTP-6078 Aux Id: seq10306 </p>
1496
	</item>
1497
      </list>
1498
    </section>
1499
  </section>
1500
  
1501
  <section>
1502
    <title>Inets 3.0.8 </title>
1503
    <p>Special version featuring some small 4.1 improvements
1504
      without enforcing the big changes of the 4.X releases. </p>
1505
    
1506
    <section>
1507
      <title>Fixed Bugs and Malfunctions</title>
1508
      <list type="bulleted">
1509
	<item>
1510
	  <p>The URI check that disables relative links that goes
1511
            outside the server-root missed a few cases.</p>
1512
	  <p>Own Id: OTP-5249</p>
1513
	</item>
1514
      </list>
1515
    </section>
1516
    
1517
    <section>
1518
      <title>Improvements and New Features</title>
1519
      <list type="bulleted">
1520
        <item>
1521
	  <p>The inets shutdown times have proven to be too short
1522
	    under some circumstances, as a heavy load, therefore they
1523
	    have been prolonged.</p>
1524
	      <p>Own Id: OTP-5261 Aux Id: seq9624 </p>
1525
	</item>
1526
      </list>
1527
    </section>
1528
  </section>
1529
      
1530
  <section>
1531
    <title>Inets 3.0.7</title>
1532
    
1533
    <section>
1534
      <title>Reported Fixed Bugs and Malfunctions</title>
1535
	  <list type="bulleted">
1536
	<item>
1537
	  <p>[httpd] Fixed a number of transfer-encoding problems.</p>
1538
	  <p>First part of the data received from a CGI-script was sent 
1539
	    as chunked even if the client was HTTP/1.0.</p>
1540
	  <p>Introduced new directive 
1541
	    (<c>DisableChunkedTransferEncodingSend</c>) to turn off usage 
1542
	    of chunked transfer-encoding (when sending) since it appear's 
1543
	    some browser's have problems handling this. This applies 
1544
	    if the client is HTTP/1.1.</p>
1545
	  <p>(Own Id: OTP-4806)
1546
	    <br></br>
1547
	    Aux Id: Seq 8150</p>
1548
	</item>
1549
	<item>
1550
	  <p>[httpc] HTTP client reformats some URLs (e.g. containing %20, 
1551
	    space).</p>
1552
          <p>Updated client from sowap.sf.net as of 2003-09-08.</p>
1553
	      <p>Johan Blom of Mobile Arts AB</p>
1554
          <p>(Own Id: OTP-4807)</p>
1555
	</item>
1556
	    <item>
1557
	  <p>[httpd] In module mod_browser, malformed search for parsed 
1558
	    header, user-agent.</p>
1559
	  <p>Also added new os and browser</p>
1560
          <p>(Own Id: OTP-4808)</p>
1561
	</item>
1562
	<item>
1563
	  <p>[ftp] FTP client doesn't notice when disk is full.</p>
1564
	  <p>(Own Id: OTP-4822)
1565
	    <br></br>
1566
		Aux Id: Seq 8175</p>
1567
	</item>
1568
      </list>
1569
    </section>
1570
  </section>
1571
1572
  <section>
1573
    <title>Inets 3.0.6</title>
1574
    
1575
    <section>
1576
      <title>Reported Fixed Bugs and Malfunctions</title>
1577
      <list type="bulleted">
1578
	<item>
1579
	  <p>On Windows the <c>ftp:ls</c> function sometimes exits.</p>
1580
	  <p>Workaround for a problem that seems to happen only on Windows
1581
	    when calling the ls function. Closing an already closed socket 
1582
	    will result in enotsock returned which will result in an exit.</p>
1583
	  <p>(Own Id: OTP-4770)</p>
1584
	</item>
1585
      </list>
1586
    </section>
1587
  </section>
1588
  
1589
  <section>
1590
    <title>Inets 3.0.5</title>
1591
    
1592
    <section>
1593
      <title>Reported Fixed Bugs and Malfunctions</title>
1594
      <list type="bulleted">
1595
	<item>
1596
	  <p>Web server does not handle econnaborted accept result.</p>
1.2.4 by Sergei Golovan
Import upstream version 13.b.3-dfsg
1597
	  <p>This results in an unnecessary acceptor process restart.</p>
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
1598
	  <p>(Own Id: OTP-4732)</p>
1599
	    </item>
1600
	  </list>
1601
    </section>
1602
  </section>
1603
  
1604
  <section>
1605
    <title>Inets 3.0.4</title>
1606
    
1607
    <section>
1608
      <title>Reported Fixed Bugs and Malfunctions</title>
1609
      <list type="bulleted">
1610
	<item>
1611
	  <p>ESI callback generates broken HTTP.</p>
1.2.4 by Sergei Golovan
Import upstream version 13.b.3-dfsg
1612
	  <p>This was a problem for (at least) Netscape 4.75. It worked for
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
1613
	    Mozilla 1.4a (on Solaris 8) and rumor has it that it also worked 
1614
            for IE.</p>
1615
	  <p>            <br></br>
1616
	    Sean Hinde</p>
1617
	  <p>(Own Id: OTP-4696)</p>
1618
	</item>
1619
	<item>
1620
	  <p>Log-size values ignored for security- and error disk-logs
1621
	    (SecurityDiskLogSize and ErrorDiskLogSize in mod_disk_log). 
1622
	    Instead the TransferDiskLogSize was used.
1623
	    <br></br>
1624
	    Thomas Lange</p>
1625
	  <p>(Own Id: OTP-4659)</p>
1626
	</item>
1627
      </list>
1628
    </section>
1629
  </section>
1630
  
1631
  <section>
1632
    <title>Inets 3.0.3</title>
1633
    
1634
    <section>
1635
      <title>Reported Fixed Bugs and Malfunctions</title>
1636
	  <list type="bulleted">
1637
        <item>
1638
	  <p>HTTP client called undefined function in HTTP server 
1639
	    (httpd_response:send_status/3).</p>
1640
	  <p>(Own Id: OTP-4628)</p>
1641
	    </item>
1642
      </list>
1643
    </section>
1644
  </section>
1645
  
1646
  <section>
1647
    <title>Inets 3.0.2</title>
1648
    
1649
    <section>
1650
      <title>Reported Fixed Bugs and Malfunctions</title>
1651
      <list type="bulleted">
1652
	<item>
1653
	  <p>HTTP client <em>now</em> updated to jnets-0.1.
1654
	    <br></br>
1655
	    Auther: Johan Blom of Mobile Arts AB.</p>
1656
	  <p>(Own Id: OTP-4588)</p>
1657
	</item>
1658
	  </list>
1659
    </section>
1660
  </section>
1661
      
1662
  <section>
1663
    <title>Inets 3.0.1</title>
1664
    
1665
    <section>
1666
      <title>Improvements and new features</title>
1667
      <list type="bulleted">
1668
	<item>
1669
	  <p>FTP client now supports chunked receive. Proposal of Luke Gorrie
1670
	    provided inspiration but not algorithm.</p>
1671
	      <p>(Own Id: OTP-4549)</p>
1672
	</item>
1673
	<item>
1674
	  <p>HTTP client updated to jnets-0.1, now supporting proxy.
1675
	    <br></br>
1676
	    Auther: Johan Blom of Mobile Arts AB.</p>
1677
	  <p>(Own Id: OTP-4552)</p>
1678
	    </item>
1679
      </list>
1680
    </section>
1681
    
1682
    <section>
1683
      <title>Reported Fixed Bugs and Malfunctions</title>
1684
      <list type="bulleted">
1685
        <item>
1686
	  <p>Body length calculation incorrect.</p>
1687
	  <p>(Own Id: OTP-4548)</p>
1688
	  <p>(Aux Id: OTP-4207, Seq 7209)</p>
1689
	    </item>
1690
	<item>
1691
	  <p>HTTP-request with a BODY length longer than 0 does not work.</p>
1692
	  <p>(Own Id: OTP-4550)</p>
1693
	      <p>(Aux Id: Seq 7653)</p>
1694
	</item>
1695
	    <item>
1696
	  <p>Calculation of remaining chunk size incorrect.</p>
1697
	  <p>(Own Id: OTP-4551)</p>
1698
	</item>
1699
	<item>
1700
	  <p>Wrong module name used when attempting to stop the security 
1701
            server (mod_sec_server instead of mod_security_server).</p>
1702
	  <p>(Own Id: OTP-4556)</p>
1703
	</item>
1704
      </list>
1705
    </section>
1706
  </section>
1707
  
1708
  <section>
1709
    <title>Inets 3.0</title>
1710
    
1711
    <section>
1712
      <title>Improvements and new features</title>
1713
      <list type="bulleted">
1714
	<item>Added HTTP client to the application. 
1715
	  <br></br>
1716
	  Auther: Johan Blom of Mobile Arts AB.</item>
1717
	<item>FTP: More info in exit reason when socket operation fails.
1718
	  <br></br>
1719
	  (Own Id: OTP-4429)</item>
1720
	<item>Make install targets corrected (INSTALL_SCRIPT is used instead
1721
	  of INSTALL_PROGRAMS for scripts).
1722
	  <br></br>
1723
	  (Own Id: OTP-4428)</item>
1724
	    <item>In inets, mod_cgi crashes when a directory is protected for 
1725
	  a group or for a user and we try to execute a CGI script 
1726
	  inside this protected directory.
1727
	  <br></br>
1728
	  Guillaume Bongenaar.
1729
	  <br></br>
1730
	  (Own Id: OTP-4416)</item>
1731
        <item>Removed crypto application dependency.
1732
	  <br></br>
1733
	  Matthias Lang
1734
	  <br></br>
1735
	  (Own Id: OTP-4417)</item>
1736
	<item>Use the same read algorithm for socket type ssl as is used 
1737
	  for ip_comm. As of version 2.3.5 of the ssl application it 
1738
	  is possible to use socket option {active, once}, so the same 
1739
	  algorithm can be used for both ip_comm and ssl.
1740
	  <br></br>
1741
	  (Own Id: OTP-4374)
1742
	  <br></br>
1743
	  (Aux Id: Seq 7417)</item>
1744
	<item>Added inets test suite to the release. Including the
1745
	  lightweight inets test server.</item>
1746
	<item>Incorrectly formated disk log entries.
1747
	  <em>term_to_binary</em> was (incorrectly) used for the 
1748
	  external format. 
1749
	  <br></br>
1750
	  Own Id: OTP-4228
1751
	  <br></br>
1752
	  Aux Id: Seq 7239</item>
1753
        <item>Adding verbosity printouts to 'catch' cgi problems on some 
1754
	  platforms.</item>
1755
	<item>
1756
          <p>Updated to handle HTTP/1.1.</p>
1757
	  <list type="bulleted">
1758
	    <item>Persistent connections are now default for http/1.1 clients</item>
1759
	    <item>Module <c>mod_esi</c> can send data to the client in chunks.</item>
1760
	    <item>Updated configuration directives <em>KeepAlive</em></item>
1761
		<item>
1762
	      <p>New configuration directives:</p>
1763
	      <list type="bulleted">
1764
		<item><em>MaxKeepAliveRequest</em></item>
1765
		<item><em>ErlScriptTimeout</em></item>
1766
		<item><em>ErlScriptNoCache</em></item>
1767
		<item><em>ScriptTimeout</em></item>
1768
		<item><em>ScriptNoCache</em></item>
1769
	      </list>
1770
	    </item>
1771
	    <item>New functions in httpd_utility to ease the development of 
1772
	      http/1.1 complaint modules.</item>
1773
	    <item>Record mod has a new field absolute_uri.</item>
1774
	    <item>All header field names in parsed_header is in lowercase.</item>
1775
	    <item>httpd handles chunked requests.</item>
1776
	    <item>New module <em>mod_range</em> that handles range-requests.</item>
1777
	    <item>New module <em>mod_responsecontrol</em> that controls how 
1778
	      the request will be handled the due to the If-Modified, 
1779
	      If-Match and If-Range http header fields.</item>
1780
	  </list>
1781
	</item>
1782
      </list>
1783
    </section>
1784
    
1785
    <section>
1786
      <title>Reported Fixed Bugs and Malfunctions</title>
1787
      <list type="bulleted">
1788
	<item>POST requests not properly handled.
1789
	  <br></br>
1790
	  (Own Id: OTP-4409)
1791
	  <br></br>
1792
	  (Aux Id: Seq 7485)</item>
1793
	<item>
1794
	  <p>Change in the inets API.
1795
	    <br></br>
1796
	    (Own Id: OTP-4408)
1797
	    <br></br>
1798
	    (Aux Id: Seq 7485)</p>
1799
          <p>*** POTENTIAL INCOMPATIBILITY ***</p>
1800
	  <p></p>
1801
	    </item>
1802
	<item>When opening the disk log (mod_disk_log), an open attempt 
1803
	  is made without a size option. If the file exist, then it is 
1804
	  opened. If the file does not exist, then another attempt is 
1805
	  made, this time with the size option.
1806
	  <br></br>
1807
	  (Own Id: OTP-4281)
1808
	  <br></br>
1809
	  (Aux Id: Seq 7312)</item>
1.2.4 by Sergei Golovan
Import upstream version 13.b.3-dfsg
1810
	<item>Changing of disk log format fails. Restart of webserver after
1.1.14 by Sergei Golovan
Import upstream version 13.a-dfsg
1811
	  change of disk log format (DiskLogFormat) fails with 
1812
	  <em>arg_mismatch</em>.
1813
	  <br></br>
1814
	  (Own Id: OTP-4231)
1815
	  <br></br>
1816
	  (Aux Id: Seq 7244)</item>
1817
      </list>
1818
    </section>
1819
  </section>
1820
</chapter>
1821
1822