curb 0.9.8 → 0.9.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Rakefile +1 -1
- data/ext/curb.c +10 -0
- data/ext/curb.h +3 -3
- data/ext/curb_easy.c +21 -1
- data/ext/extconf.rb +5 -0
- data/lib/curb.rb +1 -0
- data/lib/curl.rb +1 -0
- data/lib/curl/easy.rb +6 -0
- data/lib/curl/multi.rb +1 -0
- data/tests/bug_issue277.rb +32 -0
- data/tests/tc_curl_maxfilesize.rb +12 -0
- data/tests/tc_curl_multi.rb +2 -1
- metadata +8 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: fd889c4132ef60a5341daea20eb772c6598de7b5
|
4
|
+
data.tar.gz: 64d2ac621fa5d61716f3816699cbcb51d42fe014
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d9e5ea00b7bf51cd58d25ddde708be4a8b298666008c3a738577ab7a6e725c479807b8d212653d90a37d756c3fe81b9f4b3bc9ab0bfe3cc8867834462cfbbf2
|
7
|
+
data.tar.gz: 5c4bb1cb9b2638c0cc1cb159b5386b48e4e72c2759d9e6095c842c2f0f099380ffa4a0dafbf6ffd722b76493aaa6f6ec69132ad9164f1ddd4ce58eda1bb3f70f
|
data/Rakefile
CHANGED
@@ -186,7 +186,7 @@ else
|
|
186
186
|
spec_source = File.read File.join(File.dirname(__FILE__),'curb.gemspec')
|
187
187
|
spec = nil
|
188
188
|
# see: http://gist.github.com/16215
|
189
|
-
Thread.new { spec = eval("
|
189
|
+
Thread.new { spec = eval("#{spec_source}") }.join
|
190
190
|
spec.validate
|
191
191
|
Gem::Package.build(spec)
|
192
192
|
end
|
data/ext/curb.c
CHANGED
@@ -1040,6 +1040,16 @@ void Init_curb_core() {
|
|
1040
1040
|
CURB_DEFINE(CURLOPT_PIPEWAIT);
|
1041
1041
|
#endif
|
1042
1042
|
|
1043
|
+
#if HAVE_CURLOPT_TCP_KEEPALIVE
|
1044
|
+
CURB_DEFINE(CURLOPT_TCP_KEEPALIVE);
|
1045
|
+
CURB_DEFINE(CURLOPT_TCP_KEEPIDLE);
|
1046
|
+
CURB_DEFINE(CURLOPT_TCP_KEEPINTVL);
|
1047
|
+
#endif
|
1048
|
+
|
1049
|
+
#if HAVE_CURLOPT_HAPROXYPROTOCOL
|
1050
|
+
CURB_DEFINE(CURLOPT_HAPROXYPROTOCOL);
|
1051
|
+
#endif
|
1052
|
+
|
1043
1053
|
#if LIBCURL_VERSION_NUM >= 0x072B00 /* 7.43.0 */
|
1044
1054
|
CURB_DEFINE(CURLPIPE_NOTHING);
|
1045
1055
|
CURB_DEFINE(CURLPIPE_HTTP1);
|
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.9.
|
24
|
-
#define CURB_VER_NUM
|
23
|
+
#define CURB_VERSION "0.9.9"
|
24
|
+
#define CURB_VER_NUM 909
|
25
25
|
#define CURB_VER_MAJ 0
|
26
26
|
#define CURB_VER_MIN 9
|
27
|
-
#define CURB_VER_MIC
|
27
|
+
#define CURB_VER_MIC 9
|
28
28
|
#define CURB_VER_PATCH 0
|
29
29
|
|
30
30
|
|
data/ext/curb_easy.c
CHANGED
@@ -247,6 +247,7 @@ static void ruby_curl_easy_free(ruby_curl_easy *rbce) {
|
|
247
247
|
curl_easy_setopt(rbce->curl, CURLOPT_PROGRESSFUNCTION, NULL);
|
248
248
|
curl_easy_setopt(rbce->curl, CURLOPT_NOPROGRESS, 1);
|
249
249
|
curl_easy_cleanup(rbce->curl);
|
250
|
+
rbce->curl = NULL;
|
250
251
|
}
|
251
252
|
}
|
252
253
|
|
@@ -2543,7 +2544,7 @@ VALUE ruby_curl_easy_setup(ruby_curl_easy *rbce) {
|
|
2543
2544
|
*
|
2544
2545
|
* Clean up a connection
|
2545
2546
|
*
|
2546
|
-
* Always returns
|
2547
|
+
* Always returns Qnil.
|
2547
2548
|
*/
|
2548
2549
|
VALUE ruby_curl_easy_cleanup( VALUE self, ruby_curl_easy *rbce ) {
|
2549
2550
|
|
@@ -2583,6 +2584,9 @@ VALUE ruby_curl_easy_cleanup( VALUE self, ruby_curl_easy *rbce ) {
|
|
2583
2584
|
curl_easy_setopt(curl, CURLOPT_INFILESIZE, 0);
|
2584
2585
|
}
|
2585
2586
|
|
2587
|
+
// set values on cleanup to nil
|
2588
|
+
rb_easy_del("multi");
|
2589
|
+
|
2586
2590
|
return Qnil;
|
2587
2591
|
}
|
2588
2592
|
|
@@ -3571,6 +3575,22 @@ static VALUE ruby_curl_easy_set_opt(VALUE self, VALUE opt, VALUE val) {
|
|
3571
3575
|
case CURLOPT_MAXFILESIZE:
|
3572
3576
|
curl_easy_setopt(rbce->curl, CURLOPT_MAXFILESIZE, NUM2LONG(val));
|
3573
3577
|
break;
|
3578
|
+
#endif
|
3579
|
+
#if HAVE_CURLOPT_TCP_KEEPALIVE
|
3580
|
+
case CURLOPT_TCP_KEEPALIVE:
|
3581
|
+
curl_easy_setopt(rbce->curl, CURLOPT_TCP_KEEPALIVE, NUM2LONG(val));
|
3582
|
+
break;
|
3583
|
+
case CURLOPT_TCP_KEEPIDLE:
|
3584
|
+
curl_easy_setopt(rbce->curl, CURLOPT_TCP_KEEPIDLE, NUM2LONG(val));
|
3585
|
+
break;
|
3586
|
+
case CURLOPT_TCP_KEEPINTVL:
|
3587
|
+
curl_easy_setopt(rbce->curl, CURLOPT_TCP_KEEPINTVL, NUM2LONG(val));
|
3588
|
+
break;
|
3589
|
+
#endif
|
3590
|
+
#if HAVE_CURLOPT_HAPROXYPROTOCOL
|
3591
|
+
case CURLOPT_HAPROXYPROTOCOL:
|
3592
|
+
curl_easy_setopt(rbce->curl, HAVE_CURLOPT_HAPROXYPROTOCOL, NUM2LONG(val));
|
3593
|
+
break;
|
3574
3594
|
#endif
|
3575
3595
|
default:
|
3576
3596
|
rb_raise(rb_eTypeError, "Curb unsupported option");
|
data/ext/extconf.rb
CHANGED
@@ -59,6 +59,9 @@ def have_constant(name)
|
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
62
|
+
have_constant "curlopt_tcp_keepalive"
|
63
|
+
have_constant "curlopt_tcp_keepidle"
|
64
|
+
have_constant "curlopt_tcp_keepintvl"
|
62
65
|
have_constant "curlinfo_appconnect_time"
|
63
66
|
have_constant "curlinfo_redirect_time"
|
64
67
|
have_constant "curlinfo_response_code"
|
@@ -153,6 +156,8 @@ have_func("curl_multi_timeout")
|
|
153
156
|
have_func("curl_multi_fdset")
|
154
157
|
have_func("curl_multi_perform")
|
155
158
|
|
159
|
+
have_constant "curlopt_haproxyprotocol"
|
160
|
+
|
156
161
|
# constants
|
157
162
|
have_constant "curlopt_interleavefunction"
|
158
163
|
have_constant "curlopt_interleavedata"
|
data/lib/curb.rb
CHANGED
data/lib/curl.rb
CHANGED
data/lib/curl/easy.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Curl
|
2
3
|
class Easy
|
3
4
|
|
@@ -68,6 +69,11 @@ module Curl
|
|
68
69
|
ret = self.multi.perform
|
69
70
|
self.multi.remove self
|
70
71
|
|
72
|
+
if Curl::Multi.autoclose
|
73
|
+
self.multi.close
|
74
|
+
self.multi = nil
|
75
|
+
end
|
76
|
+
|
71
77
|
if self.last_result != 0 && self.on_failure.nil?
|
72
78
|
error = Curl::Easy.error(self.last_result)
|
73
79
|
raise error.first.new(self.head)
|
data/lib/curl/multi.rb
CHANGED
@@ -0,0 +1,32 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
|
2
|
+
|
3
|
+
|
4
|
+
require 'curb'
|
5
|
+
|
6
|
+
class BugIssue102 < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def test_gc_closewait
|
9
|
+
100.times do
|
10
|
+
responses = {}
|
11
|
+
requests = ["http://www.google.co.uk/", "http://www.ruby-lang.org/"]
|
12
|
+
m = Curl::Multi.new
|
13
|
+
# add a few easy handles
|
14
|
+
requests.each do |url|
|
15
|
+
responses[url] = ""
|
16
|
+
c = Curl::Easy.new(url) do|curl|
|
17
|
+
curl.follow_location = true
|
18
|
+
curl.on_body{|data| responses[url] << data; data.size }
|
19
|
+
curl.on_success {|easy| #puts "success, add more easy handles"
|
20
|
+
}
|
21
|
+
end
|
22
|
+
m.add(c)
|
23
|
+
end
|
24
|
+
|
25
|
+
m.perform do
|
26
|
+
#puts "idling... can do some work here"
|
27
|
+
end
|
28
|
+
GC.start
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
|
2
|
+
|
3
|
+
class TestCurbCurlMaxFileSize < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@easy = Curl::Easy.new
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_maxfilesize
|
9
|
+
@easy.set(Curl::CURLOPT_MAXFILESIZE, 5000000)
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
data/tests/tc_curl_multi.rb
CHANGED
@@ -10,8 +10,9 @@ class TestCurbCurlMulti < Test::Unit::TestCase
|
|
10
10
|
# must connect to an external
|
11
11
|
def test_connection_keepalive
|
12
12
|
# 0123456 default & reserved RubyVM. It will probably include 7 from Dir.glob
|
13
|
+
lsof=`/usr/bin/which lsof`.strip
|
13
14
|
open_fds = lambda do
|
14
|
-
|
15
|
+
`#{lsof} -p #{Process.pid} | egrep "TCP|UDP" | wc -l`.strip.to_i
|
15
16
|
end
|
16
17
|
before_open = open_fds.call
|
17
18
|
assert !Curl::Multi.autoclose
|
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.9.
|
4
|
+
version: 0.9.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ross Bamford
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-
|
12
|
+
date: 2019-03-07 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Curb (probably CUrl-RuBy or something) provides Ruby-language bindings
|
15
15
|
for the libcurl(3), a fully-featured client-side URL transfer library. cURL and
|
@@ -51,6 +51,7 @@ files:
|
|
51
51
|
- tests/bug_curb_easy_post_with_string_no_content_length_header.rb
|
52
52
|
- tests/bug_instance_post_differs_from_class_post.rb
|
53
53
|
- tests/bug_issue102.rb
|
54
|
+
- tests/bug_issue277.rb
|
54
55
|
- tests/bug_multi_segfault.rb
|
55
56
|
- tests/bug_postfields_crash.rb
|
56
57
|
- tests/bug_postfields_crash2.rb
|
@@ -65,6 +66,7 @@ files:
|
|
65
66
|
- tests/tc_curl_easy.rb
|
66
67
|
- tests/tc_curl_easy_resolve.rb
|
67
68
|
- tests/tc_curl_easy_setopt.rb
|
69
|
+
- tests/tc_curl_maxfilesize.rb
|
68
70
|
- tests/tc_curl_multi.rb
|
69
71
|
- tests/tc_curl_postfield.rb
|
70
72
|
- tests/timeout.rb
|
@@ -72,7 +74,7 @@ files:
|
|
72
74
|
- tests/unittests.rb
|
73
75
|
homepage: http://curb.rubyforge.org/
|
74
76
|
licenses:
|
75
|
-
-
|
77
|
+
- MIT
|
76
78
|
metadata: {}
|
77
79
|
post_install_message:
|
78
80
|
rdoc_options:
|
@@ -93,7 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
93
95
|
version: '0'
|
94
96
|
requirements: []
|
95
97
|
rubyforge_project: curb
|
96
|
-
rubygems_version: 2.
|
98
|
+
rubygems_version: 2.5.2
|
97
99
|
signing_key:
|
98
100
|
specification_version: 4
|
99
101
|
summary: Ruby libcurl bindings
|
@@ -105,6 +107,7 @@ test_files:
|
|
105
107
|
- tests/bug_postfields_crash.rb
|
106
108
|
- tests/bug_crash_on_progress.rb
|
107
109
|
- tests/helper.rb
|
110
|
+
- tests/bug_issue277.rb
|
108
111
|
- tests/bug_postfields_crash2.rb
|
109
112
|
- tests/bug_require_last_or_segfault.rb
|
110
113
|
- tests/timeout.rb
|
@@ -120,6 +123,7 @@ test_files:
|
|
120
123
|
- tests/tc_curl_easy.rb
|
121
124
|
- tests/mem_check.rb
|
122
125
|
- tests/tc_curl_postfield.rb
|
126
|
+
- tests/tc_curl_maxfilesize.rb
|
123
127
|
- tests/bugtests.rb
|
124
128
|
- tests/tc_curl_easy_resolve.rb
|
125
129
|
- tests/signals.rb
|