httpclient 2.2.4 → 2.2.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.txt ADDED
@@ -0,0 +1,614 @@
1
+ httpclient - HTTP accessing library.
2
+ Copyright (C) 2000-2011 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+
4
+ 'httpclient' gives something like the functionality of libwww-perl (LWP) in
5
+ Ruby. 'httpclient' formerly known as 'http-access2'.
6
+
7
+ See HTTPClient for documentation.
8
+
9
+
10
+ == Features
11
+
12
+ * methods like GET/HEAD/POST/* via HTTP/1.1.
13
+ * HTTPS(SSL), Cookies, proxy, authentication(Digest, NTLM, Basic), etc.
14
+ * asynchronous HTTP request, streaming HTTP request.
15
+
16
+ * by contrast with net/http in standard distribution;
17
+ * Cookies support
18
+ * MT-safe
19
+ * streaming POST (POST with File/IO)
20
+ * Digest auth
21
+ * Negotiate/NTLM auth for WWW-Authenticate (requires net/htlm module; rubyntlm gem)
22
+ * NTLM auth for Proxy-Authenticate (requires 'win32/sspi' module; rubysspi gem)
23
+ * extensible with filter interface
24
+ * you don't have to care HTTP/1.1 persistent connection
25
+ (httpclient cares instead of you)
26
+
27
+ * Not supported now
28
+ * Cache
29
+ * Rather advanced HTTP/1.1 usage such as Range, deflate, etc.
30
+ (of course you can set it in header by yourself)
31
+
32
+
33
+ == Author
34
+
35
+ Name:: Hiroshi Nakamura
36
+ E-mail:: nahi@ruby-lang.org
37
+ Project web site:: http://github.com/nahi/httpclient
38
+
39
+
40
+ == License
41
+
42
+ This program is copyrighted free software by NAKAMURA, Hiroshi. You can
43
+ redistribute it and/or modify it under the same terms of Ruby's license;
44
+ either the dual license version in 2003, or any later version.
45
+
46
+ httpclient/session.rb is based on http-access.rb in http-access/0.0.4.
47
+ Some part of code in http-access.rb was recycled in http-access2.rb.
48
+ Those part is copyrighted by Maehashi-san who made and distributed
49
+ http-access/0.0.4. Many thanks to Maehashi-san.
50
+
51
+
52
+ == Install
53
+
54
+ === Gem
55
+
56
+ You can install httpclient with rubygems.
57
+
58
+ % gem install httpclient
59
+
60
+ === Package
61
+
62
+ You can install httpclient with the bundled installer script.
63
+
64
+ $ ruby install.rb
65
+
66
+ It will install lib/* to your site_ruby directory such as
67
+ /usr/local/lib/ruby/site_ruby/1.8/.
68
+
69
+ For uninstall, delete installed files from your site_ruby directory.
70
+
71
+
72
+ == Usage
73
+
74
+ See HTTPClient for documentation.
75
+ You can also check sample/howto.rb how to use APIs.
76
+
77
+
78
+ == Download
79
+
80
+ * Gem repository
81
+ * https://rubygems.org/gems/httpclient
82
+
83
+ * git: git://github.com/nahi/httpclient.git
84
+
85
+ == Bug report or Feature request
86
+
87
+ Please file a ticket at the project web site.
88
+
89
+ 1. find a similar ticket from https://github.com/nahi/httpclient/issues
90
+ 2. create a new ticket by clicking 'Create Issue' button.
91
+ 3. you can use github features such as pull-request if you like.
92
+
93
+ Thanks in advance.
94
+
95
+
96
+ == Changes
97
+
98
+ = Changes in 2.2.4 =
99
+
100
+ Dec 08, 2011 - version 2.2.4
101
+
102
+ * Bug fixes
103
+
104
+ * Do not recycle buffer String object for yielding. When the response is
105
+ not chunked and the size of the response > 16KB, API with block style
106
+ yields recycled String object for each yields.
107
+
108
+ * Set VERSION string in User-Agent header. $Id$ didn't work long time...
109
+
110
+ Bugs are reported by Seamus Abshere. Thanks!
111
+
112
+ = Changes in 2.2.3 =
113
+
114
+ Oct 28, 2011 - version 2.2.3
115
+
116
+ * Bug fixes
117
+
118
+ * Ruby 1.8.6 support. It's broken from 2.2.0.
119
+
120
+ = Changes in 2.2.2 =
121
+
122
+ Oct 17, 2011 - version 2.2.2
123
+
124
+ * Bug fixes
125
+
126
+ * Do not sort query params on request: Wrongly sorted query params for
127
+ easier debugging but the order of request parameter should be
128
+ preserved. #65
129
+
130
+ * Changes
131
+
132
+ * Set responce String encoding if possible. Parse content-type response
133
+ header with some helps from OpenURI::Meta and set response String
134
+ encoding. #26
135
+
136
+ * Improve connection cache strategy. Reuse cached session in MRU order,
137
+ not in LRU. MRU is more server friendly than LRU because it reduces
138
+ number of cached sessions when a number of requests drops after an
139
+ usaage spike.
140
+
141
+ With reusing sessions in LRU order, all sessions are equally checked if
142
+ it's closed or not, as far as there's a request to the same site. With
143
+ reusing sessions in MRU order, old cold sessions are kept in cache long
144
+ time even if there's a request to the same site. To avoid this leakage,
145
+ this version adds keep_alive_timeout property and let SessionManager
146
+ scrub all sessions with checking the timeout for each session. When the
147
+ session expires against the last used time, it's closed and collected.
148
+
149
+ keep_alive_timeout is 15[sec] by default. The value is from the default
150
+ value for KeepAliveTimeout of Apache httpd 2. #68 #69
151
+
152
+ = Changes in 2.2.1 =
153
+
154
+ Jun 2, 2011 - version 2.2.1
155
+
156
+ * Bug fixes
157
+
158
+ * For Lighttpd + PUT/POST support, do not send a request using chunked
159
+ encoding when IO respond to :size, File for example.
160
+
161
+ - There is no need to send query with Transfer-Encoding: chuncked when
162
+ IO respond to :size.
163
+ - Lighttpd does not support PUT, POST with Transfer-Encoding: chuncked.
164
+ You will see that the lighty respond with 200 OK, but there is a file
165
+ whose size is zero.
166
+
167
+ LIMITATION:
168
+ timeout occurs certainly when you send very large file and
169
+ @send_timeout is default since HTTPClient::Session#query() assumes
170
+ that *all* write are finished in @send_timeout sec not each write.
171
+
172
+ WORKAROUND:
173
+ increment @send_timeout and @receive_timeout or set @send_timeout and
174
+ @receive_timeout to 0 not to be timeout.
175
+
176
+ This fix is by TANABE Ken-ichi <nabeken@tknetworks.org>. Thanks!
177
+
178
+ * Allow empty http_proxy ENV variable. Just treat it the same as if it's
179
+ nil/unset. This fix is by Ash Berlin <ash_github@firemirror.com>.
180
+ Thanks!
181
+
182
+ * Check EOF while reading chunked response and close the session. It
183
+ raised NoMethodError.
184
+
185
+ * Changes
186
+
187
+ * Updated trusted CA certificates file (cacert.p7s and cacert_sha1.p7s).
188
+ CA certs are imported from
189
+ 'Java(TM) SE Runtime Environment (build 1.6.0_25-b06)'.
190
+
191
+ * Changed default chunk size from 4K to 16K. It's used for reading size
192
+ at a time.
193
+
194
+ = Changes in 2.2.0 =
195
+
196
+ Apr 8, 2011 - version 2.2.0
197
+
198
+ * Features
199
+ * Add HTTPClient#cookies as an alias of #cookie_manager.cookies.
200
+
201
+ * Add res.cookies method. It returns parsed cookie in response header.
202
+ It's different from client.cookie_manager.cookies. Manager keeps
203
+ persistent cookies in it.
204
+
205
+ * Add res.headers method which returns a Hash of headers.
206
+ Hash key and value are both String. Each key has a single value so you
207
+ can't extract exact value when a message has multiple headers like
208
+ 'Set-Cookie'. Use header['Set-Cookie'] for that purpose.
209
+ (It returns an Array always)
210
+
211
+ * Allow keyword style argument for HTTPClient#get, post, etc.
212
+ Introduced keywords are: :body, :query, and :header.
213
+ You can write
214
+ HTTPClient.get(uri, :header => {'X-custom' => '1'})
215
+ instead of;
216
+ HTTPClient.get(uri, nil, {'X-custom' => '1'})
217
+
218
+ * Add new keyword argument :follow_redirect to get/post. Now you can
219
+ follow redirection response with passing :follow_redirect => true.
220
+
221
+ * [INCOMPAT] Rename HTTPClient::HTTP::Message#body to #http_body, then
222
+ add #body as an alias of #content. It's incompatible change though
223
+ users rarely depends on this method. (I've never seen such a case)
224
+ Users who are using req.body and/or res.body should follow this
225
+ change. (req.http_body and res.http_body)
226
+
227
+ * Bug fixes
228
+
229
+ * Reenable keep-alive for chunked response.
230
+ This feature was disabled by c206b687952e1ad3e20c20e69bdbd1a9cb38609e at
231
+ 2008-12-09. I should have written a test for keep-alive. Now I added it.
232
+ Thanks Takahiro Nishimura(@dr_taka_n) for finding this bug.
233
+
234
+ = Changes in 2.1.7 =
235
+
236
+ Mar 22, 2011 - version 2.1.7
237
+
238
+ * Features
239
+ * Add MD5-sess auth support. Thanks to wimm-dking. (#47)
240
+ * Add SNI support. (Server Name Indication of HTTPS connection) (#49)
241
+ * Add GSSAPI auth support using gssapi gem. Thanks to zenchild. (#50)
242
+ * NTLM logon to exchange Web Services. [experimental] Thanks to curzonj and mccraigmccraig (#52)
243
+ * Add HTTPOnly cookie support. Thanks to nbrosnahan. (#55)
244
+ * Add HTTPClient#socket_local for specifying local binding hostname and port of TCP socket. Thanks to icblenke.
245
+
246
+ = Changes in 2.1.6 =
247
+
248
+ Dec 20, 2010 - version 2.1.6
249
+
250
+ * IMPORTANT update for HTTPS(SSL) connection
251
+ * Trusted CA bundle file cacert_sha1.p7s for older environment (where
252
+ you cannot use SHA512 algorithm such as an old Mac OS X) included in
253
+ httpclient 2.1.5 expires in Dec 31, 2010. Please update to 2.1.6 if
254
+ you're on such an environment.
255
+ * Updated trusted CA certificates file (cacert.p7s and cacert_sha1.p7s).
256
+ CA certs are imported from
257
+ 'Java(TM) SE Runtime Environment (build 1.6.0_22-b04)'.
258
+
259
+ * IMPORTANT bug fix for persistent connection
260
+ * #29 Resource Leak: If httpclient establishes two connections to the
261
+ same server in parallel, one of these connections will be leaked, patch
262
+ by xb.
263
+ * #30 When retrying a failed persistent connection, httpclient should use
264
+ a fresh connection, reported by xb.
265
+ These 2 fixes should fix 'Too many open files' error as well if you're
266
+ getting this. Please check 2.1.6 and let me know how it goes!
267
+
268
+ * Features
269
+ * #4 Added OAuthClient. See sample clients in sample/ dir.
270
+ * #42 Added transparent_gzip_decompression property, patch by Teshootub7.
271
+ All you need to use it is done by;
272
+ client.transparent_gzip_decompression = true
273
+ Then you can retrieve a document as usural in decompressed format.
274
+ * #38 Debug dump binary data (checking it includes \0 or not) in hex
275
+ encoded format, patch by chetan.
276
+
277
+ * Bug fixes
278
+ * #8 Opened certificate and key files for SSL not closed properly.
279
+ * #10 "get" method gets blocked in "readpartial" when receiving a 304
280
+ with no Content-Length.
281
+ * #11 Possible data corruption problem in asynchronous methods, patch by
282
+ a user. (http://dev.ctor.org/http-access2/ticket/228)
283
+ * #13 illegal Cookie PATH handling. When no PATH part given in Set-Cookie
284
+ header, URL's path part should be used for path variable.
285
+ * #16 httpclient doesn't support multiline server headers.
286
+ * #19 set_request_header clobbers 'Host' header setting if given, patch
287
+ by meuserj.
288
+ * #20 Relative Location on https redirect fails, patch by zenchild.
289
+ * #22 IIS/6 + MicrosoftSharePointTeamServices uses "NTLM" instead of
290
+ "Negotiate".
291
+ * #27 DigestAuth header: 'qop' parameter must not be enclosed between
292
+ double quotation, patch by ibc.
293
+ * #36 Wrong HTTP version in headers with Qt4 applications, reported by
294
+ gauleng.
295
+ * #38 DigestAuth + posting IO fails, patch by chetan.
296
+ * #41 https-over-proxy fails with IIS, patch by tai.
297
+
298
+ = Changes in 2.1.5 =
299
+
300
+ Jun 25, 2009 - version 2.1.5.2
301
+
302
+ * Added another cacert distribution certificate which uses
303
+ sha1WithRSAEncryption. OpenSSL/0.9.7 cannot handle non-SHA1 digest
304
+ algorithm for certificate. The new certificate is
305
+ RSA 2048 bit + SHA1 + notAfter:2010/12/31. Corresponding CA bundle file
306
+ is cacert_sha1.p7s. It is loaded only when cacert.p7s cannot be loaded
307
+ with the original distribution certificate.
308
+
309
+ Jun 11, 2009 - version 2.1.5.1
310
+
311
+ * README update.
312
+
313
+ Jun 8, 2009 - version 2.1.5
314
+
315
+ * IMPORTANT update for HTTPS(SSL) connection
316
+ * Trusted CA bundle file included in httpclient <= 2.1.4 expires in
317
+ Nov 2009. Please update to 2.1.5 by Oct 2009 if your application
318
+ depends on trusted CA bundle file.
319
+ * Updated trusted CA certificates file (cacert.p7s). CA certs are
320
+ imported from 'Java(TM) SE Runtime Environment (build 1.6.0_13-b03)'.
321
+ * Updated a cacert distribution certificate.
322
+ RSA 2048 bit + SHA512 + notAfter:2037/12/31. (#215)
323
+
324
+ * Feature
325
+ * WWW authentication with Negotiate based on win32/sspi as same as Proxy
326
+ authentication. Applied a patch from Paul Casto. Thanks! (#212)
327
+
328
+ * Bug fixes
329
+ * Infinite loop caused by EOF error while reading response message body
330
+ without Content-Length. IO#readpartial does not clear the second
331
+ argument (buffer) when an exception raised. Fixed by a patch from an
332
+ user. Thanks! (#216)
333
+ * NoMethodError caused by the cookie string that includes a double
334
+ semicolons ";;". Fixed by a patch from an user. Thanks! (#211)
335
+ * CNONCE attribute in Digest Authentication was not properly generated by
336
+ itself (used same nonce sent from the connecting server). Fixed by a
337
+ patch from bterlson
338
+ [http://github.com/bterlson/httpclient/commit/6d0df734840985a7be88a2d54443bbf892d50b9a]
339
+ Thanks! (#209)
340
+ * Cookie header was not set in authentication negotiation. Fixed. This
341
+ bug was found and pointed out by bterlson at
342
+ [http://github.com/bterlson/httpclient/commits/master]. Thanks! (#210)
343
+ * Do not send 'Content-Length: 0' when a request doesn't have message
344
+ body. Some server application (!EasySoap++/0.6 for example) corrupts
345
+ with the request with Content-Length: 0. This bug was found by clay
346
+ [http://daemons.net/~clay/2009/05/03/ruby-why-do-you-torment-me/].
347
+ Thanks! (#217)
348
+ * Ensure to reset connection after invoking HTTPClient singleton methods
349
+ for accessing such as HTTPClient.get_content. Thanks to @xgavin! (#214)
350
+
351
+ Feb 13, 2009 - version 2.1.4
352
+
353
+ * Bug fixes
354
+ * When we hit some site through http-proxy we get a response without
355
+ Content-Length header. httpclient/2.1.3 drops response body for such
356
+ case. fixed. (#199)
357
+ * Avoid duplicated 'Date' header in request. Fixed. (#194)
358
+ * Avoid to add port number to 'Host' header. Some servers like GFE/1.3
359
+ dislike it. Thanks to anonymous user for investigating the behavior.
360
+ (#195)
361
+ * httpclient/2.1.3 does not work when you fork a process after requiring
362
+ httpclient module (Passenger). Thanks to Akira Yamada for tracing down
363
+ this bug. (#197)
364
+ * httpclient/2.1.3 cannot handle Cookie header with 'expires=' and
365
+ 'expires=""'. Empty String for Time.parse returns Time.now unlike
366
+ ParseDate.parsedate. Thanks to Mark for the patch. (#200)
367
+
368
+ Jan 8, 2009 - version 2.1.3.1
369
+
370
+ * Security fix introduced at 2.1.3.
371
+ * get_content/post_content of httpclient/2.1.3 may send secure cookies
372
+ for a https site to non-secure (non-https) site when the https site
373
+ redirects the request to a non-https site. httpclient/2.1.3 caches
374
+ request object and reuses it for redirection. It should not be cached
375
+ and recreated for each time as httpclient <= 2.1.2 and http-access2.
376
+ * I realized this bug when I was reading open-uri story on
377
+ [ruby-core:21205]. Ruby users should use open-uri rather than using
378
+ net/http directly wherever possible.
379
+
380
+ Dec 29, 2008 - version 2.1.3
381
+
382
+ * Features
383
+ * Proxy Authentication for SSL.
384
+ * Performance improvements.
385
+ * Full RDoc. Please tell me any English problem. Thanks in advance.
386
+ * Do multipart file upload when a given body includes a File. You don't
387
+ need to set 'Content-Type' and boundary String any more.
388
+ * Added propfind and proppatch methods.
389
+
390
+ * Changes
391
+ * Avoid unnecessary memory consuming for get_content/post_content with
392
+ block. get_content returns nil when you call it with a block.
393
+ * post_content with IO did not work when redirect/auth cycle is required.
394
+ (CAUTION: post_content now correctly follows redirection and posts the
395
+ given content)
396
+ * Exception handling cleanups.
397
+ * Raises HTTPClient::ConfigurationError? for environment problem.
398
+ (trying to do SSL without openssl installed for example)
399
+ * Raises HTTPClient::BadResponse? for HTTP response problem. You can
400
+ get the response HTTPMessage returned via $!.res.
401
+ * Raises SocketError? for connection problem (as same as before).
402
+
403
+ * Bug fixes
404
+ * Avoid unnecessary negotiation cycle for Negotiate(NTLM) authentication.
405
+ Thanks Rishav for great support for debugging Negotiate authentication.
406
+ * get_content/post_content with block yielded unexpected message body
407
+ during redirect/auth cycle.
408
+ * Relative URI redirection should be allowed from 2.1.2 but it did not
409
+ work... fixed.
410
+ * Avoid unnecessary timeout waiting when no message body returned such as
411
+ '204 No Content' for DAV.
412
+ * Avoid blocking on socket closing when the socket is already closed by
413
+ foreign host and the client runs under MT-condition.
414
+
415
+ Sep 22, 2007 - version 2.1.2
416
+
417
+ * HTTP
418
+ * implemented Negotiate authentication with a support from exterior
419
+ modules. 'rubyntlm' module is required for Negotiate auth with IIS.
420
+ 'win32/sspi' module is required for Negotiate auth with ISA.
421
+ * a workaround for Ubuntu + SonicWALL timeout problem. try to send HTTP
422
+ request in one chunk.
423
+
424
+ * SSL
425
+ * create new self-signing dist-cert which has serial number 0x01 and
426
+ embed it in httpclient.rb.
427
+ * update cacert.p7s. certificates are imported from cacerts in JRE 6
428
+ Update 2. 1 expired CA certificate
429
+ 'C=US, O=GTE Corporation, CN=GTE CyberTrust Root' is removed.
430
+
431
+ * Bug fix
432
+ * [BUG] SSL + debug_dev didn't work under version 2.1.1.
433
+ * [BUG] Reason-Phrase of HTTP response status line can be empty according
434
+ * to RFC2616.
435
+
436
+ Aug 28, 2007 - version 2.1.1
437
+
438
+ * bug fix
439
+ * domain_match should be case insensitive. thanks to Brian for the patch.
440
+ * before calling SSLSocket#post_connection_check, check if
441
+ RUBY_VERSION > "1.8.4" for CN based wildcard certificate. when
442
+ RUBY_VERSION <= "1.8.4", it fallbacks to the post_connection_check
443
+ method in HTTPClient so httpclient should run on 1.8.4 fine as before.
444
+
445
+ * misc
446
+ * added HTTPClient#test_loopback_http_response which accepts test
447
+ loopback response which contains HTTP header.
448
+
449
+ Jul 14, 2007 - version 2.1.0
450
+
451
+ * program/project renamed from 'http-access2' to 'httpclient'.
452
+ there's compatibility layer included so existing programs for
453
+ http-access2 which uses HTTPAccess2::Client should work with
454
+ httpclient/2.1.0 correctly.
455
+
456
+ * misc
457
+ * install.rb did not install cacerts.p7s. Thanks to knu.
458
+ * now HTTPClient loads http_proxy/HTTP_PROXY and no_proxy/NO_PROXY
459
+ environment variable at initialization time. bear in mind that it
460
+ doesn't load http_proxy/HTTP_PROXY when a library is considered to be
461
+ running under CGI environment (checked by ENVREQUEST_METHOD existence.
462
+ cgi_http_proxy/CGI_HTTP_PROXY is loaded instead.
463
+
464
+ Jul 4, 2007 - version 2.0.9
465
+
466
+ * bug fix
467
+ * fix the BasicAuth regression problem in 2.0.8. A server may return
468
+ "BASIC" as an authenticate scheme label instead of "Basic". It must be
469
+ treated as a case-insensitive token according to RFC2617 section 1.2.
470
+ Thanks to mwedeme for contributing the patch. (#159)
471
+
472
+ Jun 30, 2007 - version 2.0.8
473
+
474
+ * HTTP
475
+ * added request/response filter interface and implemented DigestAuth
476
+ based on the filter interface. DigestAuth calc engine is based on
477
+ http://tools.assembla.com/breakout/wiki/DigestForSoap
478
+ Thanks to sromano. (#155)
479
+ * re-implemented BasicAuth based on the filter interface. send BasicAuth
480
+ header only if it's needed. (#31)
481
+ * handle a response which has 2XX status code as a successfull response
482
+ while retry check. applied the patch from Micah Wedemeyer.
483
+ Thanks! (#158)
484
+
485
+ * Connection
486
+ * show more friendly error message for unconnectable URL. (#156)
487
+
488
+ * bug fixes
489
+ * to avoid MIME format incompatibility, add empty epilogue chunk
490
+ explicitly. Thanks to the anonymous user who reported #154 (#154)
491
+ * rescue EPIPE for keep-alive reconnecting. Thanks to anonymous user
492
+ who posted a patch at #124. (#124)
493
+
494
+ May 13, 2007 - version 2.0.7
495
+
496
+ * HTTP
497
+ * added proxyauth support. (#6)
498
+ * let developer allow to rescue a redirect with relative URI. (#28)
499
+ * changed last-chunk condition statement to allow "0000\r\n" marker from
500
+ WebLogic Server 7.0 SP5 instead of "0\r\n". (#30)
501
+ * fixed multipart form submit. (#29, #116)
502
+ * use http_date format as a date in a request header. (#35)
503
+ * avoid duplicated Date header when running under mod_ruby. (#127)
504
+ * reason phrase in Message#reason contains \r. (#122)
505
+ * trim "\n"s in base64 encoded BasicAuth value for interoperability.
506
+ (#149)
507
+ * let retry_connect return a Message not a content. (#119)
508
+ * rescue SocketError and dump a message when a wrong address given. (#152)
509
+
510
+ * HTTP-Cookies
511
+ * changed "domain" parameter matching condition statement to allow
512
+ followings; (#24, #32, #118, #147)
513
+ * [host, domain] = [rubyforge.com, .rubyforge.com]
514
+ * [host, domain] = [reddit.com, reddit.com]
515
+
516
+ * SSL
517
+ * bundles CA certificates as trust anchors.
518
+ * allow user to get peer_cert. (#117, #123)
519
+ * added wildcard certificate support. (#151)
520
+ * SSL + HTTP keep-alive + long wait causes uncaught exception. fixed.
521
+ (#120)
522
+
523
+ * Connection
524
+ * fixed a loop condition bug that caused intermittent empty response.
525
+ (#150, #26, #125)
526
+
527
+ September 16, 2005 - version 2.0.6
528
+
529
+ * HTTP
530
+ * allows redirects from a "POST" request. imported a patch from sveit.
531
+ Thanks! (#7)
532
+ * add 'content-type: application/application/x-www-form-urlencoded' when
533
+ a request contains message-body. (#11)
534
+ * HTTP/0.9 support. (#15)
535
+ * allows submitting multipart forms. imported a patch from sveit.
536
+ Thanks! (#7)
537
+
538
+ * HTTP-Cookies
539
+ * avoid NameError when a cookie value is nil. (#10)
540
+ * added netscape_rule property to CookieManager (false by default). You
541
+ can turn on the domain attribute test of Netscape rule with the
542
+ property. cf. http://wp.netscape.com/newsref/std/cookie_spec.html
543
+ * added HTTPClient#cookie_manager property for accessing its properties.
544
+ (#13)
545
+ * added save_all_cookies method to save unused and discarded cookies as
546
+ well. The patch is from Christian Lademann. Thanks! (#21)
547
+ * allow to set cookie_manager. raise an error when set_cookie_store
548
+ called and cookie_store has already been set. (#20)
549
+
550
+ * SSL
551
+ * allows SSL connection debugging when debug_dev != nil. (#14)
552
+ * skip post_connection_check when
553
+ verify_mode == OpenSSL::SSL::VERIFY_NONE. Thanks to kdraper. (#12)
554
+ * post_connection_check: support a certificate with a wildcard in the
555
+ hostname. (#18)
556
+ * avoid NameError when no peer_cert and VERIFY_FAIL_IF_NO_PEER_CERT
557
+ given. Thanks to Christian Lademann.
558
+
559
+ * Connection
560
+ * insert a connecting host and port to an exception message when
561
+ connecting failed. (#5)
562
+ * added socket_sync property to HTTPClient(HTTPAccess2::Client) that
563
+ controls socket's sync property. the default value is true. CAUTION:
564
+ if your ruby is older than 2005-09-06 and you want to use SSL
565
+ connection, do not set socket_sync = false to avoid a blocking bug of
566
+ openssl/buffering.rb.
567
+
568
+ December 24, 2004 - version 2.0.5
569
+ This is a minor bug fix release.
570
+ - Connect/Send/Receive timeout cannot be configured. fixed.
571
+ - IPSocket#addr caused SocketError? on Mac OS X 10.3.6 + ruby-1.8.1 GA.
572
+ fixed.
573
+ - There is a server which does not like 'foo.bar.com:80' style Host header.
574
+ The server for http://rubyforge.org/export/rss_sfnews.php seems to
575
+ dislike HTTP/1.1 Host header "Host: rubyforge.net:80". It returns
576
+ HTTP 302: Found and redirects to the page again, causes
577
+ HTTPAccess2::Client to raise "retry count exceeded". Keat found that the
578
+ server likes "Host: rubyforge.net" (not with port number).
579
+
580
+ February 11, 2004 - version 2.0.4
581
+ - add Client#redirect_uri_callback interface.
582
+ - refactorings and bug fixes found during negative test.
583
+ - add SSL test.
584
+
585
+ December 16, 2003 - version 2.0.3
586
+ - no_proxy was broken in 2.0.2.
587
+ - do not dump 'Host' header under protocol_version == 'HTTP/1.0'
588
+
589
+ December ?, 2003 - version 2.0.2
590
+ - do not trust HTTP_PROXY environment variable. set proxy server manually.
591
+ http://ftp.ics.uci.edu/pub/websoft/libwww-perl/archive/2001h1/0072.html
592
+ http://ftp.ics.uci.edu/pub/websoft/libwww-perl/archive/2001h1/0241.html
593
+ http://curl.haxx.se/mail/archive-2001-12/0034.html
594
+ - follow ossl2 change.
595
+
596
+ October 4, 2003 - version 2.0.1
597
+ Query was not escaped when query was given as an Array or a Hash. Fixed.
598
+ Do not use http_proxy defined by ENV['http_proxy'] or ENV['HTTP_PROXY'] if
599
+ the destination host is 'localhost'.
600
+ Hosts which matches ENV['no_proxy'] or ENV['NO_PROXY'] won't be proxyed.
601
+ [,:] separated. ("ruby-lang.org:rubyist.net")
602
+ No regexp. (give "ruby-lang.org", not "*.ruby-lang.org")
603
+ If you want specify hot by IP address, give full address.
604
+ ("192.168.1.1, 192.168.1.2")
605
+
606
+ September 10, 2003 - version 2.0
607
+ CamelCase to non_camel_case.
608
+ SSL support (requires Ruby/OpenSSL).
609
+ Cookies support. lib/http-access2/cookie.rb is redistributed file which is
610
+ originally included in Webagent by TAKAHASHI `Maki' Masayoshi. You can
611
+ download the entire package from http://www.rubycolor.org/arc/.
612
+
613
+ January 11, 2003 - version J
614
+ ruby/1.8 support.