curb 0.8.2 → 0.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/ext/curb.h CHANGED
@@ -20,11 +20,11 @@
20
20
  #include "curb_macros.h"
21
21
 
22
22
  // These should be managed from the Rake 'release' task.
23
- #define CURB_VERSION "0.8.2"
24
- #define CURB_VER_NUM 802
23
+ #define CURB_VERSION "0.8.3"
24
+ #define CURB_VER_NUM 803
25
25
  #define CURB_VER_MAJ 0
26
26
  #define CURB_VER_MIN 8
27
- #define CURB_VER_MIC 2
27
+ #define CURB_VER_MIC 3
28
28
  #define CURB_VER_PATCH 0
29
29
 
30
30
 
data/ext/curb_multi.c CHANGED
@@ -589,8 +589,10 @@ VALUE ruby_curl_multi_perform(int argc, VALUE *argv, VALUE self) {
589
589
 
590
590
  switch(rc) {
591
591
  case -1:
592
- rb_raise(rb_eRuntimeError, "select(): %s", strerror(errno));
593
- break;
592
+ if(errno != EINTR) {
593
+ rb_raise(rb_eRuntimeError, "select(): %s", strerror(errno));
594
+ break;
595
+ }
594
596
  case 0: /* timeout */
595
597
  default: /* action */
596
598
  rb_curl_multi_run( self, rbcm->handle, &(rbcm->running) );
data/lib/curl.rb CHANGED
@@ -45,13 +45,15 @@ module Curl
45
45
  query_str = params.map {|k,v| "#{URI.escape(k.to_s)}=#{URI.escape(v.to_s)}" }.join('&')
46
46
  if url.match(/\?/)
47
47
  "#{url}&#{query_str}"
48
- else
48
+ elsif query_str.size > 0
49
49
  "#{url}?#{query_str}"
50
+ else
51
+ url
50
52
  end
51
53
  end
52
54
 
53
55
  def self.postalize(params={})
54
- params.is_a?(String) ? params : params.map {|k,v| "#{URI.escape(k.to_s)}=#{URI.escape(v.to_s)}" }.join('&')
56
+ params.respond_to?(:map) ? URI.encode_www_form(params) : (params.respond_to?(:to_s) ? params.to_s : params)
55
57
  end
56
58
 
57
59
  end
@@ -19,7 +19,7 @@ class BugCrashOnDebug < Test::Unit::TestCase
19
19
  srv.start
20
20
  end
21
21
  puts 'b'
22
- c = Curl::Easy.new('http://localhost:9999/test')
22
+ c = Curl::Easy.new('http://127.0.0.1:9999/test')
23
23
  c.on_debug do|x|
24
24
  puts x.inspect
25
25
  raise "error" # this will get swallowed
@@ -16,7 +16,7 @@ class BugCrashOnDebug < Test::Unit::TestCase
16
16
  srv.start
17
17
  end
18
18
 
19
- c = Curl::Easy.new('http://localhost:9999/test')
19
+ c = Curl::Easy.new('http://127.0.0.1:9999/test')
20
20
  c.on_progress do|x|
21
21
  raise "error"
22
22
  end
@@ -21,7 +21,7 @@ class BugTestInstancePostDiffersFromClassPost < Test::Unit::TestCase
21
21
 
22
22
  5.times do |i|
23
23
  t = Thread.new do
24
- c = Curl::Easy.perform('http://localhost:9999/test')
24
+ c = Curl::Easy.perform('http://127.0.0.1:9999/test')
25
25
  c.header_str
26
26
  end
27
27
  threads << t
@@ -37,7 +37,7 @@ class BugTestInstancePostDiffersFromClassPost < Test::Unit::TestCase
37
37
  timer = Time.now
38
38
  single_responses = []
39
39
  5.times do |i|
40
- c = Curl::Easy.perform('http://localhost:9999/test')
40
+ c = Curl::Easy.perform('http://127.0.0.1:9999/test')
41
41
  single_responses << c.header_str
42
42
  end
43
43
 
data/tests/signals.rb ADDED
@@ -0,0 +1,33 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
2
+
3
+ # This test suite requires the timeout server to be running
4
+ # See tests/timeout.rb for more info about the timeout server
5
+ class TestCurbSignals < Test::Unit::TestCase
6
+
7
+ # Testcase for https://github.com/taf2/curb/issues/117
8
+ def test_continue_after_signal
9
+ trap("SIGUSR1") { }
10
+
11
+ curl = Curl::Easy.new(wait_url(2))
12
+ pid = $$
13
+ Thread.new do
14
+ sleep 1
15
+ Process.kill("SIGUSR1", pid)
16
+ end
17
+ assert_equal true, curl.http_get
18
+ end
19
+
20
+ private
21
+
22
+ def wait_url(time)
23
+ "#{server_base}/wait/#{time}"
24
+ end
25
+
26
+ def serve_url(chunk_size, time, count)
27
+ "#{server_base}/serve/#{chunk_size}/every/#{time}/for/#{count}"
28
+ end
29
+
30
+ def server_base
31
+ 'http://127.0.0.1:9128'
32
+ end
33
+ end
@@ -8,7 +8,7 @@ class TestCurbCurlDownload < Test::Unit::TestCase
8
8
  end
9
9
 
10
10
  def test_download_url_to_file_via_string
11
- dl_url = "http://localhost:9129/ext/curb_easy.c"
11
+ dl_url = "http://127.0.0.1:9129/ext/curb_easy.c"
12
12
  dl_path = File.join(Dir::tmpdir, "dl_url_test.file")
13
13
 
14
14
  curb = Curl::Easy.download(dl_url, dl_path)
@@ -19,7 +19,7 @@ class TestCurbCurlDownload < Test::Unit::TestCase
19
19
  end
20
20
 
21
21
  def test_download_url_to_file_via_file_io
22
- dl_url = "http://localhost:9129/ext/curb_easy.c"
22
+ dl_url = "http://127.0.0.1:9129/ext/curb_easy.c"
23
23
  dl_path = File.join(Dir::tmpdir, "dl_url_test.file")
24
24
  io = File.open(dl_path, 'wb')
25
25
 
@@ -32,7 +32,7 @@ class TestCurbCurlDownload < Test::Unit::TestCase
32
32
  end
33
33
 
34
34
  def test_download_url_to_file_via_io
35
- dl_url = "http://localhost:9129/ext/curb_easy.c"
35
+ dl_url = "http://127.0.0.1:9129/ext/curb_easy.c"
36
36
  dl_path = File.join(Dir::tmpdir, "dl_url_test.file")
37
37
  reader, writer = IO.pipe
38
38
 
@@ -62,7 +62,7 @@ class TestCurbCurlDownload < Test::Unit::TestCase
62
62
  end
63
63
 
64
64
  def test_download_bad_url_gives_404
65
- dl_url = "http://localhost:9129/this_file_does_not_exist.html"
65
+ dl_url = "http://127.0.0.1:9129/this_file_does_not_exist.html"
66
66
  dl_path = File.join(Dir::tmpdir, "dl_url_test.file")
67
67
 
68
68
  curb = Curl::Easy.download(dl_url, dl_path)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: curb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.2
4
+ version: 0.8.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-11-05 00:00:00.000000000 Z
13
+ date: 2012-11-09 00:00:00.000000000 Z
14
14
  dependencies: []
15
15
  description: Curb (probably CUrl-RuBy or something) provides Ruby-language bindings
16
16
  for the libcurl(3), a fully-featured client-side URL transfer library. cURL and
@@ -61,6 +61,7 @@ files:
61
61
  - tests/helper.rb
62
62
  - tests/mem_check.rb
63
63
  - tests/require_last_or_segfault_script.rb
64
+ - tests/signals.rb
64
65
  - tests/tc_curl.rb
65
66
  - tests/tc_curl_download.rb
66
67
  - tests/tc_curl_easy.rb
@@ -114,6 +115,7 @@ test_files:
114
115
  - tests/helper.rb
115
116
  - tests/mem_check.rb
116
117
  - tests/require_last_or_segfault_script.rb
118
+ - tests/signals.rb
117
119
  - tests/tc_curl.rb
118
120
  - tests/tc_curl_download.rb
119
121
  - tests/tc_curl_easy.rb