1
+ use curl:: Version ;
1
2
use std:: time:: Duration ;
2
3
3
4
macro_rules! t {
@@ -23,24 +24,35 @@ fn handle() -> Easy {
23
24
e
24
25
}
25
26
26
- #[ cfg( feature = "static-curl" ) ]
27
+ fn multipart_boundary_size ( ) -> usize {
28
+ // Versions before 8.4.0 used a smaller multipart mime boundary, so the
29
+ // exact content-length will differ between versions.
30
+ if Version :: get ( ) . version_num ( ) >= 0x80400 {
31
+ 148
32
+ } else {
33
+ 136
34
+ }
35
+ }
36
+
27
37
#[ test]
28
38
fn custom ( ) {
39
+ multipart_boundary_size ( ) ;
29
40
let s = Server :: new ( ) ;
30
- s. receive (
41
+ s. receive ( & format ! (
31
42
"\
32
43
POST / HTTP/1.1\r \n \
33
44
Host: 127.0.0.1:$PORT\r \n \
34
45
Accept: */*\r \n \
35
- Content-Length: 154 \r \n \
46
+ Content-Length: {} \r \n \
36
47
Content-Type: multipart/form-data; boundary=--[..]\r \n \
37
48
\r \n \
38
49
--[..]\r \n \
39
50
Content-Disposition: form-data; name=\" foo\" \r \n \
40
51
\r \n \
41
52
1234\r \n \
42
53
--[..]\r \n ",
43
- ) ;
54
+ multipart_boundary_size( ) + 6
55
+ ) ) ;
44
56
s. send ( "HTTP/1.1 200 OK\r \n \r \n " ) ;
45
57
46
58
let mut handle = handle ( ) ;
@@ -55,12 +67,12 @@ fn custom() {
55
67
#[ test]
56
68
fn buffer ( ) {
57
69
let s = Server :: new ( ) ;
58
- s. receive (
70
+ s. receive ( & format ! (
59
71
"\
60
72
POST / HTTP/1.1\r \n \
61
73
Host: 127.0.0.1:$PORT\r \n \
62
74
Accept: */*\r \n \
63
- Content-Length: 193 \r \n \
75
+ Content-Length: {} \r \n \
64
76
Content-Type: multipart/form-data; boundary=--[..]\r \n \
65
77
\r \n \
66
78
--[..]\r \n \
@@ -69,7 +81,8 @@ fn buffer() {
69
81
\r \n \
70
82
1234\r \n \
71
83
--[..]\r \n ",
72
- ) ;
84
+ multipart_boundary_size( ) + 45
85
+ ) ) ;
73
86
s. send ( "HTTP/1.1 200 OK\r \n \r \n " ) ;
74
87
75
88
let mut handle = handle ( ) ;
@@ -105,7 +118,7 @@ fn file() {
105
118
{}\
106
119
\r \n \
107
120
--[..]\r \n ",
108
- 211 + formdata. len( ) ,
121
+ multipart_boundary_size ( ) + 63 + formdata. len( ) ,
109
122
formdata
110
123
)
111
124
. as_str ( ) ,
0 commit comments